Index: /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 79711)
+++ /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 79712)
@@ -13663,5 +13663,5 @@
          */
         {
-            int rc = hmR0VmxReadExitIntInfoVmcs(pVmxTransient);
+            rc = hmR0VmxReadExitIntInfoVmcs(pVmxTransient);
             AssertRCReturn(rc, rc);
 
@@ -15448,6 +15448,9 @@
     rc = VMXReadVmcsHstN(VMX_VMCS_CTRL_CR4_READ_SHADOW, &uHCReg);           AssertRC(rc);
     Log4(("VMX_VMCS_CTRL_CR4_READ_SHADOW              %#RHr\n", uHCReg));
-    rc = VMXReadVmcs64(VMX_VMCS64_CTRL_EPTP_FULL, &u64Val);                 AssertRC(rc);
-    Log4(("VMX_VMCS64_CTRL_EPTP_FULL                  %#RX64\n", u64Val));
+    if (pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging)
+    {
+        rc = VMXReadVmcs64(VMX_VMCS64_CTRL_EPTP_FULL, &u64Val);             AssertRC(rc);
+        Log4(("VMX_VMCS64_CTRL_EPTP_FULL                  %#RX64\n", u64Val));
+    }
 
     hmR0DumpRegs(pVCpu);
@@ -16984,5 +16987,8 @@
          */
         case VMX_EXIT_INT_INFO_TYPE_NMI:
+        {
+            Assert(!pVCpu->hm.s.Event.fPending);  /* NMIs cannot be caused during delivery on another event. */
             return hmR0VmxExitHostNmi(pVCpu, pVmxTransient->pVmcsInfo);
+        }
 
         /*
@@ -17035,4 +17041,11 @@
                     Assert(ExitEventInfo.uIdtVectoringInfo    == pVCpu->hm.s.Event.u64IntInfo);
                     Assert(ExitEventInfo.uIdtVectoringErrCode == pVCpu->hm.s.Event.u32ErrCode);
+                    if (   VMX_IDT_VECTORING_INFO_TYPE(ExitEventInfo.uIdtVectoringInfo) == VMX_IDT_VECTORING_INFO_TYPE_SW_INT
+                        || VMX_IDT_VECTORING_INFO_TYPE(ExitEventInfo.uIdtVectoringInfo) == VMX_IDT_VECTORING_INFO_TYPE_PRIV_SW_XCPT
+                        || VMX_IDT_VECTORING_INFO_TYPE(ExitEventInfo.uIdtVectoringInfo) == VMX_IDT_VECTORING_INFO_TYPE_SW_XCPT)
+                    {
+                        Assert(ExitInfo.cbInstr == pVCpu->hm.s.Event.cbInstr);
+                    }
+
                     pVCpu->hm.s.Event.fPending = false;
                 }
