VirtualBox

Changeset 75201 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Oct 31, 2018 9:05:52 AM (6 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 VM-exit bits; preemption timer interfaces. Using them is todo.

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

Legend:

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

    r75150 r75201  
    979979                                              uint8_t cbInstr);
    980980IEM_STATIC VBOXSTRICTRC     iemVmxVmexitTripleFault(PVMCPU pVCpu);
     981IEM_STATIC VBOXSTRICTRC     iemVmxVmexitPreemptTimer(PVMCPU pVCpu);
    981982IEM_STATIC VBOXSTRICTRC     iemVmxVmexitExtInt(PVMCPU pVCpu, uint8_t uVector, bool fIntPending);
    982983IEM_STATIC VBOXSTRICTRC     iemVmxVmexitStartupIpi(PVMCPU pVCpu, uint8_t uVector);
     
    1564415645
    1564515646/**
     15647 * Interface for HM and EM to emulate VM-exit due to expiry of the preemption timer.
     15648 *
     15649 * @returns Strict VBox status code.
     15650 * @param   pVCpu           The cross context virtual CPU structure of the calling EMT.
     15651 * @thread  EMT(pVCpu)
     15652 */
     15653VMM_INT_DECL(VBOXSTRICTRC) IEMExecVmxVmexitPreemptTimer(PVMCPU pVCpu)
     15654{
     15655    IEM_CTX_ASSERT(pVCpu, IEM_CPUMCTX_EXTRN_VMX_VMEXIT_MASK);
     15656    VBOXSTRICTRC rcStrict = iemVmxVmexitPreemptTimer(pVCpu);
     15657    if (pVCpu->iem.s.cActiveMappings)
     15658        iemMemRollback(pVCpu);
     15659    return iemExecStatusCodeFiddling(pVCpu, rcStrict);
     15660}
     15661
     15662
     15663/**
    1564615664 * Interface for HM and EM to emulate VM-exit due to external interrupts.
    1564715665 *
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r75150 r75201  
    37123712
    37133713/**
     3714 * VMX VM-exit handler for VM-exits due to expiry of the preemption timer.
     3715 *
     3716 * @returns VBox strict status code.
     3717 * @param   pVCpu           The cross context virtual CPU structure.
     3718 */
     3719IEM_STATIC VBOXSTRICTRC iemVmxVmexitPreemptTimer(PVMCPU pVCpu)
     3720{
     3721    PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
     3722    Assert(pVmcs);
     3723    Assert(pVmcs->u32PinCtls & VMX_PIN_CTLS_PREEMPT_TIMER);
     3724    NOREF(pVmcs);
     3725
     3726    iemVmxVmcsSetExitQual(pVCpu, 0);
     3727    return iemVmxVmexit(pVCpu, VMX_EXIT_PREEMPT_TIMER);
     3728}
     3729
     3730
     3731/**
    37143732 * VMX VM-exit handler for VM-exits due to external interrupts.
    37153733 *
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