summaryrefslogtreecommitdiff
path: root/tools/perf/scripts
diff options
context:
space:
mode:
authorBreno Leitao <leitao@debian.org>2026-06-26 02:57:54 -0700
committerTejun Heo <tj@kernel.org>2026-06-29 08:07:10 -1000
commitd070f2916ae918c4dddadce6160576c070efcd3e (patch)
tree20a9f1cfd3716a88fe9df11bccd25627204f29bf /tools/perf/scripts
parent1ad5dcee7c819031cf02eaf5e1e03728d0ffeb09 (diff)
workqueue: defer the worker wakeup outside pool->lock in __queue_work()
__queue_work() is the enqueue hot path: it inserts the work item and calls kick_pool() while holding pool->lock. kick_pool() ends in a wakeup, which takes the target task's rq->lock, so rq->lock nests under pool->lock on every enqueue that wakes a worker on a contended unbound pool. Use kick_pool_pick() to select and claim the worker under pool->lock and issue the wakeup with wake_up_process() right after dropping the lock. Signed-off-by: Breno Leitao <leitao@debian.org> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/perf/scripts')
0 files changed, 0 insertions, 0 deletions