On Thu, Nov 12, 2020 at 09:54:06AM -0800, Paul E. McKenney wrote: > On Thu, Nov 12, 2020 at 05:14:39PM +0100, Marco Elver wrote: [ . . . ] > > | [ 334.160218] BUG: workqueue lockup - pool cpus=0 node=0 flags=0x0 nice=0 stuck for 15s! > > It might be instructive to cause this code to provoke a backtrace. > I suggest adding something like "trigger_single_cpu_backtrace(cpu)" > in kernel/workqueue.c's function named wq_watchdog_timer_fn() > somewhere within its "if" statement that is preceded with the "did we > stall?" comment. Or just search for "BUG: workqueue lockup - pool" > within kernel/workqueue.c. And I did get a small but unexpected gift of time, so here is an (untested) patch. Thanx, Paul ------------------------------------------------------------------------ diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 437935e..f3d4ff7 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -5792,6 +5792,7 @@ static void wq_watchdog_timer_fn(struct timer_list *unused) pr_cont_pool_info(pool); pr_cont(" stuck for %us!\n", jiffies_to_msecs(jiffies - pool_ts) / 1000); + trigger_single_cpu_backtrace(cpu); } }