Index: /trunk/include/VBox/vmm/iem.h
===================================================================
--- /trunk/include/VBox/vmm/iem.h	(revision 66710)
+++ /trunk/include/VBox/vmm/iem.h	(revision 66711)
@@ -64,8 +64,10 @@
 /** Delivery of an external interrupt caused a \#PF. */
 #define IEMXCPTRAISEINFO_SOFT_INT_XCPT           RT_BIT_32(6)
+/** Delivery of an NMI caused an exception. */
+#define IEMXCPTRAISEINFO_NMI_XCPT                RT_BIT_32(7)
 /** Delivery of an NMI caused a \#PF. */
-#define IEMXCPTRAISEINFO_NMI_PF                  RT_BIT_32(7)
+#define IEMXCPTRAISEINFO_NMI_PF                  RT_BIT_32(8)
 /** Can re-execute the instruction at CS:RIP. */
-#define IEMXCPTRAISEINFO_CAN_REEXEC_INSTR        RT_BIT_32(8)
+#define IEMXCPTRAISEINFO_CAN_REEXEC_INSTR        RT_BIT_32(9)
 /** @} */
 
Index: /trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/IEMAll.cpp	(revision 66710)
+++ /trunk/src/VBox/VMM/VMMAll/IEMAll.cpp	(revision 66711)
@@ -3286,8 +3286,6 @@
             {
                 enmRaise = IEMXCPTRAISE_DOUBLE_FAULT;
-                if (enmCurXcptClass == IEMXCPTCLASS_PAGE_FAULT)
-                    fRaiseInfo = IEMXCPTRAISEINFO_PF_PF;
-                else
-                    fRaiseInfo = IEMXCPTRAISEINFO_PF_CONTRIBUTORY_XCPT;
+                fRaiseInfo = enmCurXcptClass == IEMXCPTCLASS_PAGE_FAULT ? IEMXCPTRAISEINFO_PF_PF
+                                                                        : IEMXCPTRAISEINFO_PF_CONTRIBUTORY_XCPT;
                 Log2(("IEMEvaluateRecursiveXcpt: Vectoring page fault. uPrevVector=%#x uCurVector=%#x uCr2=%#RX64\n", uPrevVector,
                       uCurVector, IEM_GET_CTX(pVCpu)->cr2));
@@ -3309,9 +3307,12 @@
         else
         {
-            if (   uPrevVector == X86_XCPT_NMI
-                && uCurVector  == X86_XCPT_PF)
+            if (uPrevVector == X86_XCPT_NMI)
             {
-                fRaiseInfo = IEMXCPTRAISEINFO_NMI_PF;
-                Log2(("IEMEvaluateRecursiveXcpt: NMI delivery caused a page fault\n"));
+                fRaiseInfo = IEMXCPTRAISEINFO_NMI_XCPT;
+                if (uCurVector  == X86_XCPT_PF)
+                {
+                    fRaiseInfo |= IEMXCPTRAISEINFO_NMI_PF;
+                    Log2(("IEMEvaluateRecursiveXcpt: NMI delivery caused a page fault\n"));
+                }
             }
             else if (   uPrevVector == X86_XCPT_AC
