On Sun, Dec 05, 2021 at 05:35:35PM +0000, Jonathan Cameron wrote: > On Wed, 24 Nov 2021 09:48:22 +0100 > Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> wrote: > > > On Sun, Oct 17, 2021 at 06:22:09PM +0100, Jonathan Cameron wrote: > > > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > > > > > IIO triggers are software IRQ chips that split an incoming IRQ into > > > separate IRQs routed to all devices using the trigger. > > > When all consumers are done then a trigger callback reenable() is > > > called. There are a few circumstances under which this can happen > > > in atomic context. > > > > > > 1) A single user of the trigger that calls the iio_trigger_done() > > > function from interrupt context. > > > 2) A race between disconnecting the last device from a trigger and > > > the trigger itself sucessfully being disabled. > > > > > > To avoid a resulting scheduling whilst atomic, close this corner > > > by using schedule_work() to ensure the reenable is not done in atomic > > > context. > > > > > > Note that drivers must be careful to manage the interaction of > > > set_state() and reenable() callbacks to ensure appropriate reference > > > counting if they are relying on the same hardware controls. > > > > > > Completely untested beyond building. Given it is Sunday evening > > > very high chance of it being entirely wrong. The potential race > > > conditions around this were giving me a headache, but I think this > > > is at least a step in the right direction and should work for Oleksij's > > > case. > > > > > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > > Cc: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> > > > Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx> > > > Cc: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > > > > Tested-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> > > > > Works for me... Thank you! :) > > This patch is in the category that make me nervous, so I'm > not going to rush it in as a fix. I've queued it up for the next > merge window (and marked it for Stable). Hopefully any issues will > shake out before it hits a release kernel. > > Applied to the togreg branch of iio.git and pushed out as testing. Thx! > Oleksij, what do you want to do about the work around you had? > If you think it is a good cleanup, please resend so we get it to the > top of people's inboxes! I'm on vacation right now. Will do it early next year. Regards, Oleksij -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |