diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2012-03-28 02:43:21 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2012-03-29 07:52:46 -0400 |
commit | 13614e0fb1a8840c134be35c179ff23e23676304 (patch) | |
tree | e9fb16b0d3840562ebe5b5a8f2eb6e37f9e26a8d /kernel/padata.c | |
parent | 107f8bdac992356b3a80d41c9f6ff4399159aa81 (diff) |
padata: Use the online cpumask as the default
We use the active cpumask to determine the superset of cpus
to use for parallelization. However, the active cpumask is
for internal usage of the scheduler and therefore not the
appropriate cpumask for these purposes. So use the online
cpumask instead.
Reported-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'kernel/padata.c')
-rw-r--r-- | kernel/padata.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/padata.c b/kernel/padata.c index 78750882b2ab..de3d0d97800a 100644 --- a/kernel/padata.c +++ b/kernel/padata.c | |||
@@ -356,13 +356,13 @@ static int padata_setup_cpumasks(struct parallel_data *pd, | |||
356 | if (!alloc_cpumask_var(&pd->cpumask.pcpu, GFP_KERNEL)) | 356 | if (!alloc_cpumask_var(&pd->cpumask.pcpu, GFP_KERNEL)) |
357 | return -ENOMEM; | 357 | return -ENOMEM; |
358 | 358 | ||
359 | cpumask_and(pd->cpumask.pcpu, pcpumask, cpu_active_mask); | 359 | cpumask_and(pd->cpumask.pcpu, pcpumask, cpu_online_mask); |
360 | if (!alloc_cpumask_var(&pd->cpumask.cbcpu, GFP_KERNEL)) { | 360 | if (!alloc_cpumask_var(&pd->cpumask.cbcpu, GFP_KERNEL)) { |
361 | free_cpumask_var(pd->cpumask.cbcpu); | 361 | free_cpumask_var(pd->cpumask.cbcpu); |
362 | return -ENOMEM; | 362 | return -ENOMEM; |
363 | } | 363 | } |
364 | 364 | ||
365 | cpumask_and(pd->cpumask.cbcpu, cbcpumask, cpu_active_mask); | 365 | cpumask_and(pd->cpumask.cbcpu, cbcpumask, cpu_online_mask); |
366 | return 0; | 366 | return 0; |
367 | } | 367 | } |
368 | 368 | ||
@@ -566,7 +566,7 @@ EXPORT_SYMBOL(padata_unregister_cpumask_notifier); | |||
566 | static bool padata_validate_cpumask(struct padata_instance *pinst, | 566 | static bool padata_validate_cpumask(struct padata_instance *pinst, |
567 | const struct cpumask *cpumask) | 567 | const struct cpumask *cpumask) |
568 | { | 568 | { |
569 | if (!cpumask_intersects(cpumask, cpu_active_mask)) { | 569 | if (!cpumask_intersects(cpumask, cpu_online_mask)) { |
570 | pinst->flags |= PADATA_INVALID; | 570 | pinst->flags |= PADATA_INVALID; |
571 | return false; | 571 | return false; |
572 | } | 572 | } |
@@ -680,7 +680,7 @@ static int __padata_add_cpu(struct padata_instance *pinst, int cpu) | |||
680 | { | 680 | { |
681 | struct parallel_data *pd; | 681 | struct parallel_data *pd; |
682 | 682 | ||
683 | if (cpumask_test_cpu(cpu, cpu_active_mask)) { | 683 | if (cpumask_test_cpu(cpu, cpu_online_mask)) { |
684 | pd = padata_alloc_pd(pinst, pinst->cpumask.pcpu, | 684 | pd = padata_alloc_pd(pinst, pinst->cpumask.pcpu, |
685 | pinst->cpumask.cbcpu); | 685 | pinst->cpumask.cbcpu); |
686 | if (!pd) | 686 | if (!pd) |