Re: [PATCH v4] dmaengine: idxd: Convert spinlock to mutex to lock evl workqueue

From: Vinod Koul
Date: Sun Apr 07 2024 - 12:38:32 EST



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