VirtualBox

Changeset 71915 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 19, 2018 10:03:20 AM (7 years ago)
Author:
vboxsync
Message:

VMM/HMSVMR0: Nested Hw.virt: Sync VMCPU_FF_INTERRUPT_NESTED_GUEST while returning from executing the nested-guest.

File:
1 edited

Legend:

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

    r71914 r71915  
    27342734
    27352735#ifdef VBOX_WITH_NESTED_HWVIRT
    2736     /*
    2737      * Guest Virtual GIF (Global Interrupt Flag).
    2738      */
    2739     if (pVmcb->ctrl.IntCtrl.n.u1VGifEnable == 1)
    2740     {
    2741         Assert(pVCpu->CTX_SUFF(pVM)->hm.s.svm.fVGif);
    2742         Assert(!CPUMIsGuestInSvmNestedHwVirtMode(pMixedCtx));
    2743         pMixedCtx->hwvirt.fGif = pVmcb->ctrl.IntCtrl.n.u1VGif;
     2736    if (!CPUMIsGuestInSvmNestedHwVirtMode(pMixedCtx))
     2737    {
     2738        if (pVmcb->ctrl.IntCtrl.n.u1VGifEnable)
     2739        {
     2740            /*
     2741             * Guest Virtual GIF (Global Interrupt Flag).
     2742             * We don't yet support passing VGIF feature to the guest.
     2743             */
     2744            Assert(pVCpu->CTX_SUFF(pVM)->hm.s.svm.fVGif);
     2745            pMixedCtx->hwvirt.fGif = pVmcb->ctrl.IntCtrl.n.u1VGif;
     2746        }
     2747    }
     2748    else
     2749    {
     2750        /* Sync/verify nested-guest's V_IRQ pending and our force-flag. */
     2751        if (!pVmcb->ctrl.IntCtrl.n.u1VIrqPending)
     2752        {
     2753            if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST))
     2754                VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST);
     2755        }
     2756        else
     2757            Assert(VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST));
    27442758    }
    27452759#endif
     
    31333147     * RDTSC/RDTSCP as well.
    31343148     */
    3135     bool     fParavirtTsc;
    3136     uint64_t uTscOffset;
     3149    bool       fParavirtTsc;
     3150    uint64_t   uTscOffset;
    31373151    bool const fCanUseRealTsc = TMCpuTickCanUseRealTSC(pVM, pVCpu, &uTscOffset, &fParavirtTsc);
    31383152
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