drivers/xen/Kconfig | 1 + drivers/xen/gntdev.c | 5 +- fs/dax.c | 47 +---- include/linux/mm.h | 20 +- mm/Kconfig | 2 + mm/huge_memory.c | 119 ++++------- mm/memory.c | 346 ++++++++++++++++++++++--------- mm/pagewalk.c | 20 +- tools/testing/vma/vma_internal.h | 18 +- 9 files changed, 343 insertions(+), 235 deletions(-)
This is the follow-up of [1]: [PATCH RFC 00/14] mm: vm_normal_page*() + CoW PFNMAP improvements Based on mm/mm-new. I dropped the CoW PFNMAP changes for now, still working on a better way to sort all that out cleanly. Cleanup and unify vm_normal_page_*() handling, also marking the huge zerofolio as special in the PMD. Add+use vm_normal_page_pud() and cleanup that XEN vm_ops->find_special_page thingy. There are plans of using vm_normal_page_*() more widely soon. Briefly tested on UML (making sure vm_normal_page() still works as expected without pte_special() support) and on x86-64 with a bunch of tests. [1] https://lkml.kernel.org/r/20250617154345.2494405-1-david@redhat.com RFC -> v1: * Dropped the highest_memmap_pfn removal stuff and instead added "mm/memory: convert print_bad_pte() to print_bad_page_map()" * Dropped "mm: compare pfns only if the entry is present when inserting pfns/pages" for now, will probably clean that up separately. * Dropped "mm: remove "horrible special case to handle copy-on-write behaviour"", and "mm: drop addr parameter from vm_normal_*_pmd()" will require more thought * "mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd()" -> Extend patch description. * "fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio" -> Extend patch description. * "mm/huge_memory: mark PMD mappings of the huge zero folio special" -> Remove comment from vm_normal_page_pmd(). * "mm/memory: factor out common code from vm_normal_page_*()" -> Adjust to print_bad_page_map()/highest_memmap_pfn changes. -> Add proper kernel doc to all involved functions * "mm: introduce and use vm_normal_page_pud()" -> Adjust to print_bad_page_map() changes. Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Juergen Gross <jgross@suse.com> Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Jan Kara <jack@suse.cz> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Christian Brauner <brauner@kernel.org> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Mike Rapoport <rppt@kernel.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Zi Yan <ziy@nvidia.com> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Nico Pache <npache@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Dev Jain <dev.jain@arm.com> Cc: Barry Song <baohua@kernel.org> Cc: Jann Horn <jannh@google.com> Cc: Pedro Falcato <pfalcato@suse.de> Cc: Hugh Dickins <hughd@google.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Lance Yang <lance.yang@linux.dev> David Hildenbrand (9): mm/huge_memory: move more common code into insert_pmd() mm/huge_memory: move more common code into insert_pud() mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd() fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio mm/huge_memory: mark PMD mappings of the huge zero folio special mm/memory: convert print_bad_pte() to print_bad_page_map() mm/memory: factor out common code from vm_normal_page_*() mm: introduce and use vm_normal_page_pud() mm: rename vm_ops->find_special_page() to vm_ops->find_normal_page() drivers/xen/Kconfig | 1 + drivers/xen/gntdev.c | 5 +- fs/dax.c | 47 +---- include/linux/mm.h | 20 +- mm/Kconfig | 2 + mm/huge_memory.c | 119 ++++------- mm/memory.c | 346 ++++++++++++++++++++++--------- mm/pagewalk.c | 20 +- tools/testing/vma/vma_internal.h | 18 +- 9 files changed, 343 insertions(+), 235 deletions(-) base-commit: 64d19a2cdb7b62bcea83d9309d83e06d7aff4722 -- 2.50.1
On Tue, 15 Jul 2025 15:23:41 +0200 David Hildenbrand <david@redhat.com> wrote: > Based on mm/mm-new. I dropped the CoW PFNMAP changes for now, still > working on a better way to sort all that out cleanly. > > Cleanup and unify vm_normal_page_*() handling, also marking the > huge zerofolio as special in the PMD. Add+use vm_normal_page_pud() and > cleanup that XEN vm_ops->find_special_page thingy. > > There are plans of using vm_normal_page_*() more widely soon. > > Briefly tested on UML (making sure vm_normal_page() still works as expected > without pte_special() support) and on x86-64 with a bunch of tests. When I was but a wee little bairn, my mother would always tell me "never merge briefly tested patches when you're at -rc6". But three weeks in -next should shake things out. However the series rejects due to the is_huge_zero_pmd -> is_huge_zero_pfn changes in Luiz's "mm: introduce snapshot_page() v3" series, so could we please have a redo against present mm-new?
On 16.07.25 01:31, Andrew Morton wrote: > On Tue, 15 Jul 2025 15:23:41 +0200 David Hildenbrand <david@redhat.com> wrote: > >> Based on mm/mm-new. I dropped the CoW PFNMAP changes for now, still >> working on a better way to sort all that out cleanly. >> >> Cleanup and unify vm_normal_page_*() handling, also marking the >> huge zerofolio as special in the PMD. Add+use vm_normal_page_pud() and >> cleanup that XEN vm_ops->find_special_page thingy. >> >> There are plans of using vm_normal_page_*() more widely soon. >> >> Briefly tested on UML (making sure vm_normal_page() still works as expected >> without pte_special() support) and on x86-64 with a bunch of tests. > > When I was but a wee little bairn, my mother would always tell me > "never merge briefly tested patches when you're at -rc6". But three > weeks in -next should shake things out. ;) There is one arm oddity around pgdp_get() to figure out that a bot reported on my github branch, so no need to rush. Let's see how fast that can be resolved. > > However the series rejects due to the is_huge_zero_pmd -> > is_huge_zero_pfn changes in Luiz's "mm: introduce snapshot_page() v3" > series, so could we please have a redo against present mm-new? I'm confused: mm-new *still* contains the patch from Luiz series that was originally part of the RFC here. commit 791cb64cd7f8c2314c65d1dd5cb9e05e51c4cd70 Author: David Hildenbrand <david@redhat.com> Date: Mon Jul 14 09:16:51 2025 -0400 mm/memory: introduce is_huge_zero_pfn() and use it in vm_normal_page_pmd() If you want to put this series here before Luiz', you'll have to move that single patch as well. But probably this series should be done on top of Luiz work, because Luiz fixes something. [that patch was part of the RFC series, but Luiz picked it up for his work, so I dropped it from this series and based it on top of current mm-new] -- Cheers, David / dhildenb
On Wed, 16 Jul 2025 10:47:29 +0200 David Hildenbrand <david@redhat.com> wrote: > > > > However the series rejects due to the is_huge_zero_pmd -> > > is_huge_zero_pfn changes in Luiz's "mm: introduce snapshot_page() v3" > > series, so could we please have a redo against present mm-new? > > I'm confused: mm-new *still* contains the patch from Luiz series that > was originally part of the RFC here. > > commit 791cb64cd7f8c2314c65d1dd5cb9e05e51c4cd70 > Author: David Hildenbrand <david@redhat.com> > Date: Mon Jul 14 09:16:51 2025 -0400 > > mm/memory: introduce is_huge_zero_pfn() and use it in vm_normal_page_pmd() > > If you want to put this series here before Luiz', you'll have to move that > single patch as well. > > But probably this series should be done on top of Luiz work, because Luiz > fixes something. I'm confused at your confused. mm-new presently contains Luiz's latest v3 series "mm: introduce snapshot_page()" which includes a copy of your "mm/memory: introduce is_huge_zero_pfn() and use it in vm_normal_page_pmd()". > [that patch was part of the RFC series, but Luiz picked it up for his work, so I dropped it > from this series and based it on top of current mm-new]
On 17.07.25 00:27, Andrew Morton wrote: > On Wed, 16 Jul 2025 10:47:29 +0200 David Hildenbrand <david@redhat.com> wrote: > >>> >>> However the series rejects due to the is_huge_zero_pmd -> >>> is_huge_zero_pfn changes in Luiz's "mm: introduce snapshot_page() v3" >>> series, so could we please have a redo against present mm-new? >> >> I'm confused: mm-new *still* contains the patch from Luiz series that >> was originally part of the RFC here. >> >> commit 791cb64cd7f8c2314c65d1dd5cb9e05e51c4cd70 >> Author: David Hildenbrand <david@redhat.com> >> Date: Mon Jul 14 09:16:51 2025 -0400 >> >> mm/memory: introduce is_huge_zero_pfn() and use it in vm_normal_page_pmd() >> >> If you want to put this series here before Luiz', you'll have to move that >> single patch as well. >> >> But probably this series should be done on top of Luiz work, because Luiz >> fixes something. > > I'm confused at your confused. mm-new presently contains Luiz's latest > v3 series "mm: introduce snapshot_page()" which includes a copy of your > "mm/memory: introduce is_huge_zero_pfn() and use it in > vm_normal_page_pmd()". Let's recap: you said "the series rejects due to the is_huge_zero_pmd -> is_huge_zero_pfn changes in Luiz's "mm: introduce snapshot_page() v3" series" $ git checkout mm/mm-new -b tmp branch 'tmp' set up to track 'mm/mm-new'. Switched to a new branch 'tmp' $ b4 shazam 20250715132350.2448901-1-david@redhat.com Grabbing thread from lore.kernel.org/all/20250715132350.2448901-1-david@redhat.com/t.mbox.gz Checking for newer revisions Grabbing search results from lore.kernel.org Analyzing 17 messages in the thread Looking for additional code-review trailers on lore.kernel.org Analyzing 65 code-review messages Checking attestation on all messages, may take a moment... --- ✓ [PATCH v1 1/9] mm/huge_memory: move more common code into insert_pmd() ✓ [PATCH v1 2/9] mm/huge_memory: move more common code into insert_pud() ✓ [PATCH v1 3/9] mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd() ✓ [PATCH v1 4/9] fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio ✓ [PATCH v1 5/9] mm/huge_memory: mark PMD mappings of the huge zero folio special ✓ [PATCH v1 6/9] mm/memory: convert print_bad_pte() to print_bad_page_map() ✓ [PATCH v1 7/9] mm/memory: factor out common code from vm_normal_page_*() + Reviewed-by: Oscar Salvador <osalvador@suse.de> (✓ DKIM/suse.de) ✓ [PATCH v1 8/9] mm: introduce and use vm_normal_page_pud() + Reviewed-by: Oscar Salvador <osalvador@suse.de> (✓ DKIM/suse.de) ✓ [PATCH v1 9/9] mm: rename vm_ops->find_special_page() to vm_ops->find_normal_page() + Reviewed-by: Oscar Salvador <osalvador@suse.de> (✓ DKIM/suse.de) --- ✓ Signed: DKIM/redhat.com --- Total patches: 9 --- Base: using specified base-commit 64d19a2cdb7b62bcea83d9309d83e06d7aff4722 Applying: mm/huge_memory: move more common code into insert_pmd() Applying: mm/huge_memory: move more common code into insert_pud() Applying: mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd() Applying: fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio Applying: mm/huge_memory: mark PMD mappings of the huge zero folio special Applying: mm/memory: convert print_bad_pte() to print_bad_page_map() Applying: mm/memory: factor out common code from vm_normal_page_*() Applying: mm: introduce and use vm_normal_page_pud() Applying: mm: rename vm_ops->find_special_page() to vm_ops->find_normal_page() $ make mm/memory.o ... CC mm/memory.o I know that a tree from yesterday temporarily didn't have Luiz patches, so maybe that's what you ran into. *anyhow*, I will resend to work around that arm pgdp_get() issue. -- Cheers, David / dhildenb
© 2016 - 2025 Red Hat, Inc.