Index: /trunk/include/VBox/vmm/hm_svm.h
===================================================================
--- /trunk/include/VBox/vmm/hm_svm.h	(revision 46778)
+++ /trunk/include/VBox/vmm/hm_svm.h	(revision 46779)
@@ -547,4 +547,12 @@
 } SVMIOIOEXIT;
 
+/** @name SVMIOIOEXIT.u1Type
+ *  @{ */
+/** IO write. */
+#define SVM_IOIO_WRITE                  0
+/** IO read. */
+#define SVM_IOIO_READ                   1
+/** @}*/
+
 /**
  * SVM nested paging structure.
Index: /trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp	(revision 46778)
+++ /trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp	(revision 46779)
@@ -3311,5 +3311,4 @@
     {
         uint8_t uIdtVector  = pVmcb->ctrl.ExitIntInfo.n.u8Vector;
-        uint8_t uExitVector = UINT8_MAX;       /* Start off with an invalid vector, updated when it's valid. See below. */
 
         typedef enum
@@ -3326,5 +3325,5 @@
             if (pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0 <= SVM_EXIT_EXCEPTION_1F)
             {
-                uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0);
+                uint8_t uExitVector = (uint8_t)(pSvmTransient->u64ExitCode - SVM_EXIT_EXCEPTION_0);
                 if (   uExitVector == X86_XCPT_PF
                     && uIdtVector  == X86_XCPT_PF)
@@ -3337,12 +3336,17 @@
                          && (   hmR0SvmIsContributoryXcpt(uIdtVector)
                              || uIdtVector == X86_XCPT_PF))
-               {
-                   enmReflect = SVMREFLECTXCPT_DF;
-                   Log4(("IDT: Pending vectoring #DF %#RX64 uExitVector=%#x\n", pVCpu->hm.s.Event.u64IntrInfo, uExitVector));
+                {
+                    enmReflect = SVMREFLECTXCPT_DF;
+                    Log4(("IDT: Pending vectoring #DF %#RX64 uIdtVector=%#x uExitVector=%#x\n", pVCpu->hm.s.Event.u64IntrInfo,
+                          uIdtVector, uExitVector));
                 }
-               else if (uIdtVector == X86_XCPT_DF)
-                   enmReflect = SVMREFLECTXCPT_TF;
-               else
-                   enmReflect = SVMREFLECTXCPT_XCPT;
+                else if (uIdtVector == X86_XCPT_DF)
+                {
+                    enmReflect = SVMREFLECTXCPT_TF;
+                    Log4(("IDT: Pending vectoring triple-fault %#RX64 uIdtVector=%#x uExitVector=%#x\n", pVCpu->hm.s.Event.u64IntrInfo,
+                          uIdtVector, uExitVector));
+                }
+                else
+                    enmReflect = SVMREFLECTXCPT_XCPT;
             }
             else
@@ -3380,6 +3384,4 @@
                 hmR0SvmSetPendingXcptDF(pVCpu);
                 rc = VINF_HM_DOUBLE_FAULT;
-                Log4(("IDT: Pending vectoring #DF %#RX64 uIdtVector=%#x uExitVector=%#x\n", pVCpu->hm.s.Event.u64IntrInfo,
-                      uIdtVector, uExitVector));
                 break;
             }
@@ -3388,5 +3390,4 @@
             {
                 rc = VINF_EM_RESET;
-                Log4(("IDT: Pending vectoring triple-fault uIdt=%#x uExit=%#x\n", uIdtVector, uExitVector));
                 break;
             }
@@ -3844,5 +3845,5 @@
         if (rc == VINF_SUCCESS)
         {
-            if (IoExitInfo.n.u1Type == 0)   /* OUT */
+            if (IoExitInfo.n.u1Type == SVM_IOIO_WRITE)
             {
                 VBOXSTRICTRC rc2 = IOMInterpretOUTSEx(pVM, pVCpu, CPUMCTX2CORE(pCtx), IoExitInfo.n.u16Port, pDis->fPrefix,
@@ -3867,5 +3868,5 @@
         Assert(!IoExitInfo.n.u1REP);
 
-        if (IoExitInfo.n.u1Type == 0)   /* OUT */
+        if (IoExitInfo.n.u1Type == SVM_IOIO_WRITE)
         {
             VBOXSTRICTRC rc2 = IOMIOPortWrite(pVM, pVCpu, IoExitInfo.n.u16Port, pCtx->eax & uAndVal, uIOSize);
@@ -3950,9 +3951,9 @@
     }
 
-#ifdef DEBUG
+#ifdef VBOX_STRICT
     if (rc == VINF_IOM_R3_IOPORT_READ)
-        Assert(IoExitInfo.n.u1Type != 0);
+        Assert(IoExitInfo.n.u1Type == SVM_IOIO_READ);
     else if (rc == VINF_IOM_R3_IOPORT_WRITE)
-        Assert(IoExitInfo.n.u1Type == 0);
+        Assert(IoExitInfo.n.u1Type == SVM_IOIO_WRITE);
     else
     {
