ps3 has 4 ipis per cpu and can use the new smp_request_message_ipi to reduce path length when receiving an ipi.
This has the side effect of setting IRQF_PERCPU. Signed-off-by: Milton Miller <[EMAIL PROTECTED]> Index: next.git/arch/powerpc/platforms/ps3/smp.c =================================================================== --- next.git.orig/arch/powerpc/platforms/ps3/smp.c 2008-10-05 00:20:41.000000000 -0500 +++ next.git/arch/powerpc/platforms/ps3/smp.c 2008-10-05 00:22:50.000000000 -0500 @@ -32,12 +32,6 @@ #define DBG pr_debug #endif -static irqreturn_t ipi_function_handler(int irq, void *msg) -{ - smp_message_recv((int)(long)msg); - return IRQ_HANDLED; -} - /** * ps3_ipi_virqs - a per cpu array of virqs for ipi use */ @@ -45,13 +39,6 @@ static irqreturn_t ipi_function_handler( #define MSG_COUNT 4 static DEFINE_PER_CPU(unsigned int, ps3_ipi_virqs[MSG_COUNT]); -static const char *names[MSG_COUNT] = { - "ipi call", - "ipi reschedule", - "ipi migrate", - "ipi debug brk" -}; - static void do_message_pass(int target, int msg) { int result; @@ -119,8 +106,7 @@ static void __init ps3_smp_setup_cpu(int DBG("%s:%d: (%d, %d) => virq %u\n", __func__, __LINE__, cpu, i, virqs[i]); - result = request_irq(virqs[i], ipi_function_handler, - IRQF_DISABLED, names[i], (void*)(long)i); + result = smp_request_message_ipi(virqs[i], i); if (result) virqs[i] = NO_IRQ; _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev