summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/bin/export-to-sqlite-record
diff options
context:
space:
mode:
authorBreno Leitao <leitao@debian.org>2026-06-30 09:15:20 -0700
committerTejun Heo <tj@kernel.org>2026-06-30 06:36:40 -1000
commit7ddfa24d3f12ab9f3ac0e0b4e8e573ff45574d86 (patch)
treecb617956ddbd875e113aff7b833f5c13290fc499 /tools/perf/scripts/python/bin/export-to-sqlite-record
parentf504706a25eb3462cc00c76340feb6751f9e37f9 (diff)
workqueue: only show running workers in stall diagnostics
show_cpu_pool_busy_workers() dumps every in-flight worker in the pool's busy_hash, including workers that are not currently running on the CPU. Restore the task_is_running() filter so only running workers are dumped. When no running worker is found the pool may be stuck, unable to wake an idle worker to process pending work, and the watchdog would otherwise give no feedback. Add show_pool_no_running_worker() to report the pool id, CPU, idle state, and worker counts in that case. The pool info message is printed inside pool->lock using printk_deferred_enter/exit, the same pattern used by the existing busy-worker loop, to avoid deadlocks with console drivers that queue work while holding locks also taken in their write paths. This has been running on the Meta fleet for a while and caught some real issues, for instance EFI stalls stalling the workqueue [1]. Link: https://lore.kernel.org/all/20260616-efi_timeout-v3-0-76dd1d26657b@debian.org/ [1] Suggested-by: Petr Mladek <pmladek@suse.com> Fixes: 8823eaef45da7 ("workqueue: Show all busy workers in stall diagnostics") Reviewed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Breno Leitao <leitao@debian.org> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/bin/export-to-sqlite-record')
0 files changed, 0 insertions, 0 deletions