Re: [PATCH net-next v2] declance: Remove IRQF_ONESHOT

Maciej W. Rozycki
2026-05-05T14:00:58Z

On Tue, 5 May 2026, Sebastian Andrzej Siewior wrote:

> > > With force-threading enabled, the interrupt handler is masked in the
> > > IRQ-chip until after the threaded-handler run. See the cond_unmask_irq()
> > > in handle_level_irq() or the mask_irq() & cond_unmask_eoi_irq() in
> > > handle_fasteoi_ack_irq(). That means the hw-IRQ is done, the thread is
> > > running with interrupts enabled but the hw-IRQ will not trigger again.
> > > The cited commit 5a4a4ad851dd8 ("MIPS: Mark cascade and low level
> > > interrupts IRQF_NO_THREAD") is different as it acts on cascading
> > > interrupts which is not what we have here.
> >
> > Not with the current handle_fasteoi_irq() handler.
>
> Why? There is a mask_irq() in the ONESHOT case.

Yes, in that case there is.

> > > If you request a threaded interrupt you must either provide two handler
> > > and the primary must mask the interrupt so it does not fire again or you
> > > pass a flag such as IRQF_ONESHOT and which point the IRQ subsystem will
> > > mask the IRQ within the irqchip so it does not fire again.
> >
> > Well, yes, but you've just removed the flag from this driver, so either
> > the flag has to reinstated or the driver adjusted differently for the
> > threaded case to be handled correctly.
>
> But there is a plain request_irq() so the handler is invoked directly in
> hardirq context with disabled interrupts. In forced-threaded context,
> such as on PREEMPT_RT, the IRQF_ONESHOT is added.

Ah, I missed that IRQF_ONESHOT bit in irq_setup_forced_threading(). So
it seems like we're good. I'll proceed with the original change then to
just amend IOASIC DMA IRQ documentation. Thank you for patience again.

Maciej