• Peter Zijlstra's avatar
    sched/topology, cpuset: Avoid spurious/wrong domain rebuilds · 77d1dfda
    Peter Zijlstra authored
    When disabling cpuset.sched_load_balance we expect to be able to online
    CPUs without generating sched_domains. However this is currently
    completely broken.
    
    What happens is that we generate the sched_domains and then destroy
    them. This is because of the spurious 'default' domain build in
    cpuset_update_active_cpus(). That builds a single machine wide domain
    and then schedules a work to build the 'real' domains. The work then
    finds there are _no_ domains and destroys the lot again.
    
    Furthermore, if there actually were cpusets, building the machine wide
    domain is actively wrong, because it would allow tasks to 'escape' their
    cpuset. Also I don't think its needed, the scheduler really should
    respect the active mask.
    Reported-by: default avatarOfer Levi(SW) <oferle@mellanox.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vineet.Gupta1@synopsys.com <Vineet.Gupta1@synopsys.com>
    Cc: rusty@rustcorp.com.au <rusty@rustcorp.com.au>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    77d1dfda
cpuset.c 76 KB