Re: [PATCH 03/10] hugetlb: Use LIST_HEAD() to define a list head

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Aug 27, 2022, at 10:27, Miaohe Lin <linmiaohe@xxxxxxxxxx> wrote:
> 
> On 2022/8/27 9:47, Muchun Song wrote:
>> 
>> 
>>> On Aug 26, 2022, at 17:24, Miaohe Lin <linmiaohe@xxxxxxxxxx> wrote:
>>> 
>>> We can avoid unneeded WRITE_ONCE() overhead by using LIST_HEAD() to define
>>> a list head.
>> 
>> IIUC, the overhead doesn’t change. Right?
> 
> I think the overhead is changed. LIST_HEAD is initialized without using WRITE_ONCE():

I think there is no special difference with "WRITE_ONCE(var, 0)" vs "var = 0” in
assembly code. Both code of line will be compiled to a mov or movq instruction.
I didn’t confirm if the assembly code is different (I tend to think it is similar).
Just some analysis from me.

> 
> #define LIST_HEAD_INIT(name) { &(name), &(name) }
> 
> #define LIST_HEAD(name) \
> 	struct list_head name = LIST_HEAD_INIT(name)
> 
> while INIT_LIST_HEAD has:
> 
> static inline void INIT_LIST_HEAD(struct list_head *list)
> {
> 	WRITE_ONCE(list->next, list);
> 	WRITE_ONCE(list->prev, list);
> }
> 
> Or am I miss something?
> 
>> 
>> I’m fine with your changes.
>> 
>> Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
> 
> Many thanks for your review and comment. :)
> 
> Thanks,
> Miaohe Lin
> 






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux