aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arc
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2013-11-25 04:07:14 -0500
committerVineet Gupta <vgupta@synopsys.com>2013-12-23 01:35:04 -0500
commitccdaa6e0c86d8f48bf87439e4d6942b7a3e58899 (patch)
tree6dab9bddf9d3b1abeffe72ce42ac33ba0d409f6d /arch/arc
parentddf84433f411b612e935a6719ee395bb9dd2221f (diff)
ARC: [SMP] IPI ACK interface doesn't need "self" cpu-id
The interface is confusing, it feels like we are getting "sender" info, whereas it is the "receiver", which can very well be retrived by smp_processor_id(), if need be. Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc')
-rw-r--r--arch/arc/include/asm/smp.h4
-rw-r--r--arch/arc/kernel/smp.c2
-rw-r--r--arch/arc/plat-arcfpga/smp.c4
3 files changed, 5 insertions, 5 deletions
diff --git a/arch/arc/include/asm/smp.h b/arch/arc/include/asm/smp.h
index 9b40e3bdc1ba..5d06eee43ea9 100644
--- a/arch/arc/include/asm/smp.h
+++ b/arch/arc/include/asm/smp.h
@@ -47,13 +47,13 @@ extern int smp_ipi_irq_setup(int cpu, int irq);
47 * @info: SoC SMP specific info for /proc/cpuinfo etc 47 * @info: SoC SMP specific info for /proc/cpuinfo etc
48 * @cpu_kick: For Master to kickstart a cpu (optionally at a PC) 48 * @cpu_kick: For Master to kickstart a cpu (optionally at a PC)
49 * @ipi_send: To send IPI to a @cpu 49 * @ipi_send: To send IPI to a @cpu
50 * @ips_clear: To clear IPI received by @cpu at @irq 50 * @ips_clear: To clear IPI received at @irq
51 */ 51 */
52struct plat_smp_ops { 52struct plat_smp_ops {
53 const char *info; 53 const char *info;
54 void (*cpu_kick)(int cpu, unsigned long pc); 54 void (*cpu_kick)(int cpu, unsigned long pc);
55 void (*ipi_send)(int cpu); 55 void (*ipi_send)(int cpu);
56 void (*ipi_clear)(int cpu, int irq); 56 void (*ipi_clear)(int irq);
57}; 57};
58 58
59/* TBD: stop exporting it for direct population by platform */ 59/* TBD: stop exporting it for direct population by platform */
diff --git a/arch/arc/kernel/smp.c b/arch/arc/kernel/smp.c
index f2fdef964045..9f771b5d66c6 100644
--- a/arch/arc/kernel/smp.c
+++ b/arch/arc/kernel/smp.c
@@ -310,7 +310,7 @@ irqreturn_t do_IPI(int irq, void *dev_id)
310 unsigned long ops; 310 unsigned long ops;
311 311
312 if (plat_smp_ops.ipi_clear) 312 if (plat_smp_ops.ipi_clear)
313 plat_smp_ops.ipi_clear(cpu, irq); 313 plat_smp_ops.ipi_clear(irq);
314 314
315 /* 315 /*
316 * XXX: is this loop really needed 316 * XXX: is this loop really needed
diff --git a/arch/arc/plat-arcfpga/smp.c b/arch/arc/plat-arcfpga/smp.c
index 5e4fe959665c..8a12741f5f7a 100644
--- a/arch/arc/plat-arcfpga/smp.c
+++ b/arch/arc/plat-arcfpga/smp.c
@@ -93,9 +93,9 @@ static void iss_model_ipi_send(int cpu)
93 idu_irq_assert(cpu); 93 idu_irq_assert(cpu);
94} 94}
95 95
96static void iss_model_ipi_clear(int cpu, int irq) 96static void iss_model_ipi_clear(int irq)
97{ 97{
98 idu_irq_clear(IDU_INTERRUPT_0 + cpu); 98 idu_irq_clear(IDU_INTERRUPT_0 + smp_processor_id());
99} 99}
100 100
101void iss_model_init_early_smp(void) 101void iss_model_init_early_smp(void)