Commit f8e33475 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Michael Ellerman

powerpc/xics/opal: Fix processor numbers in OPAL ICP

When using the OPAL ICP backend we incorrectly pass Linux CPU numbers
rather than HW CPU numbers to OPAL.

Fixes: d7436188 ("powerpc/xics: Add ICP OPAL backend")
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent d81d8258
...@@ -23,10 +23,10 @@ ...@@ -23,10 +23,10 @@
static void icp_opal_teardown_cpu(void) static void icp_opal_teardown_cpu(void)
{ {
int cpu = smp_processor_id(); int hw_cpu = hard_smp_processor_id();
/* Clear any pending IPI */ /* Clear any pending IPI */
opal_int_set_mfrr(cpu, 0xff); opal_int_set_mfrr(hw_cpu, 0xff);
} }
static void icp_opal_flush_ipi(void) static void icp_opal_flush_ipi(void)
...@@ -101,14 +101,16 @@ static void icp_opal_eoi(struct irq_data *d) ...@@ -101,14 +101,16 @@ static void icp_opal_eoi(struct irq_data *d)
static void icp_opal_cause_ipi(int cpu, unsigned long data) static void icp_opal_cause_ipi(int cpu, unsigned long data)
{ {
opal_int_set_mfrr(cpu, IPI_PRIORITY); int hw_cpu = get_hard_smp_processor_id(cpu);
opal_int_set_mfrr(hw_cpu, IPI_PRIORITY);
} }
static irqreturn_t icp_opal_ipi_action(int irq, void *dev_id) static irqreturn_t icp_opal_ipi_action(int irq, void *dev_id)
{ {
int cpu = smp_processor_id(); int hw_cpu = hard_smp_processor_id();
opal_int_set_mfrr(cpu, 0xff); opal_int_set_mfrr(hw_cpu, 0xff);
return smp_ipi_demux(); return smp_ipi_demux();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment