aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/xics/icp-native.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/sysdev/xics/icp-native.c')
-rw-r--r--arch/powerpc/sysdev/xics/icp-native.c10
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
137static void icp_native_message_pass(int cpu, int msg) 137static 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