Index: /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 45411)
+++ /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 45412)
@@ -4550,9 +4550,4 @@
                 enmReflect = VMXREFLECTXCPT_XCPT;
             }
-            else if (   hmR0VmxIsContributoryXcpt(uIdtVector)
-                     && hmR0VmxIsContributoryXcpt(uExitVector))
-            {
-                enmReflect = VMXREFLECTXCPT_DF;
-            }
             else if (   (pVCpu->hm.s.vmx.u32XcptBitmap & RT_BIT(X86_XCPT_PF))
                      && uIdtVector == X86_XCPT_PF
@@ -4560,4 +4555,9 @@
             {
                 pVmxTransient->fVectoringPF = true;
+            }
+            else if (   hmR0VmxIsContributoryXcpt(uIdtVector)
+                     && hmR0VmxIsContributoryXcpt(uExitVector))
+            {
+                enmReflect = VMXREFLECTXCPT_DF;
             }
             else if (   hmR0VmxInterceptingContributoryXcpts(pVCpu)
@@ -6337,5 +6337,9 @@
     Assert(!(pVCpu->hm.s.fContextUseFlags & HM_CHANGED_HOST_CONTEXT));
     Log(("LoadFlags=%#RX32\n", pVCpu->hm.s.fContextUseFlags));
-    int rc = VMXR0LoadGuestState(pVM, pVCpu, pMixedCtx);
+    int rc = VINF_SUCCESS;
+    if (pVCpu->hm.s.fContextUseFlags == HM_CHANGED_GUEST_RIP)
+        rc = hmR0VmxLoadGuestRip(pVM, pVCpu, pMixedCtx);
+    else if (pVCpu->hm.s.fContextUseFlags)
+        rc = VMXR0LoadGuestState(pVM, pVCpu, pMixedCtx);
     AssertRC(rc);
     AssertMsg(!pVCpu->hm.s.fContextUseFlags, ("fContextUseFlags =%#x\n", pVCpu->hm.s.fContextUseFlags));
@@ -6494,5 +6498,5 @@
         AssertMsg(pVCpu->hm.s.idEnteredCpu == RTMpCpuId(),
                   ("Illegal migration! Entered on CPU %u Current %u cLoops=%u\n", (unsigned)pVCpu->hm.s.idEnteredCpu,
-                   (unsigned)RTMpCpuId(), cLoops));
+                  (unsigned)RTMpCpuId(), cLoops));
 
         /* Preparatory work for running guest code, this may return to ring-3 for some last minute updates. */
@@ -8022,5 +8026,5 @@
 #else
     /* Aggressive state sync. for now. */
-    rc  = hmR0VmxSaveGuestGprs(pVM, pVCpu, pMixedCtx);
+    rc |= hmR0VmxSaveGuestGprs(pVM, pVCpu, pMixedCtx);
     rc |= hmR0VmxSaveGuestControlRegs(pVM, pVCpu, pMixedCtx);
     rc |= hmR0VmxSaveGuestSegmentRegs(pVM, pVCpu, pMixedCtx);
