When I try to install Windows 8 on my VirtualBox in OpenSuSE, it stops the booting and hows error message:
Your PC needs to restart. Please hold down the power button. Error code: 0x000000C4 Parameters: 0×0000000000000091 0x000000000000000F 0xFFFFF801E5962A80 0×0000000000000000
It is because of VirtualBox default disable to simulate the CPU instruction CMPXCHG16B which is necessary to Windows 8 and Windows Server 2012 R2.
To solve this issue, first get the name list list of your VirtualBox VM, my windows 8 VM is “Windows 8” :
vboxmanage list vms
Then use the use the following command in Linux to enable the feature in Windows 8 VM by replacing [vmname] with “Windows 8” (include the quotes):
vboxmanage setextradata [vmname] VBoxInternal/CPUM/CMPXCHG16B 1
The syntax for setextradata is: setextradata global|<uuid|vmname> <key> [<value>] (no value deletes key). Set the key to 1 means to enable it.
The wiki explain CMPXCHG16B as below:
Early AMD64 processors lacked the CMPXCHG16B instruction, which is an extension of the CMPXCHG8Binstruction present on most post-80486 processors. Similar to CMPXCHG8B, CMPXCHG16B allows for atomic operations on octal words. This is useful for parallel algorithms that use compare and swap on data larger than the size of a pointer, common in lock-free and wait-free algorithms. Without CMPXCHG16B one must use workarounds, such as a critical section or alternative lock-free approaches. This also prevents 64-bitWindows from having a user-mode address space larger than 8 terabytes. The 64-bit version of Windows 8.1 requires this feature.