VirtualBox

Ignore:
Timestamp:
Apr 26, 2012 4:35:04 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77640
Message:

VMM: fix VERR_PAGE_TABLE_NOT_PRESENT guru meditation caused by failing to disassemble an instruction because the guest's PDE/PTE is invalid, see #6043 for details.

File:
1 edited

Legend:

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

    r40453 r41072  
    360360        if (PAGE_ADDRESS(InstrGC) == PAGE_ADDRESS(InstrGC + sizeof(State.aOpcode) - 1))
    361361        {
    362            if (rc == VERR_PAGE_TABLE_NOT_PRESENT)
    363               HWACCMInvalidatePage(pVCpu, InstrGC);
     362            /*
     363             * If we fail to find the page via the guest's page tables we invalidate the page
     364             * in the host TLB (pertaining to the guest in the NestedPaging case). See #6043
     365             */
     366            if (rc == VERR_PAGE_TABLE_NOT_PRESENT || rc == VERR_PAGE_NOT_PRESENT)
     367                HWACCMInvalidatePage(pVCpu, InstrGC);
    364368
    365369           Log(("emDisCoreOne: read failed with %d\n", rc));
     
    449453        if (PAGE_ADDRESS(GCPtrInstr) == PAGE_ADDRESS(GCPtrInstr + sizeof(State.aOpcode) - 1))
    450454        {
    451            if (rc == VERR_PAGE_TABLE_NOT_PRESENT)
    452               HWACCMInvalidatePage(pVCpu, GCPtrInstr);
     455            /*
     456             * If we fail to find the page via the guest's page tables we invalidate the page
     457             * in the host TLB (pertaining to the guest in the NestedPaging case). See #6043
     458             */
     459            if (rc == VERR_PAGE_TABLE_NOT_PRESENT || rc == VERR_PAGE_NOT_PRESENT)
     460                HWACCMInvalidatePage(pVCpu, GCPtrInstr);
    453461
    454462           Log(("EMInterpretDisasOneEx: read failed with %d\n", rc));
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette