Le 15/01/2024 à 19:37, Jason Gunthorpe a écrit : > On Wed, Jan 03, 2024 at 05:14:16PM +0800, peterx@xxxxxxxxxx wrote: >> From: Peter Xu <peterx@xxxxxxxxxx> >> >> Hugepd format for GUP is only used in PowerPC with hugetlbfs. There are >> some kernel usage of hugepd (can refer to hugepd_populate_kernel() for >> PPC_8XX), however those pages are not candidates for GUP. >> >> Commit a6e79df92e4a ("mm/gup: disallow FOLL_LONGTERM GUP-fast writing to >> file-backed mappings") added a check to fail gup-fast if there's potential >> risk of violating GUP over writeback file systems. That should never apply >> to hugepd. Considering that hugepd is an old format (and even >> software-only), there's no plan to extend hugepd into other file typed >> memories that is prone to the same issue. > > I didn't dig into the ppc stuff too deeply, but this looks to me like > it is the same thing as ARM's contig bits? > > ie a chunk of PMD/etc entries are all managed together as though they > are a virtual larger entry and we use the hugepte_addr_end() stuff to > iterate over each sub entry. As far as I understand ARM's contig stuff, hugepd on powerpc is something different. hugepd is a page directory dedicated to huge pages, where you have huge pages listed instead of regular pages. For instance, on powerpc 32 with each PGD entries covering 4Mbytes, a regular page table has 1024 PTEs. A hugepd for 512k is a page table with 8 entries. And for 8Mbytes entries, the hugepd is a page table with only one entry. And 2 consecutive PGS entries will point to the same hugepd to cover the entire 8Mbytes. > > But WHY is GUP doing this or caring about this? GUP should have no > problem handling the super-size entry (eg 8M on nohash) as a single > thing. It seems we only lack an API to get this out of the arch code? > > It seems to me we should see ARM and PPC agree on what the API is for > this and then get rid of hugepd by making both use the same page table > walker API. Is that too hopeful? Can't see the similarity between ARM contig PTE and PPC huge page directories. > >> Drop that check, not only because it'll never be true for hugepd per any >> known plan, but also it paves way for reusing the function outside >> fast-gup. > > I didn't see any other caller of this function in this series? When > does this re-use happen?? > > Jason Christophe