···904904905905 printk("IPIs requested... \n");906906}907907+908908+void smp_mpic_message_pass(int target, int msg)909909+{910910+ /* make sure we're sending something that translates to an IPI */911911+ if ((unsigned int)msg > 3) {912912+ printk("SMP %d: smp_message_pass: unknown msg %d\n",913913+ smp_processor_id(), msg);914914+ return;915915+ }916916+ switch (target) {917917+ case MSG_ALL:918918+ mpic_send_ipi(msg, 0xffffffff);919919+ break;920920+ case MSG_ALL_BUT_SELF:921921+ mpic_send_ipi(msg, 0xffffffff & ~(1 << smp_processor_id()));922922+ break;923923+ default:924924+ mpic_send_ipi(msg, 1 << target);925925+ break;926926+ }927927+}907928#endif /* CONFIG_SMP */
-22
arch/ppc64/kernel/smp.c
···6969int smt_enabled_at_boot = 1;70707171#ifdef CONFIG_MPIC7272-void smp_mpic_message_pass(int target, int msg)7373-{7474- /* make sure we're sending something that translates to an IPI */7575- if ( msg > 0x3 ){7676- printk("SMP %d: smp_message_pass: unknown msg %d\n",7777- smp_processor_id(), msg);7878- return;7979- }8080- switch ( target )8181- {8282- case MSG_ALL:8383- mpic_send_ipi(msg, 0xffffffff);8484- break;8585- case MSG_ALL_BUT_SELF:8686- mpic_send_ipi(msg, 0xffffffff & ~(1 << smp_processor_id()));8787- break;8888- default:8989- mpic_send_ipi(msg, 1 << target);9090- break;9191- }9292-}9393-9472int __init smp_mpic_probe(void)9573{9674 int nr_cpus;
+3
include/asm-powerpc/mpic.h
···273273/* Send an IPI (non offseted number 0..3) */274274extern void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask);275275276276+/* Send a message (IPI) to a given target (cpu number or MSG_*) */277277+void smp_mpic_message_pass(int target, int msg);278278+276279/* Fetch interrupt from a given mpic */277280extern int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs);278281/* This one gets to the primary mpic */
-1
include/asm-ppc64/smp.h
···77777878extern int smp_mpic_probe(void);7979extern void smp_mpic_setup_cpu(int cpu);8080-extern void smp_mpic_message_pass(int target, int msg);8180extern void smp_generic_kick_cpu(int nr);82818382extern void smp_generic_give_timebase(void);