[GIT PULL] workqueue changes for-6.5

From: Tejun Heo
Date: Mon Jun 26 2023 - 17:45:35 EST


The following changes since commit ba0ad6ed89fd5dada3b7b65ef2b08e95d449d4ab:

media: nxp: imx8-isi: fix buiding on 32-bit (2023-05-08 09:10:07 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git/ tags/wq-for-6.5

for you to fetch changes up to 18c8ae813156a6855f026de80fffb91e1a28ab3d:

workqueue: Disable per-cpu CPU hog detection when wq_cpu_intensive_thresh_us is 0 (2023-05-25 10:46:53 -1000)

----------------------------------------------------------------
workqueue: Changes for v6.5

* Concurrency-managed per-cpu work items that hog CPUs and delay the
execution of other work items are now automatically detected and excluded
from concurrency management. Reporting on such work items can also be
enabled through a config option.

* Added tools/workqueue/wq_monitor.py which improves visibility into
workqueue usages and behaviors.

* Includes Arnd's minimal fix for gcc-13 enum warning on 32bit compiles.
This conflicts with afa4bb778e48 ("workqueue: clean up WORK_* constant
types, clarify masking") in master. Can be resolved by picking the master
version.

----------------------------------------------------------------
Arnd Bergmann (1):
workqueue: fix enum type for gcc-13

Paul E. McKenney (1):
Further upgrade queue_work_on() comment

Tejun Heo (7):
workqueue: Add pwq->stats[] and a monitoring script
workqueue: Re-order struct worker fields
workqueue: Move worker_set/clr_flags() upwards
workqueue: Improve locking rule description for worker fields
workqueue: Automatically mark CPU-hogging work items CPU_INTENSIVE
workqueue: Report work funcs that trigger automatic CPU_INTENSIVE mechanism
workqueue: Track and monitor per-workqueue CPU time usage

Zqiang (2):
workqueue: Fix WARN_ON_ONCE() triggers in worker_enter_idle()
workqueue: Disable per-cpu CPU hog detection when wq_cpu_intensive_thresh_us is 0

Documentation/admin-guide/kernel-parameters.txt | 12 +
Documentation/core-api/workqueue.rst | 32 +++
include/linux/workqueue.h | 2 +-
kernel/sched/core.c | 3 +
kernel/workqueue.c | 322 +++++++++++++++++++-----
kernel/workqueue_internal.h | 24 +-
lib/Kconfig.debug | 13 +
tools/workqueue/wq_monitor.py | 168 +++++++++++++
8 files changed, 500 insertions(+), 76 deletions(-)
create mode 100644 tools/workqueue/wq_monitor.py