Index: /trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h	(revision 76049)
+++ /trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h	(revision 76050)
@@ -7920,5 +7920,6 @@
     else
     {
-        rcStrict = PGMPhysSimpleWriteGCPhys(pVCpu->CTX_SUFF(pVM), GCPtrVmcs + RT_UOFFSETOF(VMXVVMCS, fVmcsState),
+        AssertCompileMemberSize(VMXVVMCS, fVmcsState, sizeof(fVmcsStateClear));
+        rcStrict = PGMPhysSimpleWriteGCPhys(pVCpu->CTX_SUFF(pVM), GCPhysVmcs + RT_UOFFSETOF(VMXVVMCS, fVmcsState),
                                             (const void *)&fVmcsStateClear, sizeof(fVmcsStateClear));
         if (RT_FAILURE(rcStrict))
@@ -8103,13 +8104,13 @@
 
     /*
-     * We only maintain only the current VMCS in our virtual CPU context (CPUMCTX). Therefore,
-     * VMPTRLD shall always flush any existing current VMCS back to guest memory before loading
-     * a new VMCS as current.
-     */
-    if (IEM_VMX_GET_CURRENT_VMCS(pVCpu) != GCPhysVmcs)
-    {
+     * We maintain only the cache of the current VMCS in CPUMCTX. Therefore, VMPTRLD shall
+     * always flush the cache contents of any existing, current VMCS back to guest memory
+     * before loading a new VMCS as current.
+     */
+    if (   IEM_VMX_HAS_CURRENT_VMCS(pVCpu)
+        && IEM_VMX_GET_CURRENT_VMCS(pVCpu) != GCPhysVmcs)
         iemVmxCommitCurrentVmcsToMemory(pVCpu);
-        IEM_VMX_SET_CURRENT_VMCS(pVCpu, GCPhysVmcs);
-    }
+
+    IEM_VMX_SET_CURRENT_VMCS(pVCpu, GCPhysVmcs);
 
     iemVmxVmSucceed(pVCpu);
