mm/hugetlb: get rid of page_hstate()
Subsystems (3)
PATCH v2 1/1 mm/hugetlb: get rid of page_hstate()
Converts the last page_hstate() user to use folio_hstate() so page_hstate() can be safely removed.
Signed-off-by Sidhartha Kumar <[email protected]>
---v1->v2:
-change (page - &folio->page) to folio_page_idx(folio, page) per Matthew Wilcox
include/linux/hugetlb.h | 10 ---------- mm/hugetlb.c | 6 +++--- mm/page_isolation.c | 8 ++++---- 3 files changed, 7 insertions(+), 17 deletions(-)
include/linux/hugetlb.h +0 -10
@@ -841,11 +841,6 @@ static inline struct hstate *folio_hstate(struct folio *folio)return size_to_hstate (folio_size (folio)); } -static inline struct hstate *page_hstate (struct page *page) -{ -return folio_hstate (page_folio (page)); -} -static inline unsigned hstate_index_to_shift (unsigned index) {return hstates[index].order +PAGE_SHIFT ;
@@ -1062,11 +1057,6 @@ static inline struct hstate *folio_hstate(struct folio *folio)return NULL ; } -static inline struct hstate *page_hstate (struct page *page) -{ -return NULL ; -} -static inline struct hstate *size_to_hstate (unsigned long size) {return NULL ;
mm/hugetlb.c +3 -3
@@ -1812,10 +1812,10 @@ static void free_hpage_workfn(struct work_struct *work) node = node->next; page->mapping =NULL ;/* -* The VM_BUG_ON_PAGE(!PageHuge(page), page) in page_hstate() -* is going to trigger because a previous call to +* The VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio) in +* folio_hstate() is going to trigger because a previous call to * remove_hugetlb_folio() will call folio_set_compound_dtor -* (folio, NULL_COMPOUND_DTOR), so do not use page_hstate() +* (folio, NULL_COMPOUND_DTOR), so do not use folio_hstate() * directly. */ h =size_to_hstate (page_size (page));
mm/page_isolation.c +4 -4
@@ -79,17 +79,17 @@ static struct page *has_unmovable_pages(unsigned long start_pfn, unsigned long e* handle each tail page individually in migration. */ if (PageHuge (page) ||PageTransCompound (page)) { -struct page *head =compound_head (page); +struct folio *folio =page_folio (page);unsigned int skip_pages;if (PageHuge (page)) { -if (!hugepage_migration_supported (page_hstate (head))) +if (!hugepage_migration_supported (folio_hstate (folio)))return page; - }else if (!PageLRU (head) && !__PageMovable (head)) { + }else if (!folio_test_lru (folio) && !__folio_test_movable (folio)) {return page; } - skip_pages =compound_nr (head) - (page - head); + skip_pages =folio_nr_pages (folio) -folio_page_idx (folio, page); pfn += skip_pages -1 ;continue ; }
Signature · 1 line
2.41.0
Quoted 6 lines · Sidhartha Kumar
Converts the last
page_hstate()user to usefolio_hstate()sopage_hstate()can be safely removed.Signed-off-by Sidhartha Kumar <[email protected]>---
v1->v2:
Quoted 7 lines
-change (page - &folio->page) to folio_page_idx(folio, page) per Matthew Wilcoxinclude/linux/hugetlb.h | 10 ---------- mm/hugetlb.c | 6 +++--- mm/page_isolation.c | 8 ++++---- 3 files changed, 7 insertions(+), 17 deletions(-)
Thanks Sid and Matthew!
Reviewed-by Mike Kravetz <[email protected]>
Signature · 1 line
Mike Kravetz
Quoted 35 lines
include/linux/hugetlb.h +0
-10@@ -841,11 +841,6 @@ static inline struct hstate *folio_hstate(struct folio *folio)return size_to_hstate (folio_size (folio)); } -static inline struct hstate *page_hstate (struct page *page) -{ -return folio_hstate (page_folio (page)); -} -static inline unsigned hstate_index_to_shift (unsigned index) {return hstates[index].order +PAGE_SHIFT ;@@ -1062,11 +1057,6 @@ static inline struct hstate *folio_hstate(struct folio *folio)return NULL ; } -static inline struct hstate *page_hstate (struct page *page) -{ -return NULL ; -} -static inline struct hstate *size_to_hstate (unsigned long size) {return NULL ;mm/hugetlb.c +0
-0@@ -1812,10 +1812,10 @@ static void free_hpage_workfn(struct work_struct *work) node = node->next;
mm/hugetlb.c static void free_hpage_workfn(struct work_struct *work) · line 1819
Quoted 10 lines
mm/hugetlb.c +3
-3page->mapping =NULL ;/* -* The VM_BUG_ON_PAGE(!PageHuge(page), page) in page_hstate() -* is going to trigger because a previous call to +* The VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio) in +* folio_hstate() is going to trigger because a previous call to * remove_hugetlb_folio() will call folio_set_compound_dtor -* (folio, NULL_COMPOUND_DTOR), so do not use page_hstate() +* (folio, NULL_COMPOUND_DTOR), so do not use folio_hstate() * directly.
Looks like the code was updated in a commit prior to this comment change. Thanks for updating the comment!
Quoted 31 lines
mm/hugetlb.c +0
-0*/ h =size_to_hstate (page_size (page));mm/page_isolation.c +4
-4@@ -79,17 +79,17 @@ static struct page *has_unmovable_pages(unsigned long start_pfn, unsigned long e* handle each tail page individually in migration. */ if (PageHuge (page) ||PageTransCompound (page)) { -struct page *head =compound_head (page); +struct folio *folio =page_folio (page);unsigned int skip_pages;if (PageHuge (page)) { -if (!hugepage_migration_supported (page_hstate (head))) +if (!hugepage_migration_supported (folio_hstate (folio)))return page; - }else if (!PageLRU (head) && !__PageMovable (head)) { + }else if (!folio_test_lru (folio) && !__folio_test_movable (folio)) {return page; } - skip_pages =compound_nr (head) - (page - head); + skip_pages =folio_nr_pages (folio) -folio_page_idx (folio, page); pfn += skip_pages -1 ;continue ; }Signature · 1 line
2.41.0