diff options
Diffstat (limited to 'arch/powerpc/sysdev/xics/icp-native.c')
-rw-r--r-- | arch/powerpc/sysdev/xics/icp-native.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/arch/powerpc/sysdev/xics/icp-native.c b/arch/powerpc/sysdev/xics/icp-native.c index 246500eefbfd..1f15ad436140 100644 --- a/arch/powerpc/sysdev/xics/icp-native.c +++ b/arch/powerpc/sysdev/xics/icp-native.c | |||
@@ -134,12 +134,8 @@ static unsigned int icp_native_get_irq(void) | |||
134 | 134 | ||
135 | #ifdef CONFIG_SMP | 135 | #ifdef CONFIG_SMP |
136 | 136 | ||
137 | static void icp_native_message_pass(int cpu, int msg) | 137 | static void icp_native_cause_ipi(int cpu, unsigned long data) |
138 | { | 138 | { |
139 | unsigned long *tgt = &per_cpu(xics_ipi_message, cpu); | ||
140 | |||
141 | set_bit(msg, tgt); | ||
142 | mb(); | ||
143 | icp_native_set_qirr(cpu, IPI_PRIORITY); | 139 | icp_native_set_qirr(cpu, IPI_PRIORITY); |
144 | } | 140 | } |
145 | 141 | ||
@@ -149,7 +145,7 @@ static irqreturn_t icp_native_ipi_action(int irq, void *dev_id) | |||
149 | 145 | ||
150 | icp_native_set_qirr(cpu, 0xff); | 146 | icp_native_set_qirr(cpu, 0xff); |
151 | 147 | ||
152 | return xics_ipi_dispatch(cpu); | 148 | return smp_ipi_demux(); |
153 | } | 149 | } |
154 | 150 | ||
155 | #endif /* CONFIG_SMP */ | 151 | #endif /* CONFIG_SMP */ |
@@ -267,7 +263,7 @@ static const struct icp_ops icp_native_ops = { | |||
267 | .flush_ipi = icp_native_flush_ipi, | 263 | .flush_ipi = icp_native_flush_ipi, |
268 | #ifdef CONFIG_SMP | 264 | #ifdef CONFIG_SMP |
269 | .ipi_action = icp_native_ipi_action, | 265 | .ipi_action = icp_native_ipi_action, |
270 | .message_pass = icp_native_message_pass, | 266 | .cause_ipi = icp_native_cause_ipi, |
271 | #endif | 267 | #endif |
272 | }; | 268 | }; |
273 | 269 | ||