VirtualBox

Changeset 23792 in vbox for trunk/src


Ignore:
Timestamp:
Oct 15, 2009 7:27:40 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53530
Message:

Similar unexpected return value hack for nested paging (guest SMP).

File:
1 edited

Legend:

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

    r20671 r23792  
    258258    if (rc == VINF_PGM_SYNCPAGE_MODIFIED_PDE)
    259259        rc = VINF_SUCCESS;
     260    else
     261    /* Note: hack alert for difficult to reproduce problem. */
     262    if (    rc == VERR_PAGE_TABLE_NOT_PRESENT           /* seen with UNI & SMP */
     263        ||  rc == VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT   /* seen with SMP */
     264        ||  rc == VERR_PAGE_MAP_LEVEL4_NOT_PRESENT)     /* precaution */
     265    {
     266        Log(("WARNING: Unexpected VERR_PAGE_TABLE_NOT_PRESENT (%d) for page fault at %RGp error code %x (rip=%RGv)\n", rc, pvFault, uErr, pRegFrame->rip));
     267        /* Some kind of inconsistency in the SMP case; it's safe to just execute the instruction again; not sure about single VCPU VMs though. */
     268        rc = VINF_SUCCESS;
     269    }
     270
    260271    STAM_STATS({ if (!pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution))
    261272                    pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.StatRZTrap0eTime2Misc; });
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