VirtualBox

Changeset 79401 in vbox


Ignore:
Timestamp:
Jun 28, 2019 6:22:05 AM (5 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Nested VMX: bugref:9180 Don't set interrupt-window exiting when executing a nested-guest.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r79386 r79401  
    97139713{
    97149714    PCPUMCTX     pCtx = &pVCpu->cpum.GstCtx;
    9715     PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo;
     9715    PVMXVMCSINFO pVmcsInfo      = pVmxTransient->pVmcsInfo;
     9716    bool const   fIsNestedGuest = pVmxTransient->fIsNestedGuest;
    97169717
    97179718    /* Get the current interruptibility-state of the guest and then figure out what can be injected. */
     
    97439744        {
    97449745#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    9745             if (   pVmxTransient->fIsNestedGuest
     9746            if (   fIsNestedGuest
    97469747                && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_NMI_EXIT))
    97479748                return IEMExecVmxVmexitXcptNmi(pVCpu);
     
    97519752            Log4Func(("Pending NMI\n"));
    97529753        }
    9753         else
     9754        else if (!fIsNestedGuest)
    97549755            hmR0VmxSetNmiWindowExitVmcs(pVCpu, pVmcsInfo);
    97559756    }
     
    97719772        {
    97729773#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    9773             if (   pVmxTransient->fIsNestedGuest
     9774            if (   fIsNestedGuest
    97749775                && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT))
    97759776            {
     
    97849785            {
    97859786#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    9786                 if (   pVmxTransient->fIsNestedGuest
     9787                if (   fIsNestedGuest
    97879788                    && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
    97889789                    && CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
     
    97989799            else if (rc == VERR_APIC_INTR_MASKED_BY_TPR)
    97999800            {
    9800                 if (   !pVmxTransient->fIsNestedGuest
     9801                if (   !fIsNestedGuest
    98019802                    && (pVmcsInfo->u32ProcCtls & VMX_PROC_CTLS_USE_TPR_SHADOW))
    98029803                    hmR0VmxApicSetTprThreshold(pVCpu, pVmcsInfo, u8Interrupt >> 4);
     
    98129813                STAM_COUNTER_INC(&pVCpu->hm.s.StatSwitchGuestIrq);
    98139814        }
    9814         else
     9815        else if (!fIsNestedGuest)
    98159816            hmR0VmxSetIntWindowExitVmcs(pVCpu, pVmcsInfo);
    98169817    }
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