Messages in this thread | | | Date | Tue, 20 Oct 2020 13:25:35 +0100 | From | Daniel Thompson <> | Subject | Re: [PATCH v5 1/5] arm64: Add framework to turn IPI as NMI |
| |
On Tue, Oct 20, 2020 at 04:52:43PM +0530, Sumit Garg wrote: > On Tue, 20 Oct 2020 at 15:38, Marc Zyngier <maz@kernel.org> wrote: > > > > On 2020-10-20 07:43, Sumit Garg wrote: > > > On Mon, 19 Oct 2020 at 17:07, Marc Zyngier <maz@kernel.org> wrote: > > > > [...] > > > > >> > +{ > > >> > + if (!ipi_desc) > > >> > + return; > > >> > + > > >> > + if (is_nmi) { > > >> > + if (!prepare_percpu_nmi(ipi_id)) > > >> > + enable_percpu_nmi(ipi_id, IRQ_TYPE_NONE); > > >> > + } else { > > >> > + enable_percpu_irq(ipi_id, IRQ_TYPE_NONE); > > >> > > >> I'm not keen on this. Normal IRQs can't reliably work, so why do you > > >> even bother with this? > > > > > > Yeah I agree but we need to support existing functionality for kgdb > > > roundup and sysrq backtrace using normal IRQs as well. > > > > When has this become a requirement? I don't really see the point in > > implementing something that is known not to work. > > > > For kgdb: > > Default implementation [1] uses smp_call_function_single_async() which > in turn will invoke IPI as a normal IRQ to roundup CPUs. > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/debug/debug_core.c#n244 > > For sysrq backtrace: > > Default implementation [2] fallbacks to smp_call_function() (IPI as a > normal IRQ) to print backtrace in case architecture doesn't provide > arch_trigger_cpumask_backtrace() hook. > > [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/tty/sysrq.c#n250 > > So in general, IPI as a normal IRQ is still useful for debugging but > it can't debug a core which is stuck in deadlock with interrupts > disabled. > > And since we choose override default implementations for pseudo NMI > support, we need to be backwards compatible for platforms which don't > possess pseudo NMI support.
Do the fallback implementations require a new IPI? The fallbacks could rely on existing mechanisms such as the smp_call_function family.
Daniel.
| |