VirtualBox

Changeset 20869 in vbox


Ignore:
Timestamp:
Jun 24, 2009 12:27:17 AM (15 years ago)
Author:
vboxsync
Message:

VMMR3RawRunGC: cause guru meditation if cr3 mismatches. EMR3FatalError: change to guru meditation or we risk resuming execution and blowing up.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/err.h

    r20743 r20869  
    815815/** Reason for leaving R0: Hit a ring-0 assertion on EMT. */
    816816#define VERR_VMM_RING0_ASSERTION            (-2701)
     817/** The hyper CR3 differs between PGM and CPUM. */
     818#define VERR_VMM_HYPER_CR3_MISMATCH         (-2702)
    817819/** @} */
    818820
  • trunk/src/VBox/VMM/DBGFSym.cpp

    r19773 r20869  
    2525*******************************************************************************/
    2626#define LOG_GROUP LOG_GROUP_DBGF
    27 #if defined(RT_OS_WINDOWS) && 0 //defined(DEBUG_bird) // enabled this is you want to debug win32 guests, the hypervisor of EFI.
     27#if defined(RT_OS_WINDOWS) && 1 //defined(DEBUG_bird) // enabled this is you want to debug win32 guests, the hypervisor of EFI.
    2828# include <Windows.h>
    2929# define _IMAGEHLP64
  • trunk/src/VBox/VMM/EM.cpp

    r20838 r20869  
    627627VMMR3DECL(void) EMR3FatalError(PVMCPU pVCpu, int rc)
    628628{
     629    pVCpu->em.s.enmState = EMSTATE_GURU_MEDITATION;
    629630    longjmp(pVCpu->em.s.u.FatalLongJump, rc);
    630631    AssertReleaseMsgFailed(("longjmp returned!\n"));
     
    825826                        case VERR_TRPM_DONT_PANIC:
    826827                        case VERR_VMM_RING0_ASSERTION:
     828                        case VERR_VMM_HYPER_CR3_MISMATCH:
    827829                            return rcLast;
    828830                    }
     
    841843                case VERR_TRPM_DONT_PANIC:
    842844                case VERR_VMM_RING0_ASSERTION:
     845                case VERR_VMM_HYPER_CR3_MISMATCH:
    843846                case VERR_INTERNAL_ERROR:
    844847                case VERR_INTERNAL_ERROR_2:
     
    25702573        case VERR_TRPM_PANIC:
    25712574        case VERR_VMM_RING0_ASSERTION:
     2575        case VERR_VMM_HYPER_CR3_MISMATCH:
    25722576            break;
    25732577
  • trunk/src/VBox/VMM/VMM.cpp

    r20864 r20869  
    11361136    for (;;)
    11371137    {
    1138         Assert(CPUMGetHyperCR3(pVCpu) && CPUMGetHyperCR3(pVCpu) == PGMGetHyperCR3(pVCpu));
    11391138#ifdef VBOX_STRICT
     1139        if (RT_UNLIKELY(!CPUMGetHyperCR3(pVCpu) || CPUMGetHyperCR3(pVCpu) != PGMGetHyperCR3(pVCpu)))
     1140            EMR3FatalError(pVCpu, VERR_VMM_HYPER_CR3_MISMATCH);
    11401141        PGMMapCheck(pVM);
    11411142#endif
  • trunk/src/VBox/VMM/VMMAll/REMAll.cpp

    r20787 r20869  
    145145
    146146    VM_FF_SET(pVM, VM_FF_REM_HANDLER_NOTIFY);
     147
     148#if 0 /* Enable this to trigger odd flush bugs. */
     149    remFlushHandlerNotifications(pVM);
     150#endif
    147151}
    148152
  • trunk/src/VBox/VMM/VMMGuruMeditation.cpp

    r20754 r20869  
    270270        case VINF_EM_DBG_HYPER_BREAKPOINT:
    271271        case VINF_EM_DBG_HYPER_STEPPED:
     272        case VERR_VMM_HYPER_CR3_MISMATCH:
    272273        {
    273274            /*
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