diff options
Diffstat (limited to 'kernel/padata.c')
-rw-r--r-- | kernel/padata.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/kernel/padata.c b/kernel/padata.c index 6f10eb285ece..89fe3d1b9efb 100644 --- a/kernel/padata.c +++ b/kernel/padata.c | |||
@@ -1,6 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * padata.c - generic interface to process data streams in parallel | 2 | * padata.c - generic interface to process data streams in parallel |
3 | * | 3 | * |
4 | * See Documentation/padata.txt for an api documentation. | ||
5 | * | ||
4 | * Copyright (C) 2008, 2009 secunet Security Networks AG | 6 | * Copyright (C) 2008, 2009 secunet Security Networks AG |
5 | * Copyright (C) 2008, 2009 Steffen Klassert <steffen.klassert@secunet.com> | 7 | * Copyright (C) 2008, 2009 Steffen Klassert <steffen.klassert@secunet.com> |
6 | * | 8 | * |
@@ -354,13 +356,13 @@ static int padata_setup_cpumasks(struct parallel_data *pd, | |||
354 | if (!alloc_cpumask_var(&pd->cpumask.pcpu, GFP_KERNEL)) | 356 | if (!alloc_cpumask_var(&pd->cpumask.pcpu, GFP_KERNEL)) |
355 | return -ENOMEM; | 357 | return -ENOMEM; |
356 | 358 | ||
357 | cpumask_and(pd->cpumask.pcpu, pcpumask, cpu_active_mask); | 359 | cpumask_and(pd->cpumask.pcpu, pcpumask, cpu_online_mask); |
358 | if (!alloc_cpumask_var(&pd->cpumask.cbcpu, GFP_KERNEL)) { | 360 | if (!alloc_cpumask_var(&pd->cpumask.cbcpu, GFP_KERNEL)) { |
359 | free_cpumask_var(pd->cpumask.cbcpu); | 361 | free_cpumask_var(pd->cpumask.cbcpu); |
360 | return -ENOMEM; | 362 | return -ENOMEM; |
361 | } | 363 | } |
362 | 364 | ||
363 | cpumask_and(pd->cpumask.cbcpu, cbcpumask, cpu_active_mask); | 365 | cpumask_and(pd->cpumask.cbcpu, cbcpumask, cpu_online_mask); |
364 | return 0; | 366 | return 0; |
365 | } | 367 | } |
366 | 368 | ||
@@ -564,7 +566,7 @@ EXPORT_SYMBOL(padata_unregister_cpumask_notifier); | |||
564 | static bool padata_validate_cpumask(struct padata_instance *pinst, | 566 | static bool padata_validate_cpumask(struct padata_instance *pinst, |
565 | const struct cpumask *cpumask) | 567 | const struct cpumask *cpumask) |
566 | { | 568 | { |
567 | if (!cpumask_intersects(cpumask, cpu_active_mask)) { | 569 | if (!cpumask_intersects(cpumask, cpu_online_mask)) { |
568 | pinst->flags |= PADATA_INVALID; | 570 | pinst->flags |= PADATA_INVALID; |
569 | return false; | 571 | return false; |
570 | } | 572 | } |
@@ -678,7 +680,7 @@ static int __padata_add_cpu(struct padata_instance *pinst, int cpu) | |||
678 | { | 680 | { |
679 | struct parallel_data *pd; | 681 | struct parallel_data *pd; |
680 | 682 | ||
681 | if (cpumask_test_cpu(cpu, cpu_active_mask)) { | 683 | if (cpumask_test_cpu(cpu, cpu_online_mask)) { |
682 | pd = padata_alloc_pd(pinst, pinst->cpumask.pcpu, | 684 | pd = padata_alloc_pd(pinst, pinst->cpumask.pcpu, |
683 | pinst->cpumask.cbcpu); | 685 | pinst->cpumask.cbcpu); |
684 | if (!pd) | 686 | if (!pd) |
@@ -746,6 +748,9 @@ static int __padata_remove_cpu(struct padata_instance *pinst, int cpu) | |||
746 | return -ENOMEM; | 748 | return -ENOMEM; |
747 | 749 | ||
748 | padata_replace(pinst, pd); | 750 | padata_replace(pinst, pd); |
751 | |||
752 | cpumask_clear_cpu(cpu, pd->cpumask.cbcpu); | ||
753 | cpumask_clear_cpu(cpu, pd->cpumask.pcpu); | ||
749 | } | 754 | } |
750 | 755 | ||
751 | return 0; | 756 | return 0; |