diff options
| author | Breno Leitao <leitao@debian.org> | 2026-06-26 02:57:54 -0700 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-06-29 08:07:10 -1000 |
| commit | d070f2916ae918c4dddadce6160576c070efcd3e (patch) | |
| tree | 20a9f1cfd3716a88fe9df11bccd25627204f29bf /tools/perf/scripts/python/libxed.py | |
| parent | 1ad5dcee7c819031cf02eaf5e1e03728d0ffeb09 (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/python/libxed.py')
0 files changed, 0 insertions, 0 deletions
