diff options
| author | Tejun Heo <tj@kernel.org> | 2026-07-24 09:09:28 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-07-24 12:10:21 -1000 |
| commit | f879519db8a2f1b3922f9023daec1642f68df51d (patch) | |
| tree | 3e6a79080ea96b29180a5aab1d5acfcc37c63afa /tools/perf/scripts/python | |
| parent | 457daba18e209fefeb3b88b1a2868c70704950ba (diff) | |
sched_ext: Gate local DSQ reenq on baseline cid access
scx_bpf_dsq_reenq() with an SCX_DSQ_LOCAL_ON target schedules deferred reenq
work on the cid's cpu, raising an IPI when the target rq isn't the locked
one. Nothing checks caps along the way, so a sub-sched holding no cap at all
on a cid can force its cpu to take IPIs and rq lock cycles at will. The
analogous scx_bpf_kick_cid() path gates delivery on SCX_CAP_BASE in
kick_one_cpu() to prevent exactly this.
Apply the same rule at the reenq scheduling point: if the calling sched
lacks SCX_CAP_BASE on the target cid, drop the reenq and count it in the new
SCX_EV_SUB_REENQ_DENIED event. The check is lockless, which is fine: a reenq
slipping through right after a revoke is harmless, and a wrong denial can't
happen - if the caller has seen its ownership of the cpu, the check sees it
too.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
