On Thu, Nov 16, 2023 at 02:40:21PM -0500, Peter Xu wrote: > On Thu, Nov 16, 2023 at 02:51:52PM +0000, Matthew Wilcox wrote: > > On Wed, Nov 15, 2023 at 08:29:03PM -0500, Peter Xu wrote: > > > All the fast-gup functions take a tail page to operate, always need to do > > > page mask calculations before feeding that into record_subpages(). > > > > > > Merge that logic into record_subpages(), so that we always take a head > > > page, and leave the rest calculation to record_subpages(). > > > > This is a bit fragile. You're assuming that pmd_page() always returns > > a head page, and that's only true today because I looked at the work > > required vs the reward and decided to cap the large folio size at PMD > > size. If we allowed 2*PMD_SIZE (eg 4MB on x86), pmd_page() would not > > return a head page. There is a small amount of demand for > PMD size > > large folio support, so I suspect we will want to do this eventually. > > I'm not particularly trying to do these conversions, but it would be > > good to not add more assumptions that pmd_page() returns a head page. > > Makes sense. Actually, IIUC arm64's CONT_PMD pages can already make that > not a head page. > > The code should still be correct, though. AFAIU what I need to do then is > renaming the first field of record_subpages() (s/head/base/) in the next > version, or just keep it the old one ("page"), then update the commit > message. Yeah, I think just leave it as 'page' would be best. Thanks.