aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/padata.c
diff options
context:
space:
mode:
authorSteffen Klassert <steffen.klassert@secunet.com>2012-03-28 02:43:21 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2012-03-29 07:52:46 -0400
commit13614e0fb1a8840c134be35c179ff23e23676304 (patch)
treee9fb16b0d3840562ebe5b5a8f2eb6e37f9e26a8d /kernel/padata.c
parent107f8bdac992356b3a80d41c9f6ff4399159aa81 (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.c8
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);
566static bool padata_validate_cpumask(struct padata_instance *pinst, 566static 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)