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; |
