Opened 6 years ago
#18510 new defect
#GP when Windows guest driver tries to write X86_CR4_PCIDE in non-HyperV environment
Reported by: | jiajun | Owned by: | |
---|---|---|---|
Component: | host support | Version: | VirtualBox 6.0.4 |
Keywords: | Cc: | ||
Guest type: | Linux | Host type: | Windows |
Description
Change 70917 [1] introduced code to check whether CR4 can be modified. The code might work on Hyper-V, but not on other VMMs, as the code may set the X86_CR4_PCIDE bit in CR4 while CR3[11:0] is not zero, which generates a #GP according to Intel SDM:
"MOV to CR4 causes a general-protection exception (#GP) if it would change CR4.PCIDE from 0 to 1 and either IA32_EFER.LMA = 0 or CR3[11:0] ≠ 000H"
This issue can be triggered by installing a VM on VirtualBox 6.0.4 installed on a Windows _virtual_ machine that runs on top of other VMM platforms, such as VMware ESX.
[1] https://www.virtualbox.org/changeset/70917/vbox/trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp