aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Menage <menage@google.com>2009-04-02 19:57:55 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-02 22:04:57 -0400
commitdb7f47cf4805e30decb0841764b21b7c4000f7dc (patch)
tree10a7ee574ae29fbd3c78a22bd6700e14efe80e65
parenta1bc5a4eee990a1f290735c8694d0aebdad095fa (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/Kconfig2
-rw-r--r--kernel/cpuset.c15
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
532config CPUSETS 532config 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 */
816static void do_rebuild_sched_domains(struct work_struct *unused)
817{
818}
819
820static 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
815static DECLARE_WORK(rebuild_sched_domains_work, do_rebuild_sched_domains); 828static 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
1165static int update_relax_domain_level(struct cpuset *cs, s64 val) 1178static 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;