VirtualBox

Changeset 91323 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Sep 22, 2021 10:04:56 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
146984
Message:

VMM: bugref:10106 Fixed IA32_FEATURE_CONTROL MSR reported to the guest.

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

Legend:

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

    r91266 r91323  
    236236}
    237237
     238/**
     239 * Get IA32_FEATURE_CONTROL value for IEM, NEM and cpumMsrRd_Ia32FeatureControl.
     240 *
     241 * @returns IA32_FEATURE_CONTROL value.
     242 * @param   pVCpu           The cross context per CPU structure.
     243 */
     244VMM_INT_DECL(uint64_t) CPUMGetGuestIa32FeatCtrl(PCVMCPUCC pVCpu)
     245{
     246    uint64_t uFeatCtrlMsr = MSR_IA32_FEATURE_CONTROL_LOCK;
     247    if (pVCpu->CTX_SUFF(pVM)->cpum.s.GuestFeatures.fVmx)
     248        uFeatCtrlMsr |= MSR_IA32_FEATURE_CONTROL_VMXON;
     249    return uFeatCtrlMsr;
     250}
     251
    238252
    239253/** @callback_method_impl{FNCPUMRDMSR} */
     
    241255{
    242256    RT_NOREF_PV(idMsr); RT_NOREF_PV(pRange);
    243     *puValue = pVCpu->cpum.s.Guest.hwvirt.vmx.Msrs.u64FeatCtrl;
     257    *puValue = CPUMGetGuestIa32FeatCtrl(pVCpu);
    244258    return VINF_SUCCESS;
    245259}
  • trunk/src/VBox/VMM/VMMAll/HMAll.cpp

    r91271 r91323  
    821821    AssertReturnVoid(pHwvirtMsrs);
    822822    AssertReturnVoid(pVmxMsrs);
    823     pVmxMsrs->u64FeatCtrl      = pHwvirtMsrs->u.vmx.u64FeatCtrl;
    824823    pVmxMsrs->u64Basic         = pHwvirtMsrs->u.vmx.u64Basic;
    825824    pVmxMsrs->PinCtls.u        = pHwvirtMsrs->u.vmx.PinCtls.u;
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r91305 r91323  
    84958495
    84968496        /* Feature control MSR's LOCK and VMXON bits. */
    8497         uint64_t const uMsrFeatCtl = pVCpu->cpum.GstCtx.hwvirt.vmx.Msrs.u64FeatCtrl;
     8497        uint64_t const uMsrFeatCtl = CPUMGetGuestIa32FeatCtrl(pVCpu);
    84988498        if ((uMsrFeatCtl & (MSR_IA32_FEATURE_CONTROL_LOCK | MSR_IA32_FEATURE_CONTROL_VMXON))
    84998499                        == (MSR_IA32_FEATURE_CONTROL_LOCK | MSR_IA32_FEATURE_CONTROL_VMXON))
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