Index: /trunk/src/VBox/VMM/VMMAll/IEMAllCImplSvmInstr.cpp.h
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/IEMAllCImplSvmInstr.cpp.h	(revision 71866)
+++ /trunk/src/VBox/VMM/VMMAll/IEMAllCImplSvmInstr.cpp.h	(revision 71867)
@@ -371,6 +371,6 @@
             && !pVM->cpum.ro.GuestFeatures.fSvmAvic)
         {
-            Log(("iemSvmVmrun: AVIC not supported -> #VMEXIT\n"));
-            return iemSvmVmexit(pVCpu, pCtx, SVM_EXIT_INVALID, 0 /* uExitInfo1 */, 0 /* uExitInfo2 */);
+            Log(("iemSvmVmrun: AVIC not supported -> Disabling\n"));
+            pVmcbCtrl->IntCtrl.n.u1AvicEnable = 0;
         }
 
@@ -379,6 +379,6 @@
             && !pVM->cpum.ro.GuestFeatures.fSvmLbrVirt)
         {
-            Log(("iemSvmVmrun: LBR virtualization not supported -> #VMEXIT\n"));
-            return iemSvmVmexit(pVCpu, pCtx, SVM_EXIT_INVALID, 0 /* uExitInfo1 */, 0 /* uExitInfo2 */);
+            Log(("iemSvmVmrun: LBR virtualization not supported -> Disabling\n"));
+            pVmcbCtrl->LbrVirt.n.u1LbrVirt = 0;
         }
 
@@ -387,14 +387,14 @@
             && !pVM->cpum.ro.GuestFeatures.fSvmVirtVmsaveVmload)
         {
-            Log(("iemSvmVmrun: Virtualized VMSAVE/VMLOAD not supported -> #VMEXIT\n"));
-            return iemSvmVmexit(pVCpu, pCtx, SVM_EXIT_INVALID, 0 /* uExitInfo1 */, 0 /* uExitInfo2 */);
+            Log(("iemSvmVmrun: Virtualized VMSAVE/VMLOAD not supported -> Disabling\n"));
+            pVmcbCtrl->LbrVirt.n.u1VirtVmsaveVmload = 0;
         }
 
         /* Virtual GIF. */
-        if (    pVmcbCtrl->IntCtrl.n.u1VGifEnable
-            && !pVM->cpum.ro.GuestFeatures.fSvmVGif)
-        {
-            Log(("iemSvmVmrun: Virtual GIF not supported -> #VMEXIT\n"));
-            return iemSvmVmexit(pVCpu, pCtx, SVM_EXIT_INVALID, 0 /* uExitInfo1 */, 0 /* uExitInfo2 */);
+        if (   pVmcbCtrl->IntCtrl.n.u1VGifEnable
+            && pVM->cpum.ro.GuestFeatures.fSvmVGif)
+        {
+            Log(("iemSvmVmrun: Virtual GIF not supported -> Disabling\n"));
+            pVmcbCtrl->IntCtrl.n.u1VGifEnable = 0;
         }
 
@@ -404,4 +404,22 @@
             Log(("iemSvmVmrun: Guest ASID is invalid -> #VMEXIT\n"));
             return iemSvmVmexit(pVCpu, pCtx, SVM_EXIT_INVALID, 0 /* uExitInfo1 */, 0 /* uExitInfo2 */);
+        }
+
+        /* Guest AVIC. */
+        if (    pVmcbCtrl->IntCtrl.n.u1AvicEnable
+            && !pVM->cpum.ro.GuestFeatures.fSvmAvic)
+        {
+            Log(("iemSvmVmrun: AVIC not supported -> Disabling\n"));
+            pVmcbCtrl->IntCtrl.n.u1AvicEnable = 0;
+        }
+
+        /* Guest Secure Encrypted Virtualization. */
+        if (  (   pVmcbCtrl->NestedPagingCtrl.n.u1Sev
+               || pVmcbCtrl->NestedPagingCtrl.n.u1SevEs)
+            && !pVM->cpum.ro.GuestFeatures.fSvmAvic)
+        {
+            Log(("iemSvmVmrun: SEV not supported -> Disabling\n"));
+            pVmcbCtrl->NestedPagingCtrl.n.u1Sev = 0;
+            pVmcbCtrl->NestedPagingCtrl.n.u1SevEs = 0;
         }
 
