On Tue, Jul 15, 2014 at 08:26:41AM -0700, Andy Lutomirski wrote:
Xen doesn't call start_secondary.Duh!
Cc: stable@xxxxxxxxxxxxxxxI think just disallowing would be preferrable.
Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxxxxxx>
---
espfix still doesn't seem to work on Xen (it goes boom in some way that
I don't understand right now), but initializing all CPUs instead of just
one of them seems like a good start.
ISTM the right fix is probably to shove the espfix logic into
native_iret and to tweak the paravirt logic so that native_iret always
gets invoked. I suspect that Xen will need its own implementation of
espfix64 in the hypervisor and that, ultimately, someone may want to
stop initializing espfix64 at all on Xen guests.
Thanks for posting this patch!
arch/x86/xen/smp.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 7005974..eea9bcc 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -23,6 +23,7 @@
#include <asm/desc.h>
#include <asm/pgtable.h>
#include <asm/cpu.h>
+#include <asm/espfix.h>
#include <xen/interface/xen.h>
#include <xen/interface/vcpu.h>
@@ -85,6 +86,13 @@ static void cpu_bringup(void)
xen_setup_cpu_clockevents();
+ /*
+ * Enable the espfix hack for this CPU
+ */
+#ifdef CONFIG_X86_ESPFIX64
+ init_espfix_ap();
+#endif
+
notify_cpu_starting(cpu);
set_cpu_online(cpu, true);
--
1.9.3