VirtualBox

Changeset 74592 in vbox for trunk


Ignore:
Timestamp:
Oct 3, 2018 5:29:44 AM (6 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 VM-exit bits; LLDT, SLDT, LTR, STR intercepts.

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

Legend:

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

    r74591 r74592  
    47964796        return iemRaiseGeneralProtectionFault0(pVCpu);
    47974797    }
     4798    /* Nested-guest VMX intercept. */
     4799    if (IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_DESC_TABLE_EXIT))
     4800    {
     4801        Log(("lldt: Guest intercept -> VM-exit\n"));
     4802        IEM_VMX_VMEXIT_INSTR_NEEDS_INFO_RET(pVCpu, VMX_EXIT_LDTR_TR_ACCESS, VMXINSTRID_LLDT, cbInstr);
     4803    }
    47984804    if (uNewLdt & X86_SEL_LDT)
    47994805    {
     
    49154921IEM_CIMPL_DEF_2(iemCImpl_sldt_reg, uint8_t, iGReg, uint8_t, enmEffOpSize)
    49164922{
     4923    if (IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_DESC_TABLE_EXIT))
     4924    {
     4925        Log(("sldt: Guest intercept -> VM-exit\n"));
     4926        IEM_VMX_VMEXIT_INSTR_NEEDS_INFO_RET(pVCpu, VMX_EXIT_LDTR_TR_ACCESS, VMXINSTRID_SLDT, cbInstr);
     4927    }
     4928
    49174929    IEM_SVM_CHECK_INSTR_INTERCEPT(pVCpu, SVM_CTRL_INTERCEPT_LDTR_READS, SVM_EXIT_LDTR_READ, 0, 0);
    49184930
     
    49684980        Log(("ltr %04x - CPL is %d -> #GP(0)\n", uNewTr, pVCpu->iem.s.uCpl));
    49694981        return iemRaiseGeneralProtectionFault0(pVCpu);
     4982    }
     4983    if (IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_DESC_TABLE_EXIT))
     4984    {
     4985        Log(("ltr: Guest intercept -> VM-exit\n"));
     4986        IEM_VMX_VMEXIT_INSTR_NEEDS_INFO_RET(pVCpu, VMX_EXIT_LDTR_TR_ACCESS, VMXINSTRID_LTR, cbInstr);
    49704987    }
    49714988    if (uNewTr & X86_SEL_LDT)
     
    50805097IEM_CIMPL_DEF_2(iemCImpl_str_reg, uint8_t, iGReg, uint8_t, enmEffOpSize)
    50815098{
     5099    if (IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_DESC_TABLE_EXIT))
     5100    {
     5101        Log(("str_reg: Guest intercept -> VM-exit\n"));
     5102        IEM_VMX_VMEXIT_INSTR_NEEDS_INFO_RET(pVCpu, VMX_EXIT_LDTR_TR_ACCESS, VMXINSTRID_STR, cbInstr);
     5103    }
     5104
    50825105    IEM_SVM_CHECK_INSTR_INTERCEPT(pVCpu, SVM_CTRL_INTERCEPT_TR_READS, SVM_EXIT_TR_READ, 0, 0);
    50835106
     
    51045127IEM_CIMPL_DEF_2(iemCImpl_str_mem, uint8_t, iEffSeg, RTGCPTR, GCPtrEffDst)
    51055128{
     5129    if (IEM_VMX_IS_PROCCTLS2_SET(pVCpu, VMX_PROC_CTLS2_DESC_TABLE_EXIT))
     5130    {
     5131        Log(("str_mem: Guest intercept -> VM-exit\n"));
     5132        IEM_VMX_VMEXIT_INSTR_NEEDS_INFO_RET(pVCpu, VMX_EXIT_LDTR_TR_ACCESS, VMXINSTRID_STR, cbInstr);
     5133    }
     5134
    51065135    IEM_SVM_CHECK_INSTR_INTERCEPT(pVCpu, SVM_CTRL_INTERCEPT_TR_READS, SVM_EXIT_TR_READ, 0, 0);
    51075136
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r74591 r74592  
    4343 *  VMX_EXIT_APIC_ACCESS
    4444 *  VMX_EXIT_VIRTUALIZED_EOI
    45  *  VMX_EXIT_LDTR_TR_ACCESS
    4645 *  VMX_EXIT_EPT_VIOLATION
    4746 *  VMX_EXIT_EPT_MISCONFIG
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