Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

padata: remove effective cpumasks from the instance

A padata instance has effective cpumasks that store the user-supplied
masks ANDed with the online mask, but this middleman is unnecessary.
parallel_data keeps the same information around. Removing this saves
text and code churn in future changes.

Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Daniel Jordan and committed by
Herbert Xu
d69e037b cec00e6e

+3 -29
-2
include/linux/padata.h
··· 167 167 * @serial_wq: The workqueue used for serial work. 168 168 * @pslist: List of padata_shell objects attached to this instance. 169 169 * @cpumask: User supplied cpumasks for parallel and serial works. 170 - * @rcpumask: Actual cpumasks based on user cpumask and cpu_online_mask. 171 170 * @kobj: padata instance kernel object. 172 171 * @lock: padata instance lock. 173 172 * @flags: padata flags. ··· 178 179 struct workqueue_struct *serial_wq; 179 180 struct list_head pslist; 180 181 struct padata_cpumask cpumask; 181 - struct padata_cpumask rcpumask; 182 182 struct kobject kobj; 183 183 struct mutex lock; 184 184 u8 flags;
+3 -27
kernel/padata.c
··· 571 571 static struct parallel_data *padata_alloc_pd(struct padata_shell *ps) 572 572 { 573 573 struct padata_instance *pinst = ps->pinst; 574 - const struct cpumask *cbcpumask; 575 - const struct cpumask *pcpumask; 576 574 struct parallel_data *pd; 577 - 578 - cbcpumask = pinst->rcpumask.cbcpu; 579 - pcpumask = pinst->rcpumask.pcpu; 580 575 581 576 pd = kzalloc(sizeof(struct parallel_data), GFP_KERNEL); 582 577 if (!pd) ··· 592 597 if (!alloc_cpumask_var(&pd->cpumask.cbcpu, GFP_KERNEL)) 593 598 goto err_free_pcpu; 594 599 595 - cpumask_copy(pd->cpumask.pcpu, pcpumask); 596 - cpumask_copy(pd->cpumask.cbcpu, cbcpumask); 600 + cpumask_and(pd->cpumask.pcpu, pinst->cpumask.pcpu, cpu_online_mask); 601 + cpumask_and(pd->cpumask.cbcpu, pinst->cpumask.cbcpu, cpu_online_mask); 597 602 598 603 padata_init_pqueues(pd); 599 604 padata_init_squeues(pd); ··· 662 667 int err = 0; 663 668 664 669 pinst->flags |= PADATA_RESET; 665 - 666 - cpumask_and(pinst->rcpumask.pcpu, pinst->cpumask.pcpu, 667 - cpu_online_mask); 668 - 669 - cpumask_and(pinst->rcpumask.cbcpu, pinst->cpumask.cbcpu, 670 - cpu_online_mask); 671 670 672 671 list_for_each_entry(ps, &pinst->pslist, list) { 673 672 err = padata_replace_one(ps); ··· 845 856 846 857 WARN_ON(!list_empty(&pinst->pslist)); 847 858 848 - free_cpumask_var(pinst->rcpumask.cbcpu); 849 - free_cpumask_var(pinst->rcpumask.pcpu); 850 859 free_cpumask_var(pinst->cpumask.pcpu); 851 860 free_cpumask_var(pinst->cpumask.cbcpu); 852 861 destroy_workqueue(pinst->serial_wq); ··· 1020 1033 !padata_validate_cpumask(pinst, cbcpumask)) 1021 1034 goto err_free_masks; 1022 1035 1023 - if (!alloc_cpumask_var(&pinst->rcpumask.pcpu, GFP_KERNEL)) 1024 - goto err_free_masks; 1025 - if (!alloc_cpumask_var(&pinst->rcpumask.cbcpu, GFP_KERNEL)) 1026 - goto err_free_rcpumask_pcpu; 1027 - 1028 1036 INIT_LIST_HEAD(&pinst->pslist); 1029 1037 1030 1038 cpumask_copy(pinst->cpumask.pcpu, pcpumask); 1031 1039 cpumask_copy(pinst->cpumask.cbcpu, cbcpumask); 1032 - cpumask_and(pinst->rcpumask.pcpu, pcpumask, cpu_online_mask); 1033 - cpumask_and(pinst->rcpumask.cbcpu, cbcpumask, cpu_online_mask); 1034 1040 1035 1041 if (padata_setup_cpumasks(pinst)) 1036 - goto err_free_rcpumask_cbcpu; 1042 + goto err_free_masks; 1037 1043 1038 1044 __padata_start(pinst); 1039 1045 ··· 1044 1064 1045 1065 return pinst; 1046 1066 1047 - err_free_rcpumask_cbcpu: 1048 - free_cpumask_var(pinst->rcpumask.cbcpu); 1049 - err_free_rcpumask_pcpu: 1050 - free_cpumask_var(pinst->rcpumask.pcpu); 1051 1067 err_free_masks: 1052 1068 free_cpumask_var(pinst->cpumask.pcpu); 1053 1069 free_cpumask_var(pinst->cpumask.cbcpu);