Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fixes from Ingo Molnar:
"Fix two scheduler topology bugs/oversights on Juno r0 2+4 big.LITTLE
systems"

* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
sched/topology: Allow sched_asym_cpucapacity to be disabled
sched/topology: Don't try to build empty sched domains

+11 -3
+2 -1
kernel/cgroup/cpuset.c
··· 798 798 cpumask_subset(cp->cpus_allowed, top_cpuset.effective_cpus)) 799 799 continue; 800 800 801 - if (is_sched_load_balance(cp)) 801 + if (is_sched_load_balance(cp) && 802 + !cpumask_empty(cp->effective_cpus)) 802 803 csa[csn++] = cp; 803 804 804 805 /* skip @cp's subtree if not a partition root */
+9 -2
kernel/sched/topology.c
··· 1948 1948 static int 1949 1949 build_sched_domains(const struct cpumask *cpu_map, struct sched_domain_attr *attr) 1950 1950 { 1951 - enum s_alloc alloc_state; 1951 + enum s_alloc alloc_state = sa_none; 1952 1952 struct sched_domain *sd; 1953 1953 struct s_data d; 1954 1954 struct rq *rq = NULL; 1955 1955 int i, ret = -ENOMEM; 1956 1956 struct sched_domain_topology_level *tl_asym; 1957 1957 bool has_asym = false; 1958 + 1959 + if (WARN_ON(cpumask_empty(cpu_map))) 1960 + goto error; 1958 1961 1959 1962 alloc_state = __visit_domain_allocation_hell(&d, cpu_map); 1960 1963 if (alloc_state != sa_rootdomain) ··· 2029 2026 rcu_read_unlock(); 2030 2027 2031 2028 if (has_asym) 2032 - static_branch_enable_cpuslocked(&sched_asym_cpucapacity); 2029 + static_branch_inc_cpuslocked(&sched_asym_cpucapacity); 2033 2030 2034 2031 if (rq && sched_debug_enabled) { 2035 2032 pr_info("root domain span: %*pbl (max cpu_capacity = %lu)\n", ··· 2124 2121 */ 2125 2122 static void detach_destroy_domains(const struct cpumask *cpu_map) 2126 2123 { 2124 + unsigned int cpu = cpumask_any(cpu_map); 2127 2125 int i; 2126 + 2127 + if (rcu_access_pointer(per_cpu(sd_asym_cpucapacity, cpu))) 2128 + static_branch_dec_cpuslocked(&sched_asym_cpucapacity); 2128 2129 2129 2130 rcu_read_lock(); 2130 2131 for_each_cpu(i, cpu_map)