aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/smpboot_64.c8
-rw-r--r--include/asm-x86/smp.h3
-rw-r--r--include/asm-x86/smp_32.h4
3 files changed, 11 insertions, 4 deletions
diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c
index 57ebe6c04305..13ab1123d1d2 100644
--- a/arch/x86/kernel/smpboot_64.c
+++ b/arch/x86/kernel/smpboot_64.c
@@ -345,6 +345,14 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta
345 num_starts = 2; 345 num_starts = 2;
346 346
347 /* 347 /*
348 * Paravirt / VMI wants a startup IPI hook here to set up the
349 * target processor state.
350 */
351 startup_ipi_hook(phys_apicid, (unsigned long) start_secondary,
352 (unsigned long) init_rsp);
353
354
355 /*
348 * Run STARTUP IPI loop. 356 * Run STARTUP IPI loop.
349 */ 357 */
350 Dprintk("#startup loops: %d.\n", num_starts); 358 Dprintk("#startup loops: %d.\n", num_starts);
diff --git a/include/asm-x86/smp.h b/include/asm-x86/smp.h
index 513c8571a4a0..4dc271b43767 100644
--- a/include/asm-x86/smp.h
+++ b/include/asm-x86/smp.h
@@ -33,6 +33,9 @@ struct smp_ops {
33extern void set_cpu_sibling_map(int cpu); 33extern void set_cpu_sibling_map(int cpu);
34 34
35#ifdef CONFIG_SMP 35#ifdef CONFIG_SMP
36#ifndef CONFIG_PARAVIRT
37#define startup_ipi_hook(phys_apicid, start_eip, start_esp) do { } while (0)
38#endif
36extern struct smp_ops smp_ops; 39extern struct smp_ops smp_ops;
37 40
38static inline void smp_send_stop(void) 41static inline void smp_send_stop(void)
diff --git a/include/asm-x86/smp_32.h b/include/asm-x86/smp_32.h
index 4fec2feb6ac8..76740def6092 100644
--- a/include/asm-x86/smp_32.h
+++ b/include/asm-x86/smp_32.h
@@ -30,10 +30,6 @@ DECLARE_PER_CPU(u16, cpu_llc_id);
30DECLARE_PER_CPU(u16, x86_cpu_to_apicid); 30DECLARE_PER_CPU(u16, x86_cpu_to_apicid);
31 31
32#ifdef CONFIG_SMP 32#ifdef CONFIG_SMP
33#ifndef CONFIG_PARAVIRT
34#define startup_ipi_hook(phys_apicid, start_eip, start_esp) do { } while (0)
35#endif
36
37/* 33/*
38 * This function is needed by all SMP systems. It must _always_ be valid 34 * This function is needed by all SMP systems. It must _always_ be valid
39 * from the initial startup. We map APIC_BASE very early in page_setup(), 35 * from the initial startup. We map APIC_BASE very early in page_setup(),