Index: /trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp	(revision 49897)
+++ /trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp	(revision 49898)
@@ -1512,7 +1512,6 @@
          */
 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
-        else if (   (   CPUMIsGuestInLongModeEx(pCtx)
-                     && !CPUMIsGuestDebugStateActivePending(pVCpu))
-                 || !CPUMIsGuestDebugStateActive(pVCpu))
+        else if (   !CPUMIsGuestDebugStateActivePending(pVCpu))
+                 && !CPUMIsGuestDebugStateActive(pVCpu))
 #else
         else if (!CPUMIsGuestDebugStateActive(pVCpu))
@@ -4468,13 +4467,14 @@
     STAM_COUNTER_INC(&pVCpu->hm.s.StatExitDRxRead);
 
-    /* We should -not- get this VM-exit if we're not stepping or the guest is debugging. */
-    AssertMsgReturn(   pVCpu->hm.s.fSingleInstruction
-                    || DBGFIsStepping(pVCpu)
-                    || !pSvmTransient->fWasGuestDebugStateActive,
-                    ("hmR0SvmExitReadDRx: Unexpected exit. pVCpu=%p pCtx=%p\n", pVCpu, pCtx),
-                    VERR_SVM_UNEXPECTED_EXIT);
+    /* We should -not- get this VM-exit if the guest's debug registers were active. */
+    if (pSvmTransient->fWasGuestDebugStateActive)
+    {
+        AssertMsgFailed(("hmR0SvmHandleExit: Unexpected exit %#RX32\n", (uint32_t)pSvmTransient->u64ExitCode));
+        pVCpu->hm.s.u32HMError = (uint32_t)pSvmTransient->u64ExitCode;
+        return VERR_SVM_UNEXPECTED_EXIT;
+    }
 
     /*
-     * Lazy DR0-3 loading?
+     * Lazy DR0-3 loading.
      */
     if (!pSvmTransient->fWasHyperDebugStateActive)
