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; |
