ARC: [SMP] unify cpu private IRQ requests (TIMER/IPI)
The current cpu-private IRQ registration is ugly as it requires need to expose arch_unmask_irq() outside of intc code. So switch to percpu IRQ APIs: -request_percpu_irq [boot core] -enable_percpu_irq [all cores] Encapsulated in helper arc_request_percpu_irq() Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
@@ -136,7 +136,7 @@ void start_kernel_secondary(void)
|
||||
pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
|
||||
|
||||
if (machine_desc->init_smp)
|
||||
machine_desc->init_smp(smp_processor_id());
|
||||
machine_desc->init_smp(cpu);
|
||||
|
||||
arc_local_timer_setup();
|
||||
|
||||
@@ -338,18 +338,11 @@ irqreturn_t do_IPI(int irq, void *dev_id)
|
||||
*/
|
||||
static DEFINE_PER_CPU(int, ipi_dev);
|
||||
|
||||
static struct irqaction arc_ipi_irq = {
|
||||
.name = "IPI Interrupt",
|
||||
.flags = IRQF_PERCPU,
|
||||
.handler = do_IPI,
|
||||
};
|
||||
|
||||
int smp_ipi_irq_setup(int cpu, int irq)
|
||||
{
|
||||
if (!cpu)
|
||||
return setup_irq(irq, &arc_ipi_irq);
|
||||
else
|
||||
arch_unmask_irq(irq);
|
||||
int *dev = per_cpu_ptr(&ipi_dev, cpu);
|
||||
|
||||
arc_request_percpu_irq(irq, cpu, do_IPI, "IPI Interrupt", dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user