diff options
author | Paul Jackson <pj@sgi.com> | 2005-08-25 15:47:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-08-26 19:38:47 -0400 |
commit | 212d6d2237f60bc28c1518f8abf9d3ed6c17574a (patch) | |
tree | 693ac9cdb0693acb0f935d4b61a34e6a12056add /kernel | |
parent | ca2f3daf779f5e89d14e9783fcfd7920842df9e9 (diff) |
[PATCH] completely disable cpu_exclusive sched domain
At the suggestion of Nick Piggin and Dinakar, totally disable
the facility to allow cpu_exclusive cpusets to define dynamic
sched domains in Linux 2.6.13, in order to avoid problems
first reported by John Hawkes (corrupt sched data structures
and kernel oops).
This has been built for ppc64, i386, ia64, x86_64, sparc, alpha.
It has been built, booted and tested for cpuset functionality
on an SN2 (ia64).
Dinakar or Nick - could you verify that it for sure does avoid
the problems Hawkes reported. Hawkes is out of town, and I don't
have the recipe to reproduce what he found.
Signed-off-by: Paul Jackson <pj@sgi.com>
Acked-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cpuset.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 21a4e3b2cbda..8ab1b4e518b8 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
@@ -627,6 +627,14 @@ static int validate_change(const struct cpuset *cur, const struct cpuset *trial) | |||
627 | * Call with cpuset_sem held. May nest a call to the | 627 | * Call with cpuset_sem held. May nest a call to the |
628 | * lock_cpu_hotplug()/unlock_cpu_hotplug() pair. | 628 | * lock_cpu_hotplug()/unlock_cpu_hotplug() pair. |
629 | */ | 629 | */ |
630 | |||
631 | /* | ||
632 | * Hack to avoid 2.6.13 partial node dynamic sched domain bug. | ||
633 | * Disable letting 'cpu_exclusive' cpusets define dynamic sched | ||
634 | * domains, until the sched domain can handle partial nodes. | ||
635 | * Remove this #if hackery when sched domains fixed. | ||
636 | */ | ||
637 | #if 0 | ||
630 | static void update_cpu_domains(struct cpuset *cur) | 638 | static void update_cpu_domains(struct cpuset *cur) |
631 | { | 639 | { |
632 | struct cpuset *c, *par = cur->parent; | 640 | struct cpuset *c, *par = cur->parent; |
@@ -667,6 +675,11 @@ static void update_cpu_domains(struct cpuset *cur) | |||
667 | partition_sched_domains(&pspan, &cspan); | 675 | partition_sched_domains(&pspan, &cspan); |
668 | unlock_cpu_hotplug(); | 676 | unlock_cpu_hotplug(); |
669 | } | 677 | } |
678 | #else | ||
679 | static void update_cpu_domains(struct cpuset *cur) | ||
680 | { | ||
681 | } | ||
682 | #endif | ||
670 | 683 | ||
671 | static int update_cpumask(struct cpuset *cs, char *buf) | 684 | static int update_cpumask(struct cpuset *cs, char *buf) |
672 | { | 685 | { |