Message ID | 20210318122722.13135-3-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Some cleanups for huge_memory | expand |
On 18 Mar 2021, at 8:27, Miaohe Lin wrote: > It's guaranteed that huge_zero_page will not be NULL if huge_zero_refcount > is increased successfully. When READ_ONCE(huge_zero_page) is returned, > there must be a huge_zero_page and it can be replaced with returning 'true' > when we do not care about the value of huge_zero_page. We can thus make it > return bool to save READ_ONCE cpu cycles as the return value is just used > to check if huge_zero_page exists. > > Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> > --- > mm/huge_memory.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > LGTM. Reviewed-by: Zi Yan <ziy@nvidia.com> — Best Regards, Yan Zi
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index ae16a82da823..01b96c638e73 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -77,18 +77,18 @@ bool transparent_hugepage_enabled(struct vm_area_struct *vma) return false; } -static struct page *get_huge_zero_page(void) +static bool get_huge_zero_page(void) { struct page *zero_page; retry: if (likely(atomic_inc_not_zero(&huge_zero_refcount))) - return READ_ONCE(huge_zero_page); + return true; zero_page = alloc_pages((GFP_TRANSHUGE | __GFP_ZERO) & ~__GFP_MOVABLE, HPAGE_PMD_ORDER); if (!zero_page) { count_vm_event(THP_ZERO_PAGE_ALLOC_FAILED); - return NULL; + return false; } count_vm_event(THP_ZERO_PAGE_ALLOC); preempt_disable(); @@ -101,7 +101,7 @@ static struct page *get_huge_zero_page(void) /* We take additional reference here. It will be put back by shrinker */ atomic_set(&huge_zero_refcount, 2); preempt_enable(); - return READ_ONCE(huge_zero_page); + return true; } static void put_huge_zero_page(void)
It's guaranteed that huge_zero_page will not be NULL if huge_zero_refcount is increased successfully. When READ_ONCE(huge_zero_page) is returned, there must be a huge_zero_page and it can be replaced with returning 'true' when we do not care about the value of huge_zero_page. We can thus make it return bool to save READ_ONCE cpu cycles as the return value is just used to check if huge_zero_page exists. Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> --- mm/huge_memory.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)