Re: [PATCH v3 2/6] mm/huge_memory.c: make get_huge_zero_page() return bool

2021-03-18 Thread Zi Yan
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 
> ---
>  mm/huge_memory.c | 8 
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
LGTM. Reviewed-by: Zi Yan 

—
Best Regards,
Yan Zi


signature.asc
Description: OpenPGP digital signature


[PATCH v3 2/6] mm/huge_memory.c: make get_huge_zero_page() return bool

2021-03-18 Thread Miaohe Lin
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 
---
 mm/huge_memory.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

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(_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(_zero_refcount, 2);
preempt_enable();
-   return READ_ONCE(huge_zero_page);
+   return true;
 }
 
 static void put_huge_zero_page(void)
-- 
2.19.1