mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Convert several functions in hugetlb.c to use a folio
@ 2023-06-06  6:20 Peng Zhang
  2023-06-06  6:20 ` [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range() Peng Zhang
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Peng Zhang @ 2023-06-06  6:20 UTC (permalink / raw)
  To: linux-mm, linux-kernel, akpm, willy, mike.kravetz, muchun.song,
	sidhartha.kumar
  Cc: vishal.moola, wangkefeng.wang, sunnanyong, ZhangPeng

From: ZhangPeng <zhangpeng362@huawei.com>

This patch series converts three functions in hugetlb.c to use a folio,
which can remove several implicit calls to compound_head().

Change log:
v2:
- Remove ptepage in copy_hugetlb_page_range() and old_page in
  hugetlb_wp(), suggested by Matthew Wilcox and Mike Kravetz. (Patch 1-2)
- Add RB from Muchun Song and Sidhartha Kumar. (Patch 1-2)
- Add a new patch to use a folio in hugetlb_fault(). (Patch 3)

ZhangPeng (3):
  mm/hugetlb: Use a folio in copy_hugetlb_page_range()
  mm/hugetlb: Use a folio in hugetlb_wp()
  mm/hugetlb: Use a folio in hugetlb_fault()

 mm/hugetlb.c | 72 ++++++++++++++++++++++++++--------------------------
 1 file changed, 36 insertions(+), 36 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range()
  2023-06-06  6:20 [PATCH v2 0/3] Convert several functions in hugetlb.c to use a folio Peng Zhang
@ 2023-06-06  6:20 ` Peng Zhang
  2023-06-06 17:46   ` Matthew Wilcox
  2023-06-06  6:20 ` [PATCH v2 2/3] mm/hugetlb: Use a folio in hugetlb_wp() Peng Zhang
  2023-06-06  6:20 ` [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault() Peng Zhang
  2 siblings, 1 reply; 9+ messages in thread
From: Peng Zhang @ 2023-06-06  6:20 UTC (permalink / raw)
  To: linux-mm, linux-kernel, akpm, willy, mike.kravetz, muchun.song,
	sidhartha.kumar
  Cc: vishal.moola, wangkefeng.wang, sunnanyong, ZhangPeng, Muchun Song

From: ZhangPeng <zhangpeng362@huawei.com>

We can replace five implict calls to compound_head() with one by using
pte_folio. The page we get back is always a head page, so we just
convert ptepage to pte_folio.

Suggested-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
Reviewed-by: Muchun Song <songmuchun@bytedance.com>
Reviewed-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
---
 mm/hugetlb.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index ea24718db4af..d6f6d19958a5 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -5016,7 +5016,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
 			    struct vm_area_struct *src_vma)
 {
 	pte_t *src_pte, *dst_pte, entry;
-	struct page *ptepage;
+	struct folio *pte_folio;
 	unsigned long addr;
 	bool cow = is_cow_mapping(src_vma->vm_flags);
 	struct hstate *h = hstate_vma(src_vma);
@@ -5115,8 +5115,8 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
 				set_huge_pte_at(dst, addr, dst_pte, entry);
 		} else {
 			entry = huge_ptep_get(src_pte);
-			ptepage = pte_page(entry);
-			get_page(ptepage);
+			pte_folio = page_folio(pte_page(entry));
+			folio_get(pte_folio);
 
 			/*
 			 * Failing to duplicate the anon rmap is a rare case
@@ -5128,10 +5128,10 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
 			 * need to be without the pgtable locks since we could
 			 * sleep during the process.
 			 */
-			if (!PageAnon(ptepage)) {
-				page_dup_file_rmap(ptepage, true);
-			} else if (page_try_dup_anon_rmap(ptepage, true,
-							  src_vma)) {
+			if (!folio_test_anon(pte_folio)) {
+				page_dup_file_rmap(&pte_folio->page, true);
+			} else if (page_try_dup_anon_rmap(&pte_folio->page,
+							  true, src_vma)) {
 				pte_t src_pte_old = entry;
 				struct folio *new_folio;
 
@@ -5140,14 +5140,14 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
 				/* Do not use reserve as it's private owned */
 				new_folio = alloc_hugetlb_folio(dst_vma, addr, 1);
 				if (IS_ERR(new_folio)) {
-					put_page(ptepage);
+					folio_put(pte_folio);
 					ret = PTR_ERR(new_folio);
 					break;
 				}
 				ret = copy_user_large_folio(new_folio,
-						      page_folio(ptepage),
-						      addr, dst_vma);
-				put_page(ptepage);
+							    pte_folio,
+							    addr, dst_vma);
+				folio_put(pte_folio);
 				if (ret) {
 					folio_put(new_folio);
 					break;
-- 
2.25.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2 2/3] mm/hugetlb: Use a folio in hugetlb_wp()
  2023-06-06  6:20 [PATCH v2 0/3] Convert several functions in hugetlb.c to use a folio Peng Zhang
  2023-06-06  6:20 ` [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range() Peng Zhang
@ 2023-06-06  6:20 ` Peng Zhang
  2023-06-06 17:50   ` Matthew Wilcox
  2023-06-06  6:20 ` [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault() Peng Zhang
  2 siblings, 1 reply; 9+ messages in thread
From: Peng Zhang @ 2023-06-06  6:20 UTC (permalink / raw)
  To: linux-mm, linux-kernel, akpm, willy, mike.kravetz, muchun.song,
	sidhartha.kumar
  Cc: vishal.moola, wangkefeng.wang, sunnanyong, ZhangPeng, Muchun Song

From: ZhangPeng <zhangpeng362@huawei.com>

We can replace nine implict calls to compound_head() with one by using
old_folio. The page we get back is always a head page, so we just
convert old_page to old_folio.

Suggested-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
Reviewed-by: Muchun Song <songmuchun@bytedance.com>
Reviewed-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
---
 mm/hugetlb.c | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index d6f6d19958a5..e58f8001fd92 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -5540,7 +5540,7 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 	const bool unshare = flags & FAULT_FLAG_UNSHARE;
 	pte_t pte = huge_ptep_get(ptep);
 	struct hstate *h = hstate_vma(vma);
-	struct page *old_page;
+	struct folio *old_folio;
 	struct folio *new_folio;
 	int outside_reserve = 0;
 	vm_fault_t ret = 0;
@@ -5571,7 +5571,7 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 		return 0;
 	}
 
-	old_page = pte_page(pte);
+	old_folio = page_folio(pte_page(pte));
 
 	delayacct_wpcopy_start();
 
@@ -5580,17 +5580,17 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * If no-one else is actually using this page, we're the exclusive
 	 * owner and can reuse this page.
 	 */
-	if (page_mapcount(old_page) == 1 && PageAnon(old_page)) {
-		if (!PageAnonExclusive(old_page))
-			page_move_anon_rmap(old_page, vma);
+	if (folio_mapcount(old_folio) == 1 && folio_test_anon(old_folio)) {
+		if (!PageAnonExclusive(&old_folio->page))
+			page_move_anon_rmap(&old_folio->page, vma);
 		if (likely(!unshare))
 			set_huge_ptep_writable(vma, haddr, ptep);
 
 		delayacct_wpcopy_end();
 		return 0;
 	}
-	VM_BUG_ON_PAGE(PageAnon(old_page) && PageAnonExclusive(old_page),
-		       old_page);
+	VM_BUG_ON_PAGE(folio_test_anon(old_folio) &&
+		       PageAnonExclusive(&old_folio->page), &old_folio->page);
 
 	/*
 	 * If the process that created a MAP_PRIVATE mapping is about to
@@ -5602,10 +5602,10 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * of the full address range.
 	 */
 	if (is_vma_resv_set(vma, HPAGE_RESV_OWNER) &&
-			page_folio(old_page) != pagecache_folio)
+			old_folio != pagecache_folio)
 		outside_reserve = 1;
 
-	get_page(old_page);
+	folio_get(old_folio);
 
 	/*
 	 * Drop page table lock as buddy allocator may be called. It will
@@ -5627,7 +5627,7 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 			pgoff_t idx;
 			u32 hash;
 
-			put_page(old_page);
+			folio_put(old_folio);
 			/*
 			 * Drop hugetlb_fault_mutex and vma_lock before
 			 * unmapping.  unmapping needs to hold vma_lock
@@ -5642,7 +5642,7 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 			hugetlb_vma_unlock_read(vma);
 			mutex_unlock(&hugetlb_fault_mutex_table[hash]);
 
-			unmap_ref_private(mm, vma, old_page, haddr);
+			unmap_ref_private(mm, vma, &old_folio->page, haddr);
 
 			mutex_lock(&hugetlb_fault_mutex_table[hash]);
 			hugetlb_vma_lock_read(vma);
@@ -5672,7 +5672,7 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 		goto out_release_all;
 	}
 
-	if (copy_user_large_folio(new_folio, page_folio(old_page), address, vma)) {
+	if (copy_user_large_folio(new_folio, old_folio, address, vma)) {
 		ret = VM_FAULT_HWPOISON_LARGE;
 		goto out_release_all;
 	}
@@ -5694,14 +5694,14 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 		/* Break COW or unshare */
 		huge_ptep_clear_flush(vma, haddr, ptep);
 		mmu_notifier_invalidate_range(mm, range.start, range.end);
-		page_remove_rmap(old_page, vma, true);
+		page_remove_rmap(&old_folio->page, vma, true);
 		hugepage_add_new_anon_rmap(new_folio, vma, haddr);
 		if (huge_pte_uffd_wp(pte))
 			newpte = huge_pte_mkuffd_wp(newpte);
 		set_huge_pte_at(mm, haddr, ptep, newpte);
 		folio_set_hugetlb_migratable(new_folio);
 		/* Make the old page be freed below */
-		new_folio = page_folio(old_page);
+		new_folio = old_folio;
 	}
 	spin_unlock(ptl);
 	mmu_notifier_invalidate_range_end(&range);
@@ -5710,11 +5710,11 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * No restore in case of successful pagetable update (Break COW or
 	 * unshare)
 	 */
-	if (new_folio != page_folio(old_page))
+	if (new_folio != old_folio)
 		restore_reserve_on_error(h, vma, haddr, new_folio);
 	folio_put(new_folio);
 out_release_old:
-	put_page(old_page);
+	folio_put(old_folio);
 
 	spin_lock(ptl); /* Caller expects lock to be held */
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault()
  2023-06-06  6:20 [PATCH v2 0/3] Convert several functions in hugetlb.c to use a folio Peng Zhang
  2023-06-06  6:20 ` [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range() Peng Zhang
  2023-06-06  6:20 ` [PATCH v2 2/3] mm/hugetlb: Use a folio in hugetlb_wp() Peng Zhang
@ 2023-06-06  6:20 ` Peng Zhang
  2023-06-06 17:28   ` Sidhartha Kumar
                     ` (2 more replies)
  2 siblings, 3 replies; 9+ messages in thread
From: Peng Zhang @ 2023-06-06  6:20 UTC (permalink / raw)
  To: linux-mm, linux-kernel, akpm, willy, mike.kravetz, muchun.song,
	sidhartha.kumar
  Cc: vishal.moola, wangkefeng.wang, sunnanyong, ZhangPeng

From: ZhangPeng <zhangpeng362@huawei.com>

We can replace seven implicit calls to compound_head() with one by using
folio.

Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
---
 mm/hugetlb.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index e58f8001fd92..e34329e25abe 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -6062,7 +6062,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 	vm_fault_t ret;
 	u32 hash;
 	pgoff_t idx;
-	struct page *page = NULL;
+	struct folio *folio = NULL;
 	struct folio *pagecache_folio = NULL;
 	struct hstate *h = hstate_vma(vma);
 	struct address_space *mapping;
@@ -6181,14 +6181,14 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * pagecache_folio, so here we need take the former one
 	 * when page != pagecache_folio or !pagecache_folio.
 	 */
-	page = pte_page(entry);
-	if (page_folio(page) != pagecache_folio)
-		if (!trylock_page(page)) {
+	folio = page_folio(pte_page(entry));
+	if (folio != pagecache_folio)
+		if (!folio_trylock(folio)) {
 			need_wait_lock = 1;
 			goto out_ptl;
 		}
 
-	get_page(page);
+	folio_get(folio);
 
 	if (flags & (FAULT_FLAG_WRITE|FAULT_FLAG_UNSHARE)) {
 		if (!huge_pte_write(entry)) {
@@ -6204,9 +6204,9 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 						flags & FAULT_FLAG_WRITE))
 		update_mmu_cache(vma, haddr, ptep);
 out_put_page:
-	if (page_folio(page) != pagecache_folio)
-		unlock_page(page);
-	put_page(page);
+	if (folio != pagecache_folio)
+		folio_unlock(folio);
+	folio_put(folio);
 out_ptl:
 	spin_unlock(ptl);
 
@@ -6225,7 +6225,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
 	 * here without taking refcount.
 	 */
 	if (need_wait_lock)
-		wait_on_page_locked(page);
+		folio_wait_locked(folio);
 	return ret;
 }
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault()
  2023-06-06  6:20 ` [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault() Peng Zhang
@ 2023-06-06 17:28   ` Sidhartha Kumar
  2023-06-06 17:56   ` Matthew Wilcox
  2023-06-07  3:55   ` Muchun Song
  2 siblings, 0 replies; 9+ messages in thread
From: Sidhartha Kumar @ 2023-06-06 17:28 UTC (permalink / raw)
  To: Peng Zhang, linux-mm, linux-kernel, akpm, willy, mike.kravetz,
	muchun.song
  Cc: vishal.moola, wangkefeng.wang, sunnanyong

On 6/5/23 11:20 PM, Peng Zhang wrote:
> From: ZhangPeng <zhangpeng362@huawei.com>
> 
> We can replace seven implicit calls to compound_head() with one by using
> folio.
> 
> Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
> ---
>   mm/hugetlb.c | 18 +++++++++---------
>   1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index e58f8001fd92..e34329e25abe 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -6062,7 +6062,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
>   	vm_fault_t ret;
>   	u32 hash;
>   	pgoff_t idx;
> -	struct page *page = NULL;
> +	struct folio *folio = NULL;
>   	struct folio *pagecache_folio = NULL;
>   	struct hstate *h = hstate_vma(vma);
>   	struct address_space *mapping;
> @@ -6181,14 +6181,14 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
>   	 * pagecache_folio, so here we need take the former one
>   	 * when page != pagecache_folio or !pagecache_folio.
>   	 */

This comment should also be updated as page is no longer a variable in 
this function.

> -	page = pte_page(entry);
> -	if (page_folio(page) != pagecache_folio)
> -		if (!trylock_page(page)) {
> +	folio = page_folio(pte_page(entry));
> +	if (folio != pagecache_folio)
> +		if (!folio_trylock(folio)) {
>   			need_wait_lock = 1;
>   			goto out_ptl;
>   		}
>   
> -	get_page(page);
> +	folio_get(folio);
>   
>   	if (flags & (FAULT_FLAG_WRITE|FAULT_FLAG_UNSHARE)) {
>   		if (!huge_pte_write(entry)) {
> @@ -6204,9 +6204,9 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
>   						flags & FAULT_FLAG_WRITE))
>   		update_mmu_cache(vma, haddr, ptep);
>   out_put_page:
> -	if (page_folio(page) != pagecache_folio)
> -		unlock_page(page);
> -	put_page(page);
> +	if (folio != pagecache_folio)
> +		folio_unlock(folio);
> +	folio_put(folio);
>   out_ptl:
>   	spin_unlock(ptl);
>   
> @@ -6225,7 +6225,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
>   	 * here without taking refcount.
>   	 */
>   	if (need_wait_lock)
> -		wait_on_page_locked(page);
> +		folio_wait_locked(folio);
>   	return ret;
>   }
>   

Besides updating the comment.
Reviewed-by Sidhartha Kumar <sidhartha.kumar@oracle.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range()
  2023-06-06  6:20 ` [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range() Peng Zhang
@ 2023-06-06 17:46   ` Matthew Wilcox
  0 siblings, 0 replies; 9+ messages in thread
From: Matthew Wilcox @ 2023-06-06 17:46 UTC (permalink / raw)
  To: Peng Zhang
  Cc: linux-mm, linux-kernel, akpm, mike.kravetz, muchun.song,
	sidhartha.kumar, vishal.moola, wangkefeng.wang, sunnanyong,
	Muchun Song

On Tue, Jun 06, 2023 at 02:20:11PM +0800, Peng Zhang wrote:
> From: ZhangPeng <zhangpeng362@huawei.com>
> 
> We can replace five implict calls to compound_head() with one by using
> pte_folio. The page we get back is always a head page, so we just
> convert ptepage to pte_folio.
> 
> Suggested-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
> Reviewed-by: Muchun Song <songmuchun@bytedance.com>
> Reviewed-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>

Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/3] mm/hugetlb: Use a folio in hugetlb_wp()
  2023-06-06  6:20 ` [PATCH v2 2/3] mm/hugetlb: Use a folio in hugetlb_wp() Peng Zhang
@ 2023-06-06 17:50   ` Matthew Wilcox
  0 siblings, 0 replies; 9+ messages in thread
From: Matthew Wilcox @ 2023-06-06 17:50 UTC (permalink / raw)
  To: Peng Zhang
  Cc: linux-mm, linux-kernel, akpm, mike.kravetz, muchun.song,
	sidhartha.kumar, vishal.moola, wangkefeng.wang, sunnanyong,
	Muchun Song

On Tue, Jun 06, 2023 at 02:20:12PM +0800, Peng Zhang wrote:
> From: ZhangPeng <zhangpeng362@huawei.com>
> 
> We can replace nine implict calls to compound_head() with one by using
> old_folio. The page we get back is always a head page, so we just
> convert old_page to old_folio.
> 
> Suggested-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>
> Reviewed-by: Muchun Song <songmuchun@bytedance.com>
> Reviewed-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>

Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault()
  2023-06-06  6:20 ` [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault() Peng Zhang
  2023-06-06 17:28   ` Sidhartha Kumar
@ 2023-06-06 17:56   ` Matthew Wilcox
  2023-06-07  3:55   ` Muchun Song
  2 siblings, 0 replies; 9+ messages in thread
From: Matthew Wilcox @ 2023-06-06 17:56 UTC (permalink / raw)
  To: Peng Zhang
  Cc: linux-mm, linux-kernel, akpm, mike.kravetz, muchun.song,
	sidhartha.kumar, vishal.moola, wangkefeng.wang, sunnanyong

On Tue, Jun 06, 2023 at 02:20:13PM +0800, Peng Zhang wrote:
> From: ZhangPeng <zhangpeng362@huawei.com>
> 
> We can replace seven implicit calls to compound_head() with one by using
> folio.
> 
> Signed-off-by: ZhangPeng <zhangpeng362@huawei.com>

Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault()
  2023-06-06  6:20 ` [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault() Peng Zhang
  2023-06-06 17:28   ` Sidhartha Kumar
  2023-06-06 17:56   ` Matthew Wilcox
@ 2023-06-07  3:55   ` Muchun Song
  2 siblings, 0 replies; 9+ messages in thread
From: Muchun Song @ 2023-06-07  3:55 UTC (permalink / raw)
  To: Peng Zhang
  Cc: Linux Memory Management List, linux-kernel, Andrew Morton,
	Matthew Wilcox, Mike Kravetz, Sidhartha Kumar, vishal.moola,
	Kefeng Wang, sunnanyong



> On Jun 6, 2023, at 14:20, Peng Zhang <zhangpeng362@huawei.com> wrote:
> 
> From: ZhangPeng <zhangpeng362@huawei.com>
> 
> We can replace seven implicit calls to compound_head() with one by using
> folio.
> 
> Signed-off-by: ZhangPeng <zhangpeng362@huawei.com <mailto:zhangpeng362@huawei.com>>

Reviewed-by: Muchun Song <songmuchun@bytedance.com>

Thanks.


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-06-07  4:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-06  6:20 [PATCH v2 0/3] Convert several functions in hugetlb.c to use a folio Peng Zhang
2023-06-06  6:20 ` [PATCH v2 1/3] mm/hugetlb: Use a folio in copy_hugetlb_page_range() Peng Zhang
2023-06-06 17:46   ` Matthew Wilcox
2023-06-06  6:20 ` [PATCH v2 2/3] mm/hugetlb: Use a folio in hugetlb_wp() Peng Zhang
2023-06-06 17:50   ` Matthew Wilcox
2023-06-06  6:20 ` [PATCH v2 3/3] mm/hugetlb: Use a folio in hugetlb_fault() Peng Zhang
2023-06-06 17:28   ` Sidhartha Kumar
2023-06-06 17:56   ` Matthew Wilcox
2023-06-07  3:55   ` Muchun Song

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®