From 37bebd23ea13cf86796900154b3eb7a3d5ebf04e Mon Sep 17 00:00:00 2001 From: Glauber de Oliveira Costa Date: Wed, 19 Mar 2008 14:24:59 -0300 Subject: [PATCH] --- yaml --- r: 88784 b: refs/heads/master c: d0173aeac4f7fa90a63319b817bd207bdc0ac87e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/smpboot_64.c | 8 ++++++++ trunk/include/asm-x86/smp.h | 3 +++ trunk/include/asm-x86/smp_32.h | 4 ---- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 44d59cede105..686acf1e3c3d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1af8a0c1b3b85b1007f49917ea6a351b7aeb7562 +refs/heads/master: d0173aeac4f7fa90a63319b817bd207bdc0ac87e diff --git a/trunk/arch/x86/kernel/smpboot_64.c b/trunk/arch/x86/kernel/smpboot_64.c index 57ebe6c04305..13ab1123d1d2 100644 --- a/trunk/arch/x86/kernel/smpboot_64.c +++ b/trunk/arch/x86/kernel/smpboot_64.c @@ -344,6 +344,14 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta num_starts = 2; + /* + * Paravirt / VMI wants a startup IPI hook here to set up the + * target processor state. + */ + startup_ipi_hook(phys_apicid, (unsigned long) start_secondary, + (unsigned long) init_rsp); + + /* * Run STARTUP IPI loop. */ diff --git a/trunk/include/asm-x86/smp.h b/trunk/include/asm-x86/smp.h index 513c8571a4a0..4dc271b43767 100644 --- a/trunk/include/asm-x86/smp.h +++ b/trunk/include/asm-x86/smp.h @@ -33,6 +33,9 @@ struct smp_ops { extern void set_cpu_sibling_map(int cpu); #ifdef CONFIG_SMP +#ifndef CONFIG_PARAVIRT +#define startup_ipi_hook(phys_apicid, start_eip, start_esp) do { } while (0) +#endif extern struct smp_ops smp_ops; static inline void smp_send_stop(void) diff --git a/trunk/include/asm-x86/smp_32.h b/trunk/include/asm-x86/smp_32.h index 4fec2feb6ac8..76740def6092 100644 --- a/trunk/include/asm-x86/smp_32.h +++ b/trunk/include/asm-x86/smp_32.h @@ -30,10 +30,6 @@ DECLARE_PER_CPU(u16, cpu_llc_id); DECLARE_PER_CPU(u16, x86_cpu_to_apicid); #ifdef CONFIG_SMP -#ifndef CONFIG_PARAVIRT -#define startup_ipi_hook(phys_apicid, start_eip, start_esp) do { } while (0) -#endif - /* * This function is needed by all SMP systems. It must _always_ be valid * from the initial startup. We map APIC_BASE very early in page_setup(),