VirtualBox

Ignore:
Timestamp:
Jan 23, 2017 3:46:16 PM (8 years ago)
Author:
vboxsync
Message:

VMM: KVM workaround: don't read MSR_IA32_SMM_MONITOR_CTL if dual-monitor treatment of system-management interrupts and system-management code is not supported

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMR0.cpp

    r65326 r65405  
    389389             */
    390390            g_HmR0.vmx.u64HostCr4           = ASMGetCR4();
    391             g_HmR0.vmx.u64HostSmmMonitorCtl = ASMRdMsr(MSR_IA32_SMM_MONITOR_CTL);
    392391            g_HmR0.vmx.u64HostEfer          = ASMRdMsr(MSR_K6_EFER);
    393392            g_HmR0.vmx.Msrs.u64BasicInfo    = ASMRdMsr(MSR_IA32_VMX_BASIC_INFO);
     393            /* KVM workaround: Intel SDM section 34.15.5 describes that MSR_IA32_SMM_MONITOR_CTL
     394             * depends on bit 49 MSR_IA32_VMX_BASIC_INFO while table 35-2 says that this MSR
     395             * is available if either VMX or SMX is supported. */
     396            if (MSR_IA32_VMX_BASIC_INFO_VMCS_DUAL_MON(g_HmR0.vmx.Msrs.u64BasicInfo))
     397                g_HmR0.vmx.u64HostSmmMonitorCtl = ASMRdMsr(MSR_IA32_SMM_MONITOR_CTL);
    394398            g_HmR0.vmx.Msrs.VmxPinCtls.u    = ASMRdMsr(MSR_IA32_VMX_PINBASED_CTLS);
    395399            g_HmR0.vmx.Msrs.VmxProcCtls.u   = ASMRdMsr(MSR_IA32_VMX_PROCBASED_CTLS);
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