X86: Add a delay between INIT & SIPIs for AP bring-up in X2APIC case

Without this delay, Xen could not bring APs up while working with TXT/tboot, because tboot need some time in APs to handle INIT before becoming ready for receiving SIPIs.(this delay was removed as part of c/s 23724 by Tim Deegan)

Signed-off-by: Gang Wei <gang.wei@intel.com>
Acked-by: Keir Fraser <keir@xen.org>

diff -r d1aefee43af1 xen/arch/x86/smpboot.c
--- a/xen/arch/x86/smpboot.c	Wed Dec 21 18:51:31 2011 +0800
+++ b/xen/arch/x86/smpboot.c	Thu Dec 22 00:26:52 2011 +0800
@@ -42,6 +42,7 @@
 #include <asm/msr.h>
 #include <asm/mtrr.h>
 #include <asm/time.h>
+#include <asm/tboot.h>
 #include <mach_apic.h>
 #include <mach_wakecpu.h>
 #include <smpboot_hooks.h>
@@ -463,6 +464,14 @@
             send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
         } while ( send_status && (timeout++ < 1000) );
     }
+    else if ( tboot_in_measured_env() )
+    {
+        /*
+         * give AP time to handle INIT before ready to receive SIPIs
+         * otherwise SIPIs may be skipped and AP will fail to up
+         */
+        udelay(10);
+    }
 
     /*
      * Should we send STARTUP IPIs ?
