Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb94fc2b authored by Geoff Levand's avatar Geoff Levand Committed by Benjamin Herrenschmidt
Browse files

powerpc/ps3: Use smp_request_message_ipi



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: default avatarMilton Miller <miltonm@bga.com>
Acked-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 14f966e7
Loading
Loading
Loading
Loading
+1 −15
Original line number Diff line number Diff line
@@ -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(int irq, void *msg)
#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 cpu)
		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;