VirtualBox

Changeset 59020 in vbox for trunk


Ignore:
Timestamp:
Dec 7, 2015 12:26:47 PM (9 years ago)
Author:
vboxsync
Message:

VMM/HM: Log IA32_SMM_MONITOR_CTL for VT-x hosts, useful diagnostic info.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

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

    r58913 r59020  
    119119        /** Host EFER value (set by ring-0 VMX init) */
    120120        uint64_t                    u64HostEfer;
     121
     122        /** Host SMM monitor control (used for logging/diagnostics) */
     123        uint64_t                    u64HostSmmMonitorCtl;
    121124
    122125        /** VMX MSR values */
     
    383386             * Read all relevant registers and MSRs.
    384387             */
    385             g_HmR0.vmx.u64HostCr4          = ASMGetCR4();
    386             g_HmR0.vmx.u64HostEfer         = ASMRdMsr(MSR_K6_EFER);
    387             g_HmR0.vmx.Msrs.u64BasicInfo   = ASMRdMsr(MSR_IA32_VMX_BASIC_INFO);
    388             g_HmR0.vmx.Msrs.VmxPinCtls.u   = ASMRdMsr(MSR_IA32_VMX_PINBASED_CTLS);
    389             g_HmR0.vmx.Msrs.VmxProcCtls.u  = ASMRdMsr(MSR_IA32_VMX_PROCBASED_CTLS);
    390             g_HmR0.vmx.Msrs.VmxExit.u      = ASMRdMsr(MSR_IA32_VMX_EXIT_CTLS);
    391             g_HmR0.vmx.Msrs.VmxEntry.u     = ASMRdMsr(MSR_IA32_VMX_ENTRY_CTLS);
    392             g_HmR0.vmx.Msrs.u64Misc        = ASMRdMsr(MSR_IA32_VMX_MISC);
    393             g_HmR0.vmx.Msrs.u64Cr0Fixed0   = ASMRdMsr(MSR_IA32_VMX_CR0_FIXED0);
    394             g_HmR0.vmx.Msrs.u64Cr0Fixed1   = ASMRdMsr(MSR_IA32_VMX_CR0_FIXED1);
    395             g_HmR0.vmx.Msrs.u64Cr4Fixed0   = ASMRdMsr(MSR_IA32_VMX_CR4_FIXED0);
    396             g_HmR0.vmx.Msrs.u64Cr4Fixed1   = ASMRdMsr(MSR_IA32_VMX_CR4_FIXED1);
    397             g_HmR0.vmx.Msrs.u64VmcsEnum    = ASMRdMsr(MSR_IA32_VMX_VMCS_ENUM);
     388            g_HmR0.vmx.u64HostCr4           = ASMGetCR4();
     389            g_HmR0.vmx.u64HostSmmMonitorCtl = ASMRdMsr(MSR_IA32_SMM_MONITOR_CTL);
     390            g_HmR0.vmx.u64HostEfer          = ASMRdMsr(MSR_K6_EFER);
     391            g_HmR0.vmx.Msrs.u64BasicInfo    = ASMRdMsr(MSR_IA32_VMX_BASIC_INFO);
     392            g_HmR0.vmx.Msrs.VmxPinCtls.u    = ASMRdMsr(MSR_IA32_VMX_PINBASED_CTLS);
     393            g_HmR0.vmx.Msrs.VmxProcCtls.u   = ASMRdMsr(MSR_IA32_VMX_PROCBASED_CTLS);
     394            g_HmR0.vmx.Msrs.VmxExit.u       = ASMRdMsr(MSR_IA32_VMX_EXIT_CTLS);
     395            g_HmR0.vmx.Msrs.VmxEntry.u      = ASMRdMsr(MSR_IA32_VMX_ENTRY_CTLS);
     396            g_HmR0.vmx.Msrs.u64Misc         = ASMRdMsr(MSR_IA32_VMX_MISC);
     397            g_HmR0.vmx.Msrs.u64Cr0Fixed0    = ASMRdMsr(MSR_IA32_VMX_CR0_FIXED0);
     398            g_HmR0.vmx.Msrs.u64Cr0Fixed1    = ASMRdMsr(MSR_IA32_VMX_CR0_FIXED1);
     399            g_HmR0.vmx.Msrs.u64Cr4Fixed0    = ASMRdMsr(MSR_IA32_VMX_CR4_FIXED0);
     400            g_HmR0.vmx.Msrs.u64Cr4Fixed1    = ASMRdMsr(MSR_IA32_VMX_CR4_FIXED1);
     401            g_HmR0.vmx.Msrs.u64VmcsEnum     = ASMRdMsr(MSR_IA32_VMX_VMCS_ENUM);
    398402            /* VPID 16 bits ASID. */
    399             g_HmR0.uMaxAsid                = 0x10000; /* exclusive */
     403            g_HmR0.uMaxAsid                 = 0x10000; /* exclusive */
    400404
    401405            if (g_HmR0.vmx.Msrs.VmxProcCtls.n.allowed1 & VMX_VMCS_CTRL_PROC_EXEC_USE_SECONDARY_EXEC_CTRL)
     
    12141218    pVM->hm.s.vmx.u64HostCr4            = g_HmR0.vmx.u64HostCr4;
    12151219    pVM->hm.s.vmx.u64HostEfer           = g_HmR0.vmx.u64HostEfer;
     1220    pVM->hm.s.vmx.u64HostSmmMonitorCtl  = g_HmR0.vmx.u64HostSmmMonitorCtl;
    12161221    pVM->hm.s.vmx.Msrs                  = g_HmR0.vmx.Msrs;
    12171222    pVM->hm.s.svm.u64MsrHwcr            = g_HmR0.svm.u64MsrHwcr;
     
    12891294    /* Make sure we don't touch HM after we've disabled HM in preparation of a suspend. */
    12901295    AssertReturn(!ASMAtomicReadBool(&g_HmR0.fSuspended), VERR_HM_SUSPEND_PENDING);
     1296
     1297    LogRel(("pVM=%p EMT=%p\n", pVM, RTThreadNativeSelf()));
    12911298
    12921299    /* On first entry we'll sync everything. */
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r58938 r59020  
    11241124    LogRel(("HM: Host CR4                        = %#RX64\n", pVM->hm.s.vmx.u64HostCr4));
    11251125    LogRel(("HM: Host EFER                       = %#RX64\n", pVM->hm.s.vmx.u64HostEfer));
     1126    LogRel(("HM: MSR_IA32_SMM_MONITOR_CTL        = %#RX64\n", pVM->hm.s.vmx.u64HostSmmMonitorCtl));
    11261127    LogRel(("HM: MSR_IA32_FEATURE_CONTROL        = %#RX64\n", pVM->hm.s.vmx.Msrs.u64FeatureCtrl));
    11271128    if (!(pVM->hm.s.vmx.Msrs.u64FeatureCtrl & MSR_IA32_FEATURE_CONTROL_LOCK))
  • trunk/src/VBox/VMM/include/HMInternal.h

    r59003 r59020  
    449449        /** Host CR4 value (set by ring-0 VMX init) */
    450450        uint64_t                    u64HostCr4;
    451 
     451        /** Host SMM monitor control (set by ring-0 VMX init) */
     452        uint64_t                    u64HostSmmMonitorCtl;
    452453        /** Host EFER value (set by ring-0 VMX init) */
    453454        uint64_t                    u64HostEfer;
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