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>
This commit is contained in:
Родитель
ddf84433f4
Коммит
ccdaa6e0c8
|
@ -47,13 +47,13 @@ extern int smp_ipi_irq_setup(int cpu, int irq);
|
||||||
* @info: SoC SMP specific info for /proc/cpuinfo etc
|
* @info: SoC SMP specific info for /proc/cpuinfo etc
|
||||||
* @cpu_kick: For Master to kickstart a cpu (optionally at a PC)
|
* @cpu_kick: For Master to kickstart a cpu (optionally at a PC)
|
||||||
* @ipi_send: To send IPI to a @cpu
|
* @ipi_send: To send IPI to a @cpu
|
||||||
* @ips_clear: To clear IPI received by @cpu at @irq
|
* @ips_clear: To clear IPI received at @irq
|
||||||
*/
|
*/
|
||||||
struct plat_smp_ops {
|
struct plat_smp_ops {
|
||||||
const char *info;
|
const char *info;
|
||||||
void (*cpu_kick)(int cpu, unsigned long pc);
|
void (*cpu_kick)(int cpu, unsigned long pc);
|
||||||
void (*ipi_send)(int cpu);
|
void (*ipi_send)(int cpu);
|
||||||
void (*ipi_clear)(int cpu, int irq);
|
void (*ipi_clear)(int irq);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* TBD: stop exporting it for direct population by platform */
|
/* TBD: stop exporting it for direct population by platform */
|
||||||
|
|
|
@ -310,7 +310,7 @@ irqreturn_t do_IPI(int irq, void *dev_id)
|
||||||
unsigned long ops;
|
unsigned long ops;
|
||||||
|
|
||||||
if (plat_smp_ops.ipi_clear)
|
if (plat_smp_ops.ipi_clear)
|
||||||
plat_smp_ops.ipi_clear(cpu, irq);
|
plat_smp_ops.ipi_clear(irq);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX: is this loop really needed
|
* XXX: is this loop really needed
|
||||||
|
|
|
@ -93,9 +93,9 @@ static void iss_model_ipi_send(int cpu)
|
||||||
idu_irq_assert(cpu);
|
idu_irq_assert(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void iss_model_ipi_clear(int cpu, int irq)
|
static void iss_model_ipi_clear(int irq)
|
||||||
{
|
{
|
||||||
idu_irq_clear(IDU_INTERRUPT_0 + cpu);
|
idu_irq_clear(IDU_INTERRUPT_0 + smp_processor_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
void iss_model_init_early_smp(void)
|
void iss_model_init_early_smp(void)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче