diff options
author | David S. Miller <davem@davemloft.net> | 2008-04-29 04:14:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-29 04:14:10 -0400 |
commit | 0a9e9b110c4ef05ab6c35440e2779ec4aa2c65e6 (patch) | |
tree | 7203abaa5ec0114694846971e667152078a8bdaa /arch | |
parent | ceb4e8e44be90d507eadfc023272269b6ca494cf (diff) |
sparc32: Kill smp_message_pass() and related code.
Completely unused, and it just makes the SMP message
passing code on 32-bit sparc look more complex than
it is.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/kernel/sun4d_smp.c | 32 | ||||
-rw-r--r-- | arch/sparc/kernel/sun4m_smp.c | 45 |
2 files changed, 0 insertions, 77 deletions
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c index 0def48158c7d..dfde77ff0848 100644 --- a/arch/sparc/kernel/sun4d_smp.c +++ b/arch/sparc/kernel/sun4d_smp.c | |||
@@ -335,37 +335,6 @@ void smp4d_cross_call_irq(void) | |||
335 | ccall_info.processors_out[i] = 1; | 335 | ccall_info.processors_out[i] = 1; |
336 | } | 336 | } |
337 | 337 | ||
338 | static int smp4d_stop_cpu_sender; | ||
339 | |||
340 | static void smp4d_stop_cpu(void) | ||
341 | { | ||
342 | int me = hard_smp4d_processor_id(); | ||
343 | |||
344 | if (me != smp4d_stop_cpu_sender) | ||
345 | while(1) barrier(); | ||
346 | } | ||
347 | |||
348 | /* Cross calls, in order to work efficiently and atomically do all | ||
349 | * the message passing work themselves, only stopcpu and reschedule | ||
350 | * messages come through here. | ||
351 | */ | ||
352 | void smp4d_message_pass(int target, int msg, unsigned long data, int wait) | ||
353 | { | ||
354 | int me = hard_smp4d_processor_id(); | ||
355 | |||
356 | SMP_PRINTK(("smp4d_message_pass %d %d %08lx %d\n", target, msg, data, wait)); | ||
357 | if (msg == MSG_STOP_CPU && target == MSG_ALL_BUT_SELF) { | ||
358 | unsigned long flags; | ||
359 | static DEFINE_SPINLOCK(stop_cpu_lock); | ||
360 | spin_lock_irqsave(&stop_cpu_lock, flags); | ||
361 | smp4d_stop_cpu_sender = me; | ||
362 | smp4d_cross_call((smpfunc_t)smp4d_stop_cpu, 0, 0, 0, 0, 0); | ||
363 | spin_unlock_irqrestore(&stop_cpu_lock, flags); | ||
364 | } | ||
365 | printk("Yeeee, trying to send SMP msg(%d) to %d on cpu %d\n", msg, target, me); | ||
366 | panic("Bogon SMP message pass."); | ||
367 | } | ||
368 | |||
369 | void smp4d_percpu_timer_interrupt(struct pt_regs *regs) | 338 | void smp4d_percpu_timer_interrupt(struct pt_regs *regs) |
370 | { | 339 | { |
371 | struct pt_regs *old_regs; | 340 | struct pt_regs *old_regs; |
@@ -439,7 +408,6 @@ void __init sun4d_init_smp(void) | |||
439 | BTFIXUPSET_BLACKBOX(hard_smp_processor_id, smp4d_blackbox_id); | 408 | BTFIXUPSET_BLACKBOX(hard_smp_processor_id, smp4d_blackbox_id); |
440 | BTFIXUPSET_BLACKBOX(load_current, smp4d_blackbox_current); | 409 | BTFIXUPSET_BLACKBOX(load_current, smp4d_blackbox_current); |
441 | BTFIXUPSET_CALL(smp_cross_call, smp4d_cross_call, BTFIXUPCALL_NORM); | 410 | BTFIXUPSET_CALL(smp_cross_call, smp4d_cross_call, BTFIXUPCALL_NORM); |
442 | BTFIXUPSET_CALL(smp_message_pass, smp4d_message_pass, BTFIXUPCALL_NORM); | ||
443 | BTFIXUPSET_CALL(__hard_smp_processor_id, __smp4d_processor_id, BTFIXUPCALL_NORM); | 411 | BTFIXUPSET_CALL(__hard_smp_processor_id, __smp4d_processor_id, BTFIXUPCALL_NORM); |
444 | 412 | ||
445 | for (i = 0; i < NR_CPUS; i++) { | 413 | for (i = 0; i < NR_CPUS; i++) { |
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c index 0b9407267162..ffb875aacb7e 100644 --- a/arch/sparc/kernel/sun4m_smp.c +++ b/arch/sparc/kernel/sun4m_smp.c | |||
@@ -34,8 +34,6 @@ | |||
34 | 34 | ||
35 | #include "irq.h" | 35 | #include "irq.h" |
36 | 36 | ||
37 | #define IRQ_RESCHEDULE 13 | ||
38 | #define IRQ_STOP_CPU 14 | ||
39 | #define IRQ_CROSS_CALL 15 | 37 | #define IRQ_CROSS_CALL 15 |
40 | 38 | ||
41 | extern ctxd_t *srmmu_ctx_table_phys; | 39 | extern ctxd_t *srmmu_ctx_table_phys; |
@@ -232,48 +230,6 @@ void smp4m_irq_rotate(int cpu) | |||
232 | set_irq_udt(next); | 230 | set_irq_udt(next); |
233 | } | 231 | } |
234 | 232 | ||
235 | /* Cross calls, in order to work efficiently and atomically do all | ||
236 | * the message passing work themselves, only stopcpu and reschedule | ||
237 | * messages come through here. | ||
238 | */ | ||
239 | void smp4m_message_pass(int target, int msg, unsigned long data, int wait) | ||
240 | { | ||
241 | static unsigned long smp_cpu_in_msg[NR_CPUS]; | ||
242 | cpumask_t mask; | ||
243 | int me = smp_processor_id(); | ||
244 | int irq, i; | ||
245 | |||
246 | if(msg == MSG_RESCHEDULE) { | ||
247 | irq = IRQ_RESCHEDULE; | ||
248 | |||
249 | if(smp_cpu_in_msg[me]) | ||
250 | return; | ||
251 | } else if(msg == MSG_STOP_CPU) { | ||
252 | irq = IRQ_STOP_CPU; | ||
253 | } else { | ||
254 | goto barf; | ||
255 | } | ||
256 | |||
257 | smp_cpu_in_msg[me]++; | ||
258 | if(target == MSG_ALL_BUT_SELF || target == MSG_ALL) { | ||
259 | mask = cpu_online_map; | ||
260 | if(target == MSG_ALL_BUT_SELF) | ||
261 | cpu_clear(me, mask); | ||
262 | for(i = 0; i < 4; i++) { | ||
263 | if (cpu_isset(i, mask)) | ||
264 | set_cpu_int(i, irq); | ||
265 | } | ||
266 | } else { | ||
267 | set_cpu_int(target, irq); | ||
268 | } | ||
269 | smp_cpu_in_msg[me]--; | ||
270 | |||
271 | return; | ||
272 | barf: | ||
273 | printk("Yeeee, trying to send SMP msg(%d) on cpu %d\n", msg, me); | ||
274 | panic("Bogon SMP message pass."); | ||
275 | } | ||
276 | |||
277 | static struct smp_funcall { | 233 | static struct smp_funcall { |
278 | smpfunc_t func; | 234 | smpfunc_t func; |
279 | unsigned long arg1; | 235 | unsigned long arg1; |
@@ -413,6 +369,5 @@ void __init sun4m_init_smp(void) | |||
413 | BTFIXUPSET_BLACKBOX(hard_smp_processor_id, smp4m_blackbox_id); | 369 | BTFIXUPSET_BLACKBOX(hard_smp_processor_id, smp4m_blackbox_id); |
414 | BTFIXUPSET_BLACKBOX(load_current, smp4m_blackbox_current); | 370 | BTFIXUPSET_BLACKBOX(load_current, smp4m_blackbox_current); |
415 | BTFIXUPSET_CALL(smp_cross_call, smp4m_cross_call, BTFIXUPCALL_NORM); | 371 | BTFIXUPSET_CALL(smp_cross_call, smp4m_cross_call, BTFIXUPCALL_NORM); |
416 | BTFIXUPSET_CALL(smp_message_pass, smp4m_message_pass, BTFIXUPCALL_NORM); | ||
417 | BTFIXUPSET_CALL(__hard_smp_processor_id, __smp4m_processor_id, BTFIXUPCALL_NORM); | 372 | BTFIXUPSET_CALL(__hard_smp_processor_id, __smp4m_processor_id, BTFIXUPCALL_NORM); |
418 | } | 373 | } |