VirtualBox

Ignore:
Timestamp:
Jun 30, 2017 9:35:10 AM (7 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested Hw.virt: Don't increment RIP if VMRUN causes a #VMEXIT (happens typically when injecting an event
as part of VM-entry). Fixes NT4 nested-guest BSOD.

File:
1 edited

Legend:

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

    r67632 r67720  
    676676                 *        NRIP for the nested-guest to calculate the instruction length
    677677                 *        below. */
    678                 LogFlow(("iemSvmVmrun: InjectingEvent: uVector=%u enmType=%d uErrorCode=%u cr2=%#RX64\n", uVector, enmType,
    679                          uErrorCode, pCtx->cr2));
     678                LogFlow(("iemSvmVmrun: Injecting event: %04x:%08RX64 uVector=%#x enmType=%d uErrorCode=%u cr2=%#RX64\n",
     679                         pCtx->cs.Sel, pCtx->rip, uVector, enmType,uErrorCode, pCtx->cr2));
    680680                rcStrict = IEMInjectTrap(pVCpu, uVector, enmType, uErrorCode, pCtx->cr2, 0 /* cbInstr */);
    681681            }
    682682            else
    683                 LogFlow(("iemSvmVmrun: Entering nested-guest at %04x:%08RX64 cr0=%#RX64 cr3=%#RX64 cr4=%#RX64 efer=%#RX64 efl=%#RX64\n",
     683                LogFlow(("iemSvmVmrun: Entered nested-guest: %04x:%08RX64 cr0=%#RX64 cr3=%#RX64 cr4=%#RX64 efer=%#RX64 efl=%#x\n",
    684684                         pCtx->cs.Sel, pCtx->rip, pCtx->cr0, pCtx->cr3, pCtx->cr4, pCtx->msrEFER, pCtx->rflags.u64));
    685685
     
    11331133
    11341134    VBOXSTRICTRC rcStrict = iemSvmVmrun(pVCpu, pCtx, cbInstr, GCPhysVmcb);
    1135     if (rcStrict == VINF_SVM_VMEXIT)
    1136     {
    1137         iemRegAddToRipAndClearRF(pVCpu, cbInstr);
    1138         rcStrict = VINF_SUCCESS;
    1139     }
    1140     else if (rcStrict == VERR_SVM_VMEXIT_FAILED)
     1135    if (rcStrict == VERR_SVM_VMEXIT_FAILED)
     1136    {
     1137        Assert(!CPUMIsGuestInSvmNestedHwVirtMode(pCtx));
    11411138        rcStrict = iemInitiateCpuShutdown(pVCpu);
     1139    }
    11421140    return rcStrict;
    11431141}
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