From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <5711217A.6050003@hpe.com> Date: Fri, 15 Apr 2016 13:14:34 -0400 From: Waiman Long MIME-Version: 1.0 To: Boqun Feng CC: Alexander Viro , Jan Kara , Jeff Layton , "J. Bruce Fields" , Tejun Heo , Christoph Lameter , , , Ingo Molnar , Peter Zijlstra , Andi Kleen , Dave Chinner , Scott J Norton , Douglas Hatch Subject: Re: [PATCH v7 1/4] lib/percpu-list: Per-cpu list with associated per-cpu locks References: <1460501686-37096-1-git-send-email-Waiman.Long@hpe.com> <1460501686-37096-2-git-send-email-Waiman.Long@hpe.com> <20160413020929.GA23058@fixme-laptop.cn.ibm.com> <570E8419.7090909@hpe.com> <20160414233334.GA21026@fixme-laptop.cn.ibm.com> In-Reply-To: <20160414233334.GA21026@fixme-laptop.cn.ibm.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: On 04/14/2016 07:33 PM, Boqun Feng wrote: > On Wed, Apr 13, 2016 at 01:38:33PM -0400, Waiman Long wrote: >> On 04/12/2016 10:09 PM, Boqun Feng wrote: >>> Hi Waiman, >>> >>> On Tue, Apr 12, 2016 at 06:54:43PM -0400, Waiman Long wrote: >>> [...] >>>> + >>>> +/* >>>> + * Initialize the per-cpu list head >>>> + */ >>>> +int init_pcpu_list_head(struct pcpu_list_head **ppcpu_head) >>>> +{ >>>> + struct pcpu_list_head *pcpu_head = alloc_percpu(struct pcpu_list_head); >>>> + int cpu; >>>> + >>>> + if (!pcpu_head) >>>> + return -ENOMEM; >>>> + >>>> + for_each_possible_cpu(cpu) { >>>> + struct pcpu_list_head *head = per_cpu_ptr(pcpu_head, cpu); >>>> + >>>> + INIT_LIST_HEAD(&head->list); >>>> + head->lock = __SPIN_LOCK_UNLOCKED(&head->lock); >>>> + lockdep_set_class(&head->lock,&percpu_list_key); >>>> + } >>>> + >>>> + *ppcpu_head = pcpu_head; >>>> + return 0; >>>> +} >>> The first time I looked at this patch, I had a hard time to figure out >>> which "struct pcpu_list_head" pointer is pointing to percpu data(the >>> pointer could be the parameter for per/this_cpu_ptr()), and which >>> pointer is pointing to actual structure. For example, 'pcpu_head' and >>> 'head' above are different types of pointers. >>> >>> So besides improving my code reading skills, I think the following patch >>> helps ;-) Also it can resolve several splats of sparse when running >>> 'make C=1 lib/'. >>> >>> Thoughts? >> Yes, I think your patch is helpful. I will include your patch in my >> patchset. >> > Given that a renaming will happen in the next version, carrying this as > a standalone patch will be a pain, I think. So feel free to squash this > into the patch #1, if that could make your job eariser ;-) > > Regards, > Boqun > > That is not a problem. I do want to acknowledge your contribution to this patchset. Cheers, Longman