VirtualBox

Changeset 80660 in vbox


Ignore:
Timestamp:
Sep 9, 2019 7:47:17 AM (5 years ago)
Author:
vboxsync
Message:

VMM/CPUM: Nested VMX: bugref:9180 Ensure MSR_IA32_BASIC bit 48 (the VMX physical address width bit) is set/cleared properly to match whether the CPU is capable of 64-bit or not (also is a requirement for kvm-intel module to load in the guest).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp

    r80333 r80660  
    47404740            pVM->cpum.s.GuestFeatures.fLongMode = 1;
    47414741            pVM->cpum.s.GuestFeatures.cVmxMaxPhysAddrWidth = pVM->cpum.s.GuestFeatures.cMaxPhysAddrWidth;
     4742            if (pVM->cpum.s.GuestFeatures.fVmx)
     4743                for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)
     4744                {
     4745                    PVMCPU pVCpu = pVM->apCpusR3[idCpu];
     4746                    pVCpu->cpum.s.Guest.hwvirt.vmx.Msrs.u64Basic &= ~VMX_BASIC_PHYSADDR_WIDTH_32BIT;
     4747                }
    47424748            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled LONG MODE\n"));
    47434749            break;
     
    50605066            pVM->cpum.s.GuestFeatures.fLongMode = 0;
    50615067            pVM->cpum.s.GuestFeatures.cVmxMaxPhysAddrWidth = 32;
     5068            if (pVM->cpum.s.GuestFeatures.fVmx)
     5069                for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)
     5070                {
     5071                    PVMCPU pVCpu = pVM->apCpusR3[idCpu];
     5072                    pVCpu->cpum.s.Guest.hwvirt.vmx.Msrs.u64Basic |= VMX_BASIC_PHYSADDR_WIDTH_32BIT;
     5073                }
    50625074            break;
    50635075
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette