Ticket #4874 (closed defect: duplicate)
NT 4 CX8 bug workaround and VirtualBox
|Reported by:||yuhong||Owned by:|
There has been several bug reports like bug #774 relating to VIA CPUs not been able to run XP where the NT 4 CX8 workaround appears to have been enabled on the host. (the host /proc/cpuinfo has no cx8 listed in flags)
Background: NT 4 pre-SP4 had a bug where it would not boot if CPU vendor ID returned by CPUID EAX=0 was not "GenuineIntel", "AuthenticAMD", or "CyrixInstead" and the CX8 feature bit was set. As a result of this bug, all other CPU vendors had to provide a way to clear the CX8 feature bit, usually via a MSR, which was usually exposed as a BIOS option.
Unfortunately this workaround came to bit MS later when it decided to require CX8 for XP, otherwise XP won't boot and the loader will throw up an error message.
What MS had to do was to add code to XP to detect non-Intel/AMD/Cyrix CPUs with CX8 feature bit cleared and add CPU vendor specific code to again set the CX8 feature bit.
Geoff Chappell disassembled the Windows CPUID code and wrote this about this issue: http://www.geoffchappell.com/viewer.htm?doc=studies/windows/km/cpu/cx8.htm
What was probably happening is that the zero CX8 bit of the host CPU was being passed through by VirtualBox to the VM, but XP's manipulation of MSRs in response to the zero CX8 bit to set it back to one failed because XP was running in a VM, where MSRs were being virtualized. Thus, XP had to throw up an error message and fail the boot.
For users who are encountering this problem: Look in the host system's BIOS for a BIOS option that has something like the word "CX8" or "NT4" in it. Try changing that option.