On Wed, Jun 14, 2023 at 11:19:48AM -0400, Peter Xu wrote: > > > + for (j = 0; j < page_increm; j++) { > > > + subpage = nth_page(page, j); > > > + pages[i+j] = subpage; > > > + flush_anon_page(vma, subpage, start + j * PAGE_SIZE); > > > + flush_dcache_page(subpage); > > > > You're better off calling flush_dcache_folio() right at the end. > > Will do. Ah when I start to modify it I noticed it's a two-sided sword: we'll then also do flush dcache over the whole folio even if we gup one page. We'll start to get benefit only if some arch at least starts to impl flush_dcache_folio() (which seems to be none, right now..), and we'll already start to lose on amplifying the flush when gup on partial folio. Perhaps I still keep it as-is which will still be accurate, always faster than old code, and definitely not regress in any form? -- Peter Xu