x86/vmx: Avoid using domain_crash_syncrhonous() in vmx_vmentry_failure()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 6 Feb 2018 12:01:08 +0000 (12:01 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 2 Aug 2018 09:10:43 +0000 (10:10 +0100)
There is no need for the syncrhonous varient, as the vmentry failure path can
just return to processing softirqs.

This is in aid of trying to remove domain_crash_syncrhonous() from the
codebase.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
xen/arch/x86/hvm/vmx/entry.S
xen/arch/x86/hvm/vmx/vmcs.c

index a7d1356354d2e10fc27e1ba83c652406d582b27c..d18c1493764d7f79b8c963457ccc2488e7ad5fad 100644 (file)
@@ -128,7 +128,7 @@ UNLIKELY_END(realmode)
         /* WARNING! `ret`, `call *`, `jmp *` not safe before this point. */
 
         call vmx_vmentry_failure
-        BUG  /* vmx_vmentry_failure() shouldn't return. */
+        jmp  .Lvmx_process_softirqs
 
 ENTRY(vmx_asm_do_vmentry)
         GET_CURRENT(bx)
index 096a26a36fca273eaa8f57e1d5b4f7553ff3eda2..262c25260f9980348a657f0c050622ec42159d6c 100644 (file)
@@ -1784,7 +1784,7 @@ void vmx_vmentry_failure(void)
          error == VMX_INSN_INVALID_HOST_STATE )
         vmcs_dump_vcpu(curr);
 
-    domain_crash_synchronous();
+    domain_crash(curr->domain);
 }
 
 void vmx_do_resume(struct vcpu *v)