Merge tag 'wq-for-6.20' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq

Pull workqueue updates from Tejun Heo:

 - Rework the rescuer to process work items one-by-one instead of
   slurping all pending work items in a single pass.

   As there is only one rescuer per workqueue, a single long-blocking
   work item could cause high latency for all tasks queued behind it,
   even after memory pressure is relieved and regular kworkers become
   available to service them.

 - Add CONFIG_BOOTPARAM_WQ_STALL_PANIC build-time option and
   workqueue.panic_on_stall_time parameter for time-based stall panic,
   giving systems more control over workqueue stall handling.

 - Replace BUG_ON() with panic() in the stall panic path for clearer
   intent and more informative output.

* tag 'wq-for-6.20' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: replace BUG_ON with panic in panic_on_wq_watchdog
  workqueue: add time-based panic for stalls
  workqueue: add CONFIG_BOOTPARAM_WQ_STALL_PANIC option
  workqueue: Process extra works in rescuer on memory pressure
  workqueue: Process rescuer work items one-by-one using a cursor
  workqueue: Make send_mayday() take a PWQ argument directly
This commit is contained in:
Linus Torvalds
2026-02-11 13:13:32 -08:00
3 changed files with 149 additions and 36 deletions

View File

@@ -8376,7 +8376,16 @@ Kernel parameters
CONFIG_WQ_WATCHDOG. It sets the number times of the
stall to trigger panic.
The default is 0, which disables the panic on stall.
The default is set by CONFIG_BOOTPARAM_WQ_STALL_PANIC,
which is 0 (disabled) if not configured.
workqueue.panic_on_stall_time=<uint>
Panic when a workqueue stall has been continuous for
the specified number of seconds. Unlike panic_on_stall
which counts accumulated stall events, this triggers
based on the duration of a single continuous stall.
The default is 0, which disables the time-based panic.
workqueue.cpu_intensive_thresh_us=
Per-cpu work items which run for longer than this