VirtualBox

Changeset 74649 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Oct 7, 2018 7:05:18 AM (6 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 VM-exit bits; Added reading VTPR for RDMSR.

File:
1 edited

Legend:

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

    r74648 r74649  
    64866486        if (iemVmxIsRdmsrWrmsrInterceptSet(pVCpu, VMX_EXIT_RDMSR, pVCpu->cpum.GstCtx.ecx))
    64876487            IEM_VMX_VMEXIT_INSTR_RET(pVCpu, VMX_EXIT_RDMSR, cbInstr);
     6488
     6489        /** @todo NSTVMX: Handle other x2APIC MSRs in VMX non-root mode. Perhaps having a
     6490         *        dedicated virtual-APIC device might be better... */
     6491        if (   pVCpu->cpum.GstCtx.ecx == MSR_IA32_X2APIC_TPR
     6492            && IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_VIRT_X2APIC_MODE))
     6493        {
     6494            uint32_t const uVTpr = iemVmxVirtApicReadRaw32(pVCpu, XAPIC_OFF_TPR);
     6495            pVCpu->cpum.GstCtx.rax = uVTpr;
     6496            pVCpu->cpum.GstCtx.rdx = 0;
     6497            iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     6498            return VINF_SUCCESS;
     6499        }
    64886500    }
    64896501#endif
     
    65826594                        && !(uValue.s.Lo & UINT32_C(0xffffff00)))
    65836595                    {
    6584                         uint32_t const uVTpr = (uValue.s.Lo & 0xf) << 4;
     6596                        uint32_t const uVTpr = uValue.s.Lo;
    65856597                        iemVmxVirtApicWriteRaw32(pVCpu, uVTpr, XAPIC_OFF_TPR);
    65866598                        VBOXSTRICTRC rcStrict = iemVmxVmexitTprVirtualization(pVCpu, cbInstr);
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