Messages in this thread | | | Date | Mon, 6 Nov 2023 10:30:59 +0800 | Subject | Re: [PATCH v2 06/10] mm: memory: use a folio in zap_pte_range() | From | Kefeng Wang <> |
| |
On 2023/11/5 1:20, Matthew Wilcox wrote: > On Sat, Nov 04, 2023 at 11:55:18AM +0800, Kefeng Wang wrote: >> -/* Decides whether we should zap this page with the page pointer specified */ >> -static inline bool should_zap_page(struct zap_details *details, struct page *page) >> +/* Decides whether we should zap this folio with the folio pointer specified */ >> +static inline bool should_zap_page(struct zap_details *details, struct folio *folio) > > Surely we should rename this to should_zap_folio()? Will update. > >> @@ -1487,10 +1492,10 @@ static unsigned long zap_pte_range(struct mmu_gather *tlb, >> * see zap_install_uffd_wp_if_needed(). >> */ >> WARN_ON_ONCE(!vma_is_anonymous(vma)); >> - rss[mm_counter(page)]--; >> + rss[mm_counter(&folio->page)]--; >> if (is_device_private_entry(entry)) >> - page_remove_rmap(page, vma, false); >> - put_page(page); >> + page_remove_rmap(&folio->page, vma, false); >> + folio_put(folio); > > This is wrong. If we have a PTE-mapped THP, you'll remove the head page > N times instead of removing each of N pages.
This is device private entry, I suppose that it won't be a THP and large folio when check migrate_vma_check_page() and migrate_vma_insert_page(), right?
> > I suspect you're going to collide with Ryan's work by doing this ... > Maybe not if the above is true, at least for now.
Thanks.
| |