On Thu, 04 Apr 2024 15:39:49 -0700, Fenghua Yu wrote: > drain_workqueue() cannot be called safely in a spinlocked context due to > possible task rescheduling. In the multi-task scenario, calling > queue_work() while drain_workqueue() will lead to a Call Trace as > pushing a work on a draining workqueue is not permitted in spinlocked > context. > Call Trace: > <TASK> > ? __warn+0x7d/0x140 > ? __queue_work+0x2b2/0x440 > ? report_bug+0x1f8/0x200 > ? handle_bug+0x3c/0x70 > ? exc_invalid_op+0x18/0x70 > ? asm_exc_invalid_op+0x1a/0x20 > ? __queue_work+0x2b2/0x440 > queue_work_on+0x28/0x30 > idxd_misc_thread+0x303/0x5a0 [idxd] > ? __schedule+0x369/0xb40 > ? __pfx_irq_thread_fn+0x10/0x10 > ? irq_thread+0xbc/0x1b0 > irq_thread_fn+0x21/0x70 > irq_thread+0x102/0x1b0 > ? preempt_count_add+0x74/0xa0 > ? __pfx_irq_thread_dtor+0x10/0x10 > ? __pfx_irq_thread+0x10/0x10 > kthread+0x103/0x140 > ? __pfx_kthread+0x10/0x10 > ret_from_fork+0x31/0x50 > ? __pfx_kthread+0x10/0x10 > ret_from_fork_asm+0x1b/0x30 > </TASK> > > [...] Applied, thanks! [1/1] dmaengine: idxd: Convert spinlock to mutex to lock evl workqueue commit: d5638de827cff0fce77007e426ec0ffdedf68a44 Best regards, -- ~Vinod