+14
−0
Loading
When a running task is migrated to another CPU, the stop_task is used to preempt the running task and migrate it. This, expectedly, invokes ops.cpu_release(). If the BPF scheduler then calls scx_bpf_reenqueue_local(), it re-enqueues all tasks on the local DSQ including the task which is being migrated. This creates an unnecessary re-enqueue of a task which is about to be deactivated and re-activated for migration anyway. It can also cause confusion for the BPF scheduler as scx_bpf_task_cpu() of the task and its allowed CPUs may not agree while migration is pending. Signed-off-by:Tejun Heo <tj@kernel.org> Fixes: 245254f7 ("sched_ext: Implement sched_ext_ops.cpu_acquire/release()") Acked-by:
David Vernet <void@manifault.com>