VirtualBox

Changeset 99663 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
May 8, 2023 10:19:01 AM (22 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
157192
Message:

VMM: Nested VMX: bugref:10318 Moved vmxHCGetGuestIntrStateAndUpdateFFs outside of vmxHCEvaluatePendingEvent[Nested] as it isn't used internally. Fix callers accordingly.
Fixed superfluous call to CPUMIsInInterruptShadowWithUpdate (called unconditionally), replaced subsequent calls with CPUMIsInInterruptShadow.
Import RFLAGS explicitly when an interrupt is pending in the nested-guest case.

File:
1 edited

Legend:

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

    r99653 r99663  
    59235923        vmxHCTrpmTrapToPendingEvent(pVCpu);
    59245924
    5925     uint32_t fIntrState;
     5925    uint32_t const fIntrState = vmxHCGetGuestIntrStateWithUpdate(pVCpu);
    59265926#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    59275927    if (!pVmxTransient->fIsNestedGuest)
    5928         rcStrict = vmxHCEvaluatePendingEvent(pVCpu, pVmxTransient->pVmcsInfo, &fIntrState);
     5928        rcStrict = vmxHCEvaluatePendingEvent(pVCpu, pVmxTransient->pVmcsInfo);
    59295929    else
    5930         rcStrict = vmxHCEvaluatePendingEventNested(pVCpu, pVmxTransient->pVmcsInfo, &fIntrState);
     5930        rcStrict = vmxHCEvaluatePendingEventNested(pVCpu, pVmxTransient->pVmcsInfo);
    59315931
    59325932    /*
     
    59435943    }
    59445944#else
    5945     rcStrict = vmxHCEvaluatePendingEvent(pVCpu, pVmxTransient->pVmcsInfo, &fIntrState);
     5945    rcStrict = vmxHCEvaluatePendingEvent(pVCpu, pVmxTransient->pVmcsInfo);
    59465946    Assert(rcStrict == VINF_SUCCESS);
    59475947#endif
     
    59555955     * requirement. Regardless, we do this here to avoid duplicating code elsewhere.
    59565956     */
    5957     rcStrict = vmxHCInjectPendingEvent(pVCpu, pVmxTransient->pVmcsInfo, pVmxTransient->fIsNestedGuest,
    5958                                        fIntrState, fStepping);
     5957    rcStrict = vmxHCInjectPendingEvent(pVCpu, pVmxTransient->pVmcsInfo, pVmxTransient->fIsNestedGuest, fIntrState, fStepping);
    59595958    if (RT_LIKELY(rcStrict == VINF_SUCCESS))
    59605959    { /* likely */ }
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