Message ID | 20221129193526.3588187-3-peterx@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [01/10] mm/hugetlb: Let vma_offset_start() to return start | expand |
On 11/29/22 14:35, Peter Xu wrote: > That's what the code does with !hugetlb pages, so we should logically do > the same for hugetlb, so migration entry will also be treated as no page. Makes sense. I like the consistency. > This is probably also the last piece in follow_page code that may sleep, > the last one should be removed in cf994dd8af27 ("mm/gup: remove > FOLL_MIGRATION", 2022-11-16). > > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > mm/hugetlb.c | 11 ----------- > 1 file changed, 11 deletions(-) Thanks! Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
On 29.11.22 20:35, Peter Xu wrote: > That's what the code does with !hugetlb pages, so we should logically do > the same for hugetlb, so migration entry will also be treated as no page. > > This is probably also the last piece in follow_page code that may sleep, > the last one should be removed in cf994dd8af27 ("mm/gup: remove > FOLL_MIGRATION", 2022-11-16). We only have a handful of follow_page() calls left. Most relevant for hugetlb should only be the ones from mm/migrate.c. So this is now just consistent with ordinary pages/THP. Happy so see that gone. Reviewed-by: David Hildenbrand <david@redhat.com>
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 9d97c9a2a15d..dfe677fadaf8 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -6234,7 +6234,6 @@ struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, if (WARN_ON_ONCE(flags & FOLL_PIN)) return NULL; -retry: pte = huge_pte_offset(mm, haddr, huge_page_size(h)); if (!pte) return NULL; @@ -6257,16 +6256,6 @@ struct page *hugetlb_follow_page_mask(struct vm_area_struct *vma, page = NULL; goto out; } - } else { - if (is_hugetlb_entry_migration(entry)) { - spin_unlock(ptl); - __migration_entry_wait_huge(pte, ptl); - goto retry; - } - /* - * hwpoisoned entry is treated as no_page_table in - * follow_page_mask(). - */ } out: spin_unlock(ptl);
That's what the code does with !hugetlb pages, so we should logically do the same for hugetlb, so migration entry will also be treated as no page. This is probably also the last piece in follow_page code that may sleep, the last one should be removed in cf994dd8af27 ("mm/gup: remove FOLL_MIGRATION", 2022-11-16). Signed-off-by: Peter Xu <peterx@redhat.com> --- mm/hugetlb.c | 11 ----------- 1 file changed, 11 deletions(-)