VirtualBox

Changeset 72440 in vbox for trunk/src/VBox/VMM/VMMR3


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

VMM: 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/VMMR3/EM.cpp

    r72327 r72440  
    17161716                             *        doesn't intercept HLT but intercepts INTR? */
    17171717                            *pfResched = true;
    1718                             return VINF_EM_RESCHEDULE;
     1718                            if (rcStrict == VINF_SVM_VMEXIT)
     1719                                return VINF_SUCCESS;
     1720                            if (rcStrict == VINF_PGM_CHANGE_MODE)
     1721                                return PGMChangeMode(pVCpu, pCtx->cr0, pCtx->cr4, pCtx->msrEFER);
     1722                            return VBOXSTRICTRC_VAL(rcStrict);
    17191723                        }
    17201724
     
    17261730                    /** @todo this really isn't nice, should properly handle this */
    17271731                    int rc = TRPMR3InjectEvent(pVM, pVCpu, TRPM_HARDWARE_INT);
     1732                    if (rc == VINF_SVM_VMEXIT)
     1733                        rc = VINF_SUCCESS;
     1734                    else if (rc == VINF_PGM_CHANGE_MODE)
     1735                        rc = PGMChangeMode(pVCpu, pCtx->cr0, pCtx->cr4, pCtx->msrEFER);
    17281736                    if (pVM->em.s.fIemExecutesAll && (   rc == VINF_EM_RESCHEDULE_REM
    17291737                                                      || rc == VINF_EM_RESCHEDULE_HM
     
    17501758                         *        doesn't intercept HLT but intercepts VINTR? */
    17511759                        *pfResched = true;
    1752                         return VINF_EM_RESCHEDULE;
     1760                        if (rcStrict == VINF_SVM_VMEXIT)
     1761                            return VINF_SUCCESS;
     1762                        if (rcStrict == VINF_PGM_CHANGE_MODE)
     1763                            return PGMChangeMode(pVCpu, pCtx->cr0, pCtx->cr4, pCtx->msrEFER);
     1764                        return VBOXSTRICTRC_VAL(rcStrict);
    17531765                    }
    17541766
     
    21292141                        /** @todo this really isn't nice, should properly handle this */
    21302142                        rc2 = TRPMR3InjectEvent(pVM, pVCpu, TRPM_HARDWARE_INT);
    2131 Log(("EM: TRPMR3InjectEvent -> %d\n", rc2));
     2143                        Log(("EM: TRPMR3InjectEvent -> %d\n", rc2));
    21322144                        if (pVM->em.s.fIemExecutesAll && (   rc2 == VINF_EM_RESCHEDULE_REM
    21332145                                                          || rc2 == VINF_EM_RESCHEDULE_HM
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