diff options
author | Paul Menage <menage@google.com> | 2009-04-02 19:57:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-02 22:04:57 -0400 |
commit | db7f47cf4805e30decb0841764b21b7c4000f7dc (patch) | |
tree | 10a7ee574ae29fbd3c78a22bd6700e14efe80e65 | |
parent | a1bc5a4eee990a1f290735c8694d0aebdad095fa (diff) |
cpusets: allow cpusets to be configured/built on non-SMP systems
Allow cpusets to be configured/built on non-SMP systems
Currently it's impossible to build cpusets under UML on x86-64, since
cpusets depends on SMP and x86-64 UML doesn't support SMP.
There's code in cpusets that doesn't depend on SMP. This patch surrounds
the minimum amount of cpusets code with #ifdef CONFIG_SMP in order to
allow cpusets to build/run on UP systems (for testing purposes under UML).
Reviewed-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Paul Menage <menage@google.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | init/Kconfig | 2 | ||||
-rw-r--r-- | kernel/cpuset.c | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/init/Kconfig b/init/Kconfig index 92d410603932..1398a14b0191 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -531,7 +531,7 @@ config CGROUP_DEVICE | |||
531 | 531 | ||
532 | config CPUSETS | 532 | config CPUSETS |
533 | bool "Cpuset support" | 533 | bool "Cpuset support" |
534 | depends on SMP && CGROUPS | 534 | depends on CGROUPS |
535 | help | 535 | help |
536 | This option will let you create and manage CPUSETs which | 536 | This option will let you create and manage CPUSETs which |
537 | allow dynamically partitioning a system into sets of CPUs and | 537 | allow dynamically partitioning a system into sets of CPUs and |
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 3ff910eb30d3..2b93b50cbe4b 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
@@ -517,6 +517,7 @@ static int validate_change(const struct cpuset *cur, const struct cpuset *trial) | |||
517 | return 0; | 517 | return 0; |
518 | } | 518 | } |
519 | 519 | ||
520 | #ifdef CONFIG_SMP | ||
520 | /* | 521 | /* |
521 | * Helper routine for generate_sched_domains(). | 522 | * Helper routine for generate_sched_domains(). |
522 | * Do cpusets a, b have overlapping cpus_allowed masks? | 523 | * Do cpusets a, b have overlapping cpus_allowed masks? |
@@ -811,6 +812,18 @@ static void do_rebuild_sched_domains(struct work_struct *unused) | |||
811 | 812 | ||
812 | put_online_cpus(); | 813 | put_online_cpus(); |
813 | } | 814 | } |
815 | #else /* !CONFIG_SMP */ | ||
816 | static void do_rebuild_sched_domains(struct work_struct *unused) | ||
817 | { | ||
818 | } | ||
819 | |||
820 | static int generate_sched_domains(struct cpumask **domains, | ||
821 | struct sched_domain_attr **attributes) | ||
822 | { | ||
823 | *domains = NULL; | ||
824 | return 1; | ||
825 | } | ||
826 | #endif /* CONFIG_SMP */ | ||
814 | 827 | ||
815 | static DECLARE_WORK(rebuild_sched_domains_work, do_rebuild_sched_domains); | 828 | static DECLARE_WORK(rebuild_sched_domains_work, do_rebuild_sched_domains); |
816 | 829 | ||
@@ -1164,8 +1177,10 @@ int current_cpuset_is_being_rebound(void) | |||
1164 | 1177 | ||
1165 | static int update_relax_domain_level(struct cpuset *cs, s64 val) | 1178 | static int update_relax_domain_level(struct cpuset *cs, s64 val) |
1166 | { | 1179 | { |
1180 | #ifdef CONFIG_SMP | ||
1167 | if (val < -1 || val >= SD_LV_MAX) | 1181 | if (val < -1 || val >= SD_LV_MAX) |
1168 | return -EINVAL; | 1182 | return -EINVAL; |
1183 | #endif | ||
1169 | 1184 | ||
1170 | if (val != cs->relax_domain_level) { | 1185 | if (val != cs->relax_domain_level) { |
1171 | cs->relax_domain_level = val; | 1186 | cs->relax_domain_level = val; |