VirtualBox

Changeset 54080 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Feb 5, 2015 10:50:41 AM (10 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Try fix regression caused by r98028 (single-stepping in dbx)

File:
1 edited

Legend:

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

    r54075 r54080  
    149149 *
    150150 * We need to intercept all exceptions manually except:
    151  * - #NM, #MF handled separately, see hmR0VmxLoadSharedCR0().
     151 * - #NM, #MF handled in hmR0VmxLoadSharedCR0().
     152 * - #DB handled in hmR0VmxLoadSharedDebugState().
    152153 * - #PF need not be intercepted even in real-mode if we have Nested Paging
    153154 * support.
    154155 */
    155 #define HMVMX_REAL_MODE_XCPT_MASK    (  RT_BIT(X86_XCPT_DE)             | RT_BIT(X86_XCPT_DB)    | RT_BIT(X86_XCPT_NMI)   \
     156#define HMVMX_REAL_MODE_XCPT_MASK    (  RT_BIT(X86_XCPT_DE)            /* RT_BIT(X86_XCPT_DB) */ | RT_BIT(X86_XCPT_NMI)   \
    156157                                      | RT_BIT(X86_XCPT_BP)             | RT_BIT(X86_XCPT_OF)    | RT_BIT(X86_XCPT_BR)    \
    157158                                      | RT_BIT(X86_XCPT_UD)            /* RT_BIT(X86_XCPT_NM) */ | RT_BIT(X86_XCPT_DF)    \
     
    37733774            fInterceptMF = true;
    37743775        }
     3776        else
     3777            pVCpu->hm.s.vmx.u32XcptBitmap &= ~HMVMX_REAL_MODE_XCPT_MASK;
    37753778
    37763779        if (fInterceptNM)
     
    42124215     * Update the exception bitmap regarding intercepting #DB generated by the guest.
    42134216     */
    4214     if (fInterceptDB)
     4217    if (   fInterceptDB
     4218        || pVCpu->hm.s.vmx.RealMode.fRealOnV86Active)
    42154219        pVCpu->hm.s.vmx.u32XcptBitmap |= RT_BIT(X86_XCPT_DB);
    4216     else if (!pVCpu->hm.s.vmx.RealMode.fRealOnV86Active)
     4220    else
    42174221    {
    42184222#ifndef HMVMX_ALWAYS_TRAP_ALL_XCPTS
     
    1097910983        AssertRCReturn(rc2, rc2);
    1098010984    }
    10981     else if (rc == VINF_PGM_CHANGE_MODE)
    10982     {
    10983         /*
    10984          * Clear the exception-mask here rather than messing with it in hmR0VmxLoadSharedCR0(). Since the fRealOnV86Active
    10985          * state may be changed now. Re-evaluate the necessary intercepts when we return to VT-x execution via
    10986          * hmR0VmxLoadSharedCR0() and hmR0VmxLoadSharedDebugState(), see @bugref{7626}.
    10987          */
    10988         hmR0VmxInitXcptBitmap(pVM, pVCpu);
    10989     }
    1099010985
    1099110986    STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExitMovCRx, y2);
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