|
From: Wei, G. <gan...@in...> - 2011-12-23 03:14:58
|
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 <gan...@in...>
Acked-by: Keir Fraser <ke...@xe...>
Acked-by: Tim Deegan <tim...@ci...>
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 Fri Dec 23 11:01:10 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,18 @@
send_status = apic_read(APIC_ICR) & APIC_ICR_BUSY;
} while ( send_status && (timeout++ < 1000) );
}
+ else if ( tboot_in_measured_env() )
+ {
+ /*
+ * With tboot AP is actually spinning in a mini-guest before
+ * receiving INIT. Upon receiving INIT ipi, AP need time to VMExit,
+ * update VMCS to tracking SIPIs and VMResume.
+ *
+ * While AP is in root mode handling the INIT the CPU will drop
+ * any SIPIs
+ */
+ udelay(10);
+ }
/*
* Should we send STARTUP IPIs ?
|