Re: [RFC] IRQ handlers run with some high-priority interrupts(not NMI) enabled on some platform

From: Michael Schmitz
Date: Thu Feb 18 2021 - 17:12:14 EST


On 19/02/21 12:19 am, Arnd Bergmann wrote:

drivers/net/ethernet/8390/apne.c
drivers/net/ethernet/8390/ax88796.c
drivers/net/ethernet/8390/hydra.c
drivers/net/ethernet/8390/mac8390.c
drivers/net/ethernet/8390/ne.c
drivers/net/ethernet/8390/zorro8390.c
[...]
Most of these are normal short-lived interrupts that only transfer
a few bytes or schedule deferred processing of some sort.
Most of the scsi and network drivers process the data in
a softirq, so those are generally fine here, but I do see that 8390
(ne2000) ethernet and the drivers/ide drivers do transfer their
data in hardirq context.

Arnd

8390 ethernet drivers are widely used on m68k platforms (Amiga and Atari). At least on Amiga, the corresponding interrupt is a hardirq so I'd advise caution. That said, the 8390 drivers might benefit from some refactoring (the way these drivers are compiled does prevent e.g. the APNE driver from being used with two different variants of PCMCIA interfaces. I had begun some work on making IO primitives runtime selected two years ago but that ended up looking too ugly ...).

Can't recall what IPL the 8390 interrupts operate at - Geert?

Regarding allowing preemption of hardirqs - at least in 2017, that was considered perfectly OK (see Linus' comment on https://lore.kernel.org/patchwork/patch/794954/). I concur with Finn on this one - we did look for potential issues with the way irqs_disabled() is defined on m68k (for me, in the context of the above bug that caused memory corruption on my system), and found none.

Cheers,

    Michael