VirtualBox

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


Ignore:
Timestamp:
Oct 29, 2018 2:28:43 PM (6 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 VM-exit bits; for INIT and SIPI.

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

Legend:

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

    r75135 r75150  
    980980IEM_STATIC VBOXSTRICTRC     iemVmxVmexitTripleFault(PVMCPU pVCpu);
    981981IEM_STATIC VBOXSTRICTRC     iemVmxVmexitExtInt(PVMCPU pVCpu, uint8_t uVector, bool fIntPending);
     982IEM_STATIC VBOXSTRICTRC     iemVmxVmexitStartupIpi(PVMCPU pVCpu, uint8_t uVector);
     983IEM_STATIC VBOXSTRICTRC     iemVmxVmexitInitIpi(PVMCPU pVCpu);
    982984IEM_STATIC VBOXSTRICTRC     iemVmxVmexitIntWindow(PVMCPU pVCpu);
    983985#endif
     
    1566215664
    1566315665/**
     15666 * Interface for HM and EM to emulate VM-exit due to startup-IPI (SIPI).
     15667 *
     15668 * @returns Strict VBox status code.
     15669 * @param   pVCpu           The cross context virtual CPU structure of the calling EMT.
     15670 * @param   uVector         The SIPI vector.
     15671 * @thread  EMT(pVCpu)
     15672 */
     15673VMM_INT_DECL(VBOXSTRICTRC) IEMExecVmxVmexitStartupIpi(PVMCPU pVCpu, uint8_t uVector)
     15674{
     15675    IEM_CTX_ASSERT(pVCpu, IEM_CPUMCTX_EXTRN_VMX_VMEXIT_MASK);
     15676    VBOXSTRICTRC rcStrict = iemVmxVmexitStartupIpi(pVCpu, uVector);
     15677    if (pVCpu->iem.s.cActiveMappings)
     15678        iemMemRollback(pVCpu);
     15679    return iemExecStatusCodeFiddling(pVCpu, rcStrict);
     15680}
     15681
     15682
     15683/**
     15684 * Interface for HM and EM to emulate VM-exit due to init-IPI (INIT).
     15685 *
     15686 * @returns Strict VBox status code.
     15687 * @param   pVCpu           The cross context virtual CPU structure of the calling EMT.
     15688 * @thread  EMT(pVCpu)
     15689 */
     15690VMM_INT_DECL(VBOXSTRICTRC) IEMExecVmxVmexitInitIpi(PVMCPU pVCpu)
     15691{
     15692    IEM_CTX_ASSERT(pVCpu, IEM_CPUMCTX_EXTRN_VMX_VMEXIT_MASK);
     15693    VBOXSTRICTRC rcStrict = iemVmxVmexitInitIpi(pVCpu);
     15694    if (pVCpu->iem.s.cActiveMappings)
     15695        iemMemRollback(pVCpu);
     15696    return iemExecStatusCodeFiddling(pVCpu, rcStrict);
     15697}
     15698
     15699
     15700/**
    1566415701 * Interface for HM and EM to emulate VM-exits for interrupt-windows.
    1566515702 *
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r75135 r75150  
    37793779
    37803780/**
     3781 * VMX VM-exit handler for VM-exits due to startup-IPIs (SIPI).
     3782 *
     3783 * @returns VBox strict status code.
     3784 * @param   pVCpu       The cross context virtual CPU structure.
     3785 * @param   uVector     The SIPI vector.
     3786 */
     3787IEM_STATIC VBOXSTRICTRC iemVmxVmexitStartupIpi(PVMCPU pVCpu, uint8_t uVector)
     3788{
     3789    PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
     3790    Assert(pVmcs);
     3791
     3792    iemVmxVmcsSetExitQual(pVCpu, uVector);
     3793    return iemVmxVmexit(pVCpu, VMX_EXIT_SIPI);
     3794}
     3795
     3796
     3797/**
     3798 * VMX VM-exit handler for VM-exits due to init-IPIs (INIT).
     3799 *
     3800 * @returns VBox strict status code.
     3801 * @param   pVCpu       The cross context virtual CPU structure.
     3802 */
     3803IEM_STATIC VBOXSTRICTRC iemVmxVmexitInitIpi(PVMCPU pVCpu)
     3804{
     3805    PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
     3806    Assert(pVmcs);
     3807
     3808    iemVmxVmcsSetExitQual(pVCpu, 0);
     3809    return iemVmxVmexit(pVCpu, VMX_EXIT_INIT_SIGNAL);
     3810}
     3811
     3812
     3813/**
    37813814 * VMX VM-exit handler for interrupt-window VM-exits.
    37823815 *
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