VirtualBox

Changeset 77406 in vbox


Ignore:
Timestamp:
Feb 21, 2019 6:45:33 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
128960
Message:

VMM/IEM: Nested VMX: bugref:9180 Fix typos, MSR_K6_EFER_BIT_[LMA|LME] should have been MSR_K6_EFER_[LMA|LME]. Also include the 2nd EFER LMA, LME checks only when "load IA32_EFER" VM-entry control is set.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r77358 r77406  
    51895189
    51905190    /* EFER MSR. */
    5191     uint64_t const uValidEferMask = CPUMGetGuestEferMsrValidMask(pVCpu->CTX_SUFF(pVM));
    5192     if (   (pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_LOAD_EFER_MSR)
    5193         && (pVmcs->u64GuestEferMsr.u & ~uValidEferMask))
    5194         IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsrRsvd);
    5195 
    5196     bool const fGstLma = RT_BOOL(pVmcs->u64HostEferMsr.u & MSR_K6_EFER_BIT_LMA);
    5197     bool const fGstLme = RT_BOOL(pVmcs->u64HostEferMsr.u & MSR_K6_EFER_BIT_LME);
    5198     if (   fGstInLongMode == fGstLma
    5199         && (   !(pVmcs->u64GuestCr0.u & X86_CR0_PG)
    5200             || fGstLma == fGstLme))
    5201     { /* likely */ }
    5202     else
    5203         IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsr);
     5191    if (pVmcs->u32EntryCtls & VMX_ENTRY_CTLS_LOAD_EFER_MSR)
     5192    {
     5193        uint64_t const uValidEferMask = CPUMGetGuestEferMsrValidMask(pVCpu->CTX_SUFF(pVM));
     5194        if (!(pVmcs->u64GuestEferMsr.u & ~uValidEferMask))
     5195        { /* likely */ }
     5196        else
     5197            IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsrRsvd);
     5198
     5199        bool const fGstLma = RT_BOOL(pVmcs->u64GuestEferMsr.u & MSR_K6_EFER_LMA);
     5200        bool const fGstLme = RT_BOOL(pVmcs->u64GuestEferMsr.u & MSR_K6_EFER_LME);
     5201        if (   fGstLma == fGstInLongMode
     5202            && (   !(pVmcs->u64GuestCr0.u & X86_CR0_PG)
     5203                || fGstLma == fGstLme))
     5204        { /* likely */ }
     5205        else
     5206            IEM_VMX_VMENTRY_FAILED_RET(pVCpu, pszInstr, pszFailure, kVmxVDiag_Vmentry_GuestEferMsr);
     5207    }
    52045208
    52055209    /* We don't support IA32_BNDCFGS MSR yet. */
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