VirtualBox

Changeset 46378 in vbox


Ignore:
Timestamp:
Jun 4, 2013 12:11:23 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
86197
Message:

VMM/HM: Recognize more VT-x misc. MSR features as per the spec.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_vmx.h

    r46267 r46378  
    781781/** Relationship between the preemption timer and tsc; count down every time bit x of the tsc changes. */
    782782#define MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(a)                    ((a) & 0x1f)
     783/** Whether VM-exit stores EFER.LMA into the "IA32e mode guest" field. */
     784#define MSR_IA32_VMX_MISC_STORE_EFERLMA_VMEXIT(a)               (((a) >> 5) & 1)
    783785/** Activity states supported by the implementation. */
    784786#define MSR_IA32_VMX_MISC_ACTIVITY_STATES(a)                    (((a) >> 6) & 0x7)
     
    787789/** Maximum nr of MSRs in the VMCS. (N+1)*512. */
    788790#define MSR_IA32_VMX_MISC_MAX_MSR(a)                            (((((a) >> 25) & 0x7) + 1) * 512)
     791/** Whether RDMSR can be used to read IA32_SMBASE_MSR in SMM. */
     792#define MSR_IA32_VMX_MISC_RDMSR_SMBASE_MSR_SMM(a)               (((a) >> 15) & 1)
     793/** Whether bit 2 of IA32_SMM_MONITOR_CTL can be set to 1. */
     794#define MSR_IA32_VMX_MISC_SMM_MONITOR_CTL_B2(a)                 (((a) >> 28) & 1)
     795/** Whether VMWRITE can be used to write VM-exit information fields. */
     796#define MSR_IA32_VMX_MISC_VMWRITE_VMEXIT_INFO(a)                (((a) >> 29) & 1)
    789797/** MSEG revision identifier used by the processor. */
    790798#define MSR_IA32_VMX_MISC_MSEG_ID(a)                            ((a) >> 32)
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r46304 r46378  
    10801080    LogRel(("HM: MSR_IA32_VMX_MISC             = %RX64\n", pVM->hm.s.vmx.msr.vmx_misc));
    10811081    if (MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hm.s.vmx.msr.vmx_misc) == pVM->hm.s.vmx.cPreemptTimerShift)
    1082         LogRel(("HM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT = %x\n", MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hm.s.vmx.msr.vmx_misc)));
     1082    {
     1083        LogRel(("HM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT        = %x\n",
     1084                MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hm.s.vmx.msr.vmx_misc)));
     1085    }
    10831086    else
    1084         LogRel(("HM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT = %x - erratum detected, using %x instead\n",
     1087    {
     1088        LogRel(("HM:    MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT        = %x - erratum detected, using %x instead\n",
    10851089                MSR_IA32_VMX_MISC_PREEMPT_TSC_BIT(pVM->hm.s.vmx.msr.vmx_misc), pVM->hm.s.vmx.cPreemptTimerShift));
    1086 
    1087     LogRel(("HM:    MSR_IA32_VMX_MISC_ACTIVITY_STATES = %x\n", MSR_IA32_VMX_MISC_ACTIVITY_STATES(pVM->hm.s.vmx.msr.vmx_misc)));
    1088     LogRel(("HM:    MSR_IA32_VMX_MISC_CR3_TARGET      = %x\n", MSR_IA32_VMX_MISC_CR3_TARGET(pVM->hm.s.vmx.msr.vmx_misc)));
    1089     LogRel(("HM:    MSR_IA32_VMX_MISC_MAX_MSR         = %x\n", MSR_IA32_VMX_MISC_MAX_MSR(pVM->hm.s.vmx.msr.vmx_misc)));
    1090     LogRel(("HM:    MSR_IA32_VMX_MISC_MSEG_ID         = %x\n", MSR_IA32_VMX_MISC_MSEG_ID(pVM->hm.s.vmx.msr.vmx_misc)));
    1091 
    1092     LogRel(("HM:    MSR_IA32_VMX_CR0_FIXED0           = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr0_fixed0));
    1093     LogRel(("HM:    MSR_IA32_VMX_CR0_FIXED1           = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr0_fixed1));
    1094     LogRel(("HM:    MSR_IA32_VMX_CR4_FIXED0           = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr4_fixed0));
    1095     LogRel(("HM:    MSR_IA32_VMX_CR4_FIXED1           = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr4_fixed1));
    1096     LogRel(("HM:    MSR_IA32_VMX_VMCS_ENUM            = %RX64\n", pVM->hm.s.vmx.msr.vmx_vmcs_enum));
     1090    }
     1091
     1092    LogRel(("HM:    MSR_IA32_VMX_MISC_STORE_EFERLMA_VMEXIT   = %x\n", MSR_IA32_VMX_MISC_STORE_EFERLMA_VMEXIT(pVM->hm.s.vmx.msr.vmx_misc)));
     1093    LogRel(("HM:    MSR_IA32_VMX_MISC_ACTIVITY_STATES        = %x\n", MSR_IA32_VMX_MISC_ACTIVITY_STATES(pVM->hm.s.vmx.msr.vmx_misc)));
     1094    LogRel(("HM:    MSR_IA32_VMX_MISC_CR3_TARGET             = %x\n", MSR_IA32_VMX_MISC_CR3_TARGET(pVM->hm.s.vmx.msr.vmx_misc)));
     1095    LogRel(("HM:    MSR_IA32_VMX_MISC_MAX_MSR                = %x\n", MSR_IA32_VMX_MISC_MAX_MSR(pVM->hm.s.vmx.msr.vmx_misc)));
     1096    LogRel(("HM:    MSR_IA32_VMX_MISC_RDMSR_SMBASE_MSR_SMM   = %x\n", MSR_IA32_VMX_MISC_RDMSR_SMBASE_MSR_SMM(pVM->hm.s.vmx.msr.vmx_misc)));
     1097    LogRel(("HM:    MSR_IA32_VMX_MISC_SMM_MONITOR_CTL_B2     = %x\n", MSR_IA32_VMX_MISC_SMM_MONITOR_CTL_B2(pVM->hm.s.vmx.msr.vmx_misc)));
     1098    LogRel(("HM:    MSR_IA32_VMX_MISC_VMWRITE_VMEXIT_INFO    = %x\n", MSR_IA32_VMX_MISC_VMWRITE_VMEXIT_INFO(pVM->hm.s.vmx.msr.vmx_misc)));
     1099    LogRel(("HM:    MSR_IA32_VMX_MISC_MSEG_ID                = %x\n", MSR_IA32_VMX_MISC_MSEG_ID(pVM->hm.s.vmx.msr.vmx_misc)));
     1100
     1101    LogRel(("HM: MSR_IA32_VMX_CR0_FIXED0       = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr0_fixed0));
     1102    LogRel(("HM: MSR_IA32_VMX_CR0_FIXED1       = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr0_fixed1));
     1103    LogRel(("HM: MSR_IA32_VMX_CR4_FIXED0       = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr4_fixed0));
     1104    LogRel(("HM: MSR_IA32_VMX_CR4_FIXED1       = %RX64\n", pVM->hm.s.vmx.msr.vmx_cr4_fixed1));
     1105    LogRel(("HM: MSR_IA32_VMX_VMCS_ENUM        = %RX64\n", pVM->hm.s.vmx.msr.vmx_vmcs_enum));
    10971106
    10981107    LogRel(("HM: APIC-access page physaddr     = %RHp\n", pVM->hm.s.vmx.HCPhysApicAccess));
     
    12451254    {
    12461255        LogRel(("HM: Nested paging enabled!\n"));
    1247             LogRel(("HM:    EPT root page              = %RHp\n", PGMGetHyperCR3(VMMGetCpu(pVM))));
     1256        LogRel(("HM:    EPT root page physaddr     = %RHp\n", PGMGetHyperCR3(VMMGetCpu(pVM))));
    12481257        if (pVM->hm.s.vmx.enmFlushEpt == VMX_FLUSH_EPT_SINGLE_CONTEXT)
    12491258            LogRel(("HM:    EPT flush type             = VMX_FLUSH_EPT_SINGLE_CONTEXT\n"));
Note: See TracChangeset for help on using the changeset viewer.

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