From 9794cb10dd42dfa009a00494caeb468235448698 Mon Sep 17 00:00:00 2001 From: Glauber Costa Date: Mon, 3 Mar 2008 14:12:34 -0300 Subject: [PATCH] --- yaml --- r: 88702 b: refs/heads/master c: 8678969e60d80527d96d2af0011e72c87c9c1fe5 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/smp_64.c | 7 +++++-- trunk/include/asm-x86/smp.h | 5 +++++ trunk/include/asm-x86/smp_32.h | 4 ---- trunk/include/asm-x86/smp_64.h | 2 -- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 574fee5faa06..ef6745178bca 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c76cb36846da6d5d6fb2951968869faa4fd1001d +refs/heads/master: 8678969e60d80527d96d2af0011e72c87c9c1fe5 diff --git a/trunk/arch/x86/kernel/smp_64.c b/trunk/arch/x86/kernel/smp_64.c index 80dba12b56af..fd1816123496 100644 --- a/trunk/arch/x86/kernel/smp_64.c +++ b/trunk/arch/x86/kernel/smp_64.c @@ -290,8 +290,9 @@ void flush_tlb_all(void) * anything. Worst case is that we lose a reschedule ... */ -void smp_send_reschedule(int cpu) +static void native_smp_send_reschedule(int cpu) { + WARN_ON(cpu_is_offline(cpu)); send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR); } @@ -528,5 +529,7 @@ asmlinkage void smp_call_function_interrupt(void) } } -struct smp_ops smp_ops; +struct smp_ops smp_ops = { + .smp_send_reschedule = native_smp_send_reschedule, +}; EXPORT_SYMBOL_GPL(smp_ops); diff --git a/trunk/include/asm-x86/smp.h b/trunk/include/asm-x86/smp.h index ee98beeb7511..28f33c03d793 100644 --- a/trunk/include/asm-x86/smp.h +++ b/trunk/include/asm-x86/smp.h @@ -23,6 +23,11 @@ struct smp_ops { #ifdef CONFIG_SMP extern struct smp_ops smp_ops; + +static inline void smp_send_reschedule(int cpu) +{ + smp_ops.smp_send_reschedule(cpu); +} #endif #ifdef CONFIG_X86_32 diff --git a/trunk/include/asm-x86/smp_32.h b/trunk/include/asm-x86/smp_32.h index 74755e8ffc77..c60a3dd3e802 100644 --- a/trunk/include/asm-x86/smp_32.h +++ b/trunk/include/asm-x86/smp_32.h @@ -60,10 +60,6 @@ static inline void smp_send_stop(void) { smp_ops.smp_send_stop(); } -static inline void smp_send_reschedule(int cpu) -{ - smp_ops.smp_send_reschedule(cpu); -} static inline int smp_call_function_mask(cpumask_t mask, void (*func) (void *info), void *info, int wait) diff --git a/trunk/include/asm-x86/smp_64.h b/trunk/include/asm-x86/smp_64.h index 284f701f2a8b..b9204584aa06 100644 --- a/trunk/include/asm-x86/smp_64.h +++ b/trunk/include/asm-x86/smp_64.h @@ -65,8 +65,6 @@ static inline int num_booting_cpus(void) return cpus_weight(cpu_callout_map); } -extern void smp_send_reschedule(int cpu); - #else /* CONFIG_SMP */ extern unsigned int boot_cpu_id;