Re: [PATCH 3/3] kernel/irq/manage.c: disable_irq() might sleep.
From: Sverdlin, Alexander
Date: Fri Dec 23 2022 - 06:22:41 EST
Hello Manfred,
On Fri, 2022-12-23 at 11:54 +0100, Manfred Spraul wrote:
> > I'm not sure about this, latest wait_event() inside
> > synchronize_irq()
> > has it already.
> >
> > > if (!__disable_irq_nosync(irq))
> > > synchronize_irq(irq);
> > > }
>
> That is the whole point: might_sleep() should be always called. We
> are
> clarifying an API definition. Everyone who uses disable_irq() from
> non-sleeping context should get a warning, 100% of the time.
>
> Not just within synchronize_irq() if there is an active threaded irq
> handler.
As I read it, it will warn almost always, even without threaded handler
configured, only in some error cases it will not warn. I'm just
thinking that disable_irq() might be in a hot path and this is being
checked anyway two calls deeper. But I don't have a strong opinion on
that and it looks like it has been taken into mm tree already.
--
Alexander Sverdlin
Siemens AG
www.siemens.com