aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kernel-doc.py
diff options
context:
space:
mode:
authorAndrea Righi <[email protected]>2025-09-20 13:26:21 +0000
committerTejun Heo <[email protected]>2025-09-22 16:24:44 +0000
commit55ed11b181c43d81ce03b50209e4e7c4a14ba099 (patch)
treebd08e5de8cc7fedbd3ef4ed37355905b4b20ea72 /scripts/kernel-doc.py
parentsched_ext, sched/core: Fix build failure when !FAIR_GROUP_SCHED && EXT_GROUP_... (diff)
downloadkernel-55ed11b181c43d81ce03b50209e4e7c4a14ba099.tar.gz
kernel-55ed11b181c43d81ce03b50209e4e7c4a14ba099.zip
sched_ext: idle: Handle migration-disabled tasks in BPF code
When scx_bpf_select_cpu_dfl()/and() kfuncs are invoked outside of ops.select_cpu() we can't rely on @p->migration_disabled to determine if migration is disabled for the task @p. In fact, migration is always disabled for the current task while running BPF code: __bpf_prog_enter() disables migration and __bpf_prog_exit() re-enables it. To handle this, when @p->migration_disabled == 1, check whether @p is the current task. If so, migration was not disabled before entering the callback, otherwise migration was disabled. This ensures correct idle CPU selection in all cases. The behavior of ops.select_cpu() remains unchanged, because this callback is never invoked for the current task and migration-disabled tasks are always excluded. Example: without this change scx_bpf_select_cpu_and() called from ops.enqueue() always returns -EBUSY; with this change applied, it correctly returns idle CPUs. Fixes: 06efc9fe0b8de ("sched_ext: idle: Handle migration-disabled tasks in idle selection") Cc: [email protected] # v6.16+ Signed-off-by: Andrea Righi <[email protected]> Acked-by: Changwoo Min <[email protected]> Signed-off-by: Tejun Heo <[email protected]>
Diffstat (limited to 'scripts/kernel-doc.py')
0 files changed, 0 insertions, 0 deletions