Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 283cb41f authored by Jason Low's avatar Jason Low Committed by Tejun Heo
Browse files

cpuset: Fix cpuset sched_relax_domain_level



The cpuset.sched_relax_domain_level can control how far we do
immediate load balancing on a system. However, it was found on recent
kernels that echo'ing a value into cpuset.sched_relax_domain_level
did not reduce any immediate load balancing.

The reason this occurred was because the update_domain_attr_tree() traversal
did not update for the "top_cpuset". This resulted in nothing being changed
when modifying the sched_relax_domain_level parameter.

This patch is able to address that problem by having update_domain_attr_tree()
allow updates for the root in the cpuset traversal.

Fixes: fc560a26 ("cpuset: replace cpuset->stack_list with cpuset_for_each_descendant_pre()")
Cc: <stable@vger.kernel.org> # 3.9+
Signed-off-by: default avatarJason Low <jason.low2@hp.com>
Signed-off-by: default avatarZefan Li <lizefan@huawei.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Tested-by: default avatarSerge Hallyn <serge.hallyn@canonical.com>
parent 79063bff
Loading
Loading
Loading
Loading
+0 −3
Original line number Original line Diff line number Diff line
@@ -548,9 +548,6 @@ static void update_domain_attr_tree(struct sched_domain_attr *dattr,


	rcu_read_lock();
	rcu_read_lock();
	cpuset_for_each_descendant_pre(cp, pos_css, root_cs) {
	cpuset_for_each_descendant_pre(cp, pos_css, root_cs) {
		if (cp == root_cs)
			continue;

		/* skip the whole subtree if @cp doesn't have any CPU */
		/* skip the whole subtree if @cp doesn't have any CPU */
		if (cpumask_empty(cp->cpus_allowed)) {
		if (cpumask_empty(cp->cpus_allowed)) {
			pos_css = css_rightmost_descendant(pos_css);
			pos_css = css_rightmost_descendant(pos_css);