VirtualBox

Changeset 72441 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 5, 2018 5:45:38 AM (7 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested hw.virt: Fixes when nested-paging isn't enabled in the outer guest.

File:
1 edited

Legend:

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

    r72251 r72441  
    36693669    VBOXSTRICTRC rcStrict = iemMemFetchDataU32(pVCpu, (uint32_t *)&Idte, UINT8_MAX, pCtx->idtr.pIdt + UINT32_C(4) * u8Vector);
    36703670    if (RT_UNLIKELY(rcStrict != VINF_SUCCESS))
     3671    {
     3672        Log(("iemRaiseXcptOrIntInRealMode: failed to fetch IDT entry! vec=%#x rc=%Rrc\n", u8Vector, VBOXSTRICTRC_VAL(rcStrict)));
    36713673        return rcStrict;
     3674    }
    36723675
    36733676    /*
     
    46934696                                              pCtx->idtr.pIdt + UINT32_C(8) * u8Vector);
    46944697    if (RT_UNLIKELY(rcStrict != VINF_SUCCESS))
     4698    {
     4699        Log(("iemRaiseXcptOrIntInProtMode: failed to fetch IDT entry! vec=%#x rc=%Rrc\n", u8Vector, VBOXSTRICTRC_VAL(rcStrict)));
    46954700        return rcStrict;
     4701    }
    46964702    Log(("iemRaiseXcptOrIntInProtMode: vec=%#x P=%u DPL=%u DT=%u:%u A=%u %04x:%04x%04x\n",
    46974703         u8Vector, Idte.Gate.u1Present, Idte.Gate.u2Dpl, Idte.Gate.u1DescType, Idte.Gate.u4Type,
     
    51545160        rcStrict = iemMemFetchSysU64(pVCpu, &Idte.au64[1], UINT8_MAX, pCtx->idtr.pIdt + offIdt + 8);
    51555161    if (RT_UNLIKELY(rcStrict != VINF_SUCCESS))
     5162    {
     5163        Log(("iemRaiseXcptOrIntInLongMode: failed to fetch IDT entry! vec=%#x rc=%Rrc\n", u8Vector, VBOXSTRICTRC_VAL(rcStrict)));
    51565164        return rcStrict;
     5165    }
    51575166    Log(("iemRaiseXcptOrIntInLongMode: vec=%#x P=%u DPL=%u DT=%u:%u IST=%u %04x:%08x%04x%04x\n",
    51585167         u8Vector, Idte.Gate.u1Present, Idte.Gate.u2Dpl, Idte.Gate.u1DescType, Idte.Gate.u4Type,
     
    55915600    pVCpu->iem.s.uCurXcpt = uPrevXcpt;
    55925601    pVCpu->iem.s.fCurXcpt = fPrevXcpt;
    5593     Log(("iemRaiseXcptOrInt: returns %Rrc (vec=%#x); cs:rip=%04x:%RGv ss:rsp=%04x:%RGv cpl=%u\n",
    5594          VBOXSTRICTRC_VAL(rcStrict), u8Vector, pCtx->cs.Sel, pCtx->rip, pCtx->ss.Sel, pCtx->esp, pVCpu->iem.s.uCpl));
     5602    Log(("iemRaiseXcptOrInt: returns %Rrc (vec=%#x); cs:rip=%04x:%RGv ss:rsp=%04x:%RGv cpl=%u depth=%d\n",
     5603         VBOXSTRICTRC_VAL(rcStrict), u8Vector, pCtx->cs.Sel, pCtx->rip, pCtx->ss.Sel, pCtx->esp, pVCpu->iem.s.uCpl,
     5604         pVCpu->iem.s.cXcptRecursions + 1));
    55955605    return rcStrict;
    55965606}
     
    81118121    if (RT_FAILURE(rc))
    81128122    {
     8123        Log(("iemMemPageTranslateAndCheckAccess: GCPtrMem=%RGv - failed to fetch page -> #PF\n", GCPtrMem));
    81138124        /** @todo Check unassigned memory in unpaged mode. */
    81148125        /** @todo Reserved bits in page tables. Requires new PGM interface. */
     
    1563215643    VBOXSTRICTRC rcStrict = IEMInjectTrap(pVCpu, u8TrapNo, enmType, uErrCode, uCr2, cbInstr);
    1563315644
     15645#ifdef VBOX_WITH_NESTED_HWVIRT_SVM
     15646    if (rcStrict == VINF_SVM_VMEXIT)
     15647        rcStrict = VINF_SUCCESS;
     15648#endif
     15649
    1563415650    /** @todo Are there any other codes that imply the event was successfully
    1563515651     *        delivered to the guest? See @bugref{6607}.  */
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