Forráskód Böngészése

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: d74361881f0d ("powerpc/xics: Add ICP OPAL backend")
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Benjamin Herrenschmidt 9 éve
szülő
commit
f8e33475b0
1 módosított fájl, 7 hozzáadás és 5 törlés
  1. 7 5
      arch/powerpc/sysdev/xics/icp-opal.c

+ 7 - 5
arch/powerpc/sysdev/xics/icp-opal.c

@@ -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)
 
 
 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();
 }
 }