diff options
| author | Tejun Heo <tj@kernel.org> | 2026-08-14 07:46:46 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-08-14 07:53:02 -1000 |
| commit | d7832ba1a4a4f462ce94c81960adf10f7e87ae7a (patch) | |
| tree | 4e63cb8048168c95c15c82b1bcfd3001258c38a6 /tools/perf/scripts/python/task-analyzer.py | |
| parent | 0c09d1ad81ed55b02f64f4dd2e2e7c83161e5740 (diff) | |
sched_ext: Set up ops.sub_ecaps_updated() dispatch context on the executing CPU
scx_process_sync_ecaps() sets up the dispatch context for
ops.sub_ecaps_updated() in the target cpu's pcpu context recovered from the
llist node. However, the context is per executing cpu: the dispatch kfuncs
resolve it with this_cpu_ptr() and the dispatch buffer lives in it. What the
dispatches target is determined by the rq recorded in the context, not by
which cpu's context it is. Under core scheduling the pick runs balance_one()
for sibling rqs, so a sync processed for a sibling invokes the op with the
executing cpu's context not set up and its dispatch kfuncs misoperate on a
NULL or stale rq.
Set up the executing cpu's dsp_ctx instead, matching scx_dispatch_sched().
The recorded rq keeps the dispatches targeting the synced cpu.
Fixes: b81a6c018cde ("sched_ext: Add sub_ecaps_updated() effective-cap change notifier")
Reported-by: David Carlier <devnexen@gmail.com>
Link: https://lore.kernel.org/all/20260813045931.8691-1-devnexen@gmail.com/
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/task-analyzer.py')
0 files changed, 0 insertions, 0 deletions
