]> git.baikalelectronics.ru Git - kernel.git/commit
sched: arch_reinit_sched_domains() must destroy domains to force rebuild
authorMax Krasnyansky <maxk@qualcomm.com>
Fri, 29 Aug 2008 20:11:41 +0000 (13:11 -0700)
committerIngo Molnar <mingo@elte.hu>
Sat, 6 Sep 2008 17:22:15 +0000 (19:22 +0200)
commita7a308c9d789dd70d50fe3345379b4e4221aef40
treeea4f847f2a29face1b5774c6d44ec41bf92e302b
parente9474542ae5a04ca0851197afb649d97ba4a6652
sched: arch_reinit_sched_domains() must destroy domains to force rebuild

What I realized recently is that calling rebuild_sched_domains() in
arch_reinit_sched_domains() by itself is not enough when cpusets are enabled.
partition_sched_domains() code is trying to avoid unnecessary domain rebuilds
and will not actually rebuild anything if new domain masks match the old ones.

What this means is that doing
     echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
on a system with cpusets enabled will not take affect untill something changes
in the cpuset setup (ie new sets created or deleted).

This patch fixes restore correct behaviour where domains must be rebuilt in
order to enable MC powersaving flags.

Test on quad-core Core2 box with both CONFIG_CPUSETS and !CONFIG_CPUSETS.
Also tested on dual-core Core2 laptop. Lockdep is happy and things are working
as expected.

Signed-off-by: Max Krasnyansky <maxk@qualcomm.com>
Tested-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/cpuset.h
kernel/sched.c