On Fri, 18 Aug 2023 16:38:57 +0100 Steven Price <steven.price@xxxxxxx> wrote: > > +/** > > + * sched_queue_work() - Queue a scheduler work. > > + * @sched: Scheduler object. > > + * @wname: Work name. > > + * > > + * Conditionally queues a scheduler work if no reset is pending/in-progress. > > + */ > > +#define sched_queue_work(sched, wname) \ > > + do { \ > > + if (sched->reset.in_progress || \ > > Is this missing a '!'? This executes if a reset is in progress. What?! I wonder how this went unnoticed. I guess the fact I only use scheduler-level works for user sync object signaling (which are not used yet) and ping (I'm sure I tested it, but it must have been before I extended the reset logic...) could explain that, but still... > > > + !panthor_device_reset_is_pending((sched)->ptdev)) \ > > + queue_work((sched)->wq, &(sched)->wname ## _work); \ > > + } while (0)