]> xenbits.xensource.com Git - people/dariof/xen.git/commitdiff
x86/smpboot: Re-position the call to tboot_wake_ap()
authorAndrew Cooper <andrew.cooper3@citrix.com>
Mon, 11 Jan 2021 15:54:38 +0000 (15:54 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 29 Jan 2021 11:59:49 +0000 (11:59 +0000)
So all the moving parts are in one function.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/smpboot.c

index 67e727cebd8c7b6a5cd94233cb8ceac3e360a01e..f5aba3c55521ee728008d871c5188d5c6bda656c 100644 (file)
@@ -425,6 +425,13 @@ static int wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
     unsigned long send_status = 0, accept_status = 0;
     int maxlvt, timeout, i;
 
+    /*
+     * Some versions of tboot might be able to handle the entire wake sequence
+     * on our behalf.
+     */
+    if ( tboot_in_measured_env() && !tboot_wake_ap(phys_apicid, start_eip) )
+        return 0;
+
     /*
      * Be paranoid about clearing APIC errors.
      */
@@ -570,8 +577,7 @@ static int do_boot_cpu(int apicid, int cpu)
     set_cpu_state(CPU_STATE_INIT);
 
     /* Starting actual IPI sequence... */
-    if ( !tboot_in_measured_env() || tboot_wake_ap(apicid, start_eip) )
-        boot_error = wakeup_secondary_cpu(apicid, start_eip);
+    boot_error = wakeup_secondary_cpu(apicid, start_eip);
 
     if ( !boot_error )
     {