• Tejun Heo's avatar
    sched_ext: Disallow loading BPF scheduler if isolcpus= domain isolation is in effect · 9f391f94
    Tejun Heo authored
    sched_domains regulate the load balancing for sched_classes. A machine can
    be partitioned into multiple sections that are not load-balanced across
    using either isolcpus= boot param or cpuset partitions. In such cases, tasks
    that are in one partition are expected to stay within that partition.
    
    cpuset configured partitions are always reflected in each member task's
    cpumask. As SCX always honors the task cpumasks, the BPF scheduler is
    automatically in compliance with the configured partitions.
    
    However, for isolcpus= domain isolation, the isolated CPUs are simply
    omitted from the top-level sched_domain[s] without further restrictions on
    tasks' cpumasks, so, for example, a task currently running in an isolated
    CPU may have more CPUs in its allowed cpumask while expected to remain on
    the same CPU.
    
    There is no straightforward way to enforce this partitioning preemptively on
    BPF schedulers and erroring out after a violation can be surprising.
    isolcpus= domain isolation is being replaced with cpuset partitions anyway,
    so keep it simple and simply disallow loading a BPF scheduler if isolcpus=
    domain isolation is in effect.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Link: http://lkml.kernel.org/r/20240626082342.GY31592@noisy.programming.kicks-ass.net
    Cc: David Vernet <void@manifault.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Frederic Weisbecker <frederic@kernel.org>
    9f391f94
build_policy.c 1.46 KB