Messages in this thread | | | Date | Mon, 29 Jun 2020 10:37:41 +0100 | From | Marc Zyngier <> | Subject | Re: [PATCH v2 04/17] ARM: Allow IPIs to be handled as normal interrupts |
| |
On 2020-06-25 19:25, Valentin Schneider wrote: > On 24/06/20 20:57, Marc Zyngier wrote: >> @@ -696,9 +696,76 @@ void handle_IPI(int ipinr, struct pt_regs *regs) >> >> if ((unsigned)ipinr < NR_IPI) >> trace_ipi_exit_rcuidle(ipi_types[ipinr]); >> +} >> + >> +/* Legacy version, should go away once all irqchips have been >> converted */ >> +void handle_IPI(int ipinr, struct pt_regs *regs) >> +{ >> + struct pt_regs *old_regs = set_irq_regs(regs); >> + >> + irq_enter(); >> + do_handle_IPI(ipinr); >> + irq_exit(); >> + >> set_irq_regs(old_regs); >> } >> >> +static irqreturn_t ipi_handler(int irq, void *data) >> +{ >> + do_handle_IPI(irq - ipi_irq_base); >> + return IRQ_HANDLED; >> +} >> + >> +static void ipi_send(const struct cpumask *target, unsigned int ipi) >> +{ >> + __ipi_send_mask(ipi_desc[ipi], target); >> +} >> + >> +static void ipi_setup(int cpu) >> +{ >> + if (ipi_irq_base) { >> + int i; >> + >> + for (i = 0; i < nr_ipi; i++) >> + enable_percpu_irq(ipi_irq_base + i, 0); >> + } >> +} >> + >> +static void ipi_teardown(int cpu) >> +{ >> + if (ipi_irq_base) { >> + int i; >> + >> + for (i = 0; i < nr_ipi; i++) >> + disable_percpu_irq(ipi_irq_base + i); >> + } >> +} >> + >> +void __init set_smp_ipi_range(int ipi_base, int n) >> +{ >> + int i; >> + >> + WARN_ON(n < MAX_IPI); >> + nr_ipi = min(n, MAX_IPI); > > > I got confused by that backtrace thing and NR_IPI vs MAX_IPI. > I think I got it now : we don't want to call trace_ipi_raise() for > IPI_CPU_BACKTRACE *but* we still need to alloc the desc and route it > through the generic IPI layers.
Indeed, and I didn't want to have a bizarre "+ 1" hanging about.
> The only difference I can tell is that now we will get some trace > events > for it via the handler entry/exit tracepoints - that shouldn't cause > any > issue.
I hope so. I don't see how you can avoid all tracepoints anyway (if that was the intention).
Thanks,
M. -- Jazz is not dead. It just smells funny...
| |