diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2013-11-25 04:07:14 -0500 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2013-12-23 01:35:04 -0500 |
commit | ccdaa6e0c86d8f48bf87439e4d6942b7a3e58899 (patch) | |
tree | 6dab9bddf9d3b1abeffe72ce42ac33ba0d409f6d /arch/arc | |
parent | ddf84433f411b612e935a6719ee395bb9dd2221f (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.h | 4 | ||||
-rw-r--r-- | arch/arc/kernel/smp.c | 2 | ||||
-rw-r--r-- | arch/arc/plat-arcfpga/smp.c | 4 |
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 | */ |
52 | struct plat_smp_ops { | 52 | struct 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 | ||
96 | static void iss_model_ipi_clear(int cpu, int irq) | 96 | static 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 | ||
101 | void iss_model_init_early_smp(void) | 101 | void iss_model_init_early_smp(void) |