diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/cpuset.c | 17 | ||||
| -rw-r--r-- | kernel/timer.c | 2 |
2 files changed, 18 insertions, 1 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 21a4e3b2cbda..e0d296c5b302 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
| @@ -636,6 +636,23 @@ static void update_cpu_domains(struct cpuset *cur) | |||
| 636 | return; | 636 | return; |
| 637 | 637 | ||
| 638 | /* | 638 | /* |
| 639 | * Hack to avoid 2.6.13 partial node dynamic sched domain bug. | ||
| 640 | * Require the 'cpu_exclusive' cpuset to include all (or none) | ||
| 641 | * of the CPUs on each node, or return w/o changing sched domains. | ||
| 642 | * Remove this hack when dynamic sched domains fixed. | ||
| 643 | */ | ||
| 644 | { | ||
| 645 | int i, j; | ||
| 646 | |||
| 647 | for_each_cpu_mask(i, cur->cpus_allowed) { | ||
| 648 | for_each_cpu_mask(j, node_to_cpumask(cpu_to_node(i))) { | ||
| 649 | if (!cpu_isset(j, cur->cpus_allowed)) | ||
| 650 | return; | ||
| 651 | } | ||
| 652 | } | ||
| 653 | } | ||
| 654 | |||
| 655 | /* | ||
| 639 | * Get all cpus from parent's cpus_allowed not part of exclusive | 656 | * Get all cpus from parent's cpus_allowed not part of exclusive |
| 640 | * children | 657 | * children |
| 641 | */ | 658 | */ |
diff --git a/kernel/timer.c b/kernel/timer.c index f2a11887a726..5377f40723ff 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
| @@ -1023,7 +1023,7 @@ asmlinkage long sys_getppid(void) | |||
| 1023 | parent = me->group_leader->real_parent; | 1023 | parent = me->group_leader->real_parent; |
| 1024 | for (;;) { | 1024 | for (;;) { |
| 1025 | pid = parent->tgid; | 1025 | pid = parent->tgid; |
| 1026 | #ifdef CONFIG_SMP | 1026 | #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT) |
| 1027 | { | 1027 | { |
| 1028 | struct task_struct *old = parent; | 1028 | struct task_struct *old = parent; |
| 1029 | 1029 | ||
