From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
To: David Hildenbrand <david@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org,
nvdimm@lists.linux.dev, Andrew Morton <akpm@linux-foundation.org>,
Juergen Gross <jgross@suse.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
Dan Williams <dan.j.williams@intel.com>,
Matthew Wilcox <willy@infradead.org>, Jan Kara <jack@suse.cz>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Vlastimil Babka <vbabka@suse.cz>, Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Zi Yan <ziy@nvidia.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Nico Pache <npache@redhat.com>,
Ryan Roberts <ryan.roberts@arm.com>, Dev Jain <dev.jain@arm.com>,
Barry Song <baohua@kernel.org>, Jann Horn <jannh@google.com>,
Pedro Falcato <pfalcato@suse.de>, Hugh Dickins <hughd@google.com>,
Oscar Salvador <osalvador@suse.de>,
Lance Yang <lance.yang@linux.dev>
Subject: Re: [PATCH v2 7/9] mm/memory: factor out common code from vm_normal_page_*()
Date: Fri, 18 Jul 2025 13:43:06 +0100 [thread overview]
Message-ID: <eab1eb16-b99b-4d6b-9539-545d62ed1d5d@lucifer.local> (raw)
In-Reply-To: <b7457b96-2b78-4202-8380-4c7cd70767b9@redhat.com>
On Thu, Jul 17, 2025 at 10:03:44PM +0200, David Hildenbrand wrote:
> On 17.07.25 21:55, Lorenzo Stoakes wrote:
> > On Thu, Jul 17, 2025 at 08:51:51PM +0100, Lorenzo Stoakes wrote:
> > > > @@ -721,37 +772,21 @@ struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr,
> > > > print_bad_page_map(vma, addr, pmd_val(pmd), NULL);
> > > > return NULL;
> > > > }
> > > > -
> > > > - if (unlikely(vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP))) {
> > > > - if (vma->vm_flags & VM_MIXEDMAP) {
> > > > - if (!pfn_valid(pfn))
> > > > - return NULL;
> > > > - goto out;
> > > > - } else {
> > > > - unsigned long off;
> > > > - off = (addr - vma->vm_start) >> PAGE_SHIFT;
> > > > - if (pfn == vma->vm_pgoff + off)
> > > > - return NULL;
> > > > - if (!is_cow_mapping(vma->vm_flags))
> > > > - return NULL;
> > > > - }
> > > > - }
> > > > -
> > > > - if (is_huge_zero_pfn(pfn))
> > > > - return NULL;
> > > > - if (unlikely(pfn > highest_memmap_pfn)) {
> > > > - print_bad_page_map(vma, addr, pmd_val(pmd), NULL);
> > > > - return NULL;
> > > > - }
> > > > -
> > > > - /*
> > > > - * NOTE! We still have PageReserved() pages in the page tables.
> > > > - * eg. VDSO mappings can cause them to exist.
> > > > - */
> > > > -out:
> > > > - return pfn_to_page(pfn);
> > > > + return vm_normal_page_pfn(vma, addr, pfn, pmd_val(pmd));
> > >
> > > Hmm this seems broken, because you're now making these special on arches with
> > > pte_special() right? But then you're invoking the not-special function?
> > >
> > > Also for non-pte_special() arches you're kind of implying they _maybe_ could be
> > > special.
> >
> > OK sorry the diff caught me out here, you explicitly handle the pmd_special()
> > case here, duplicatively (yuck).
> >
> > Maybe you fix this up in a later patch :)
>
> I had that, but the conditions depend on the level, meaning: unnecessary
> checks for pte/pmd/pud level.
>
> I had a variant where I would pass "bool special" into vm_normal_page_pfn(),
> but I didn't like it.
>
> To optimize out, I would have to provide a "level" argument, and did not
> convince myself yet that that is a good idea at this point.
Yeah fair enough. That probably isn't worth it or might end up making things
even more ugly.
We must keep things within the realms of good taste...
See other mail for a suggestion... I think this is just an awkward function
whatever way round.
>
> --
> Cheers,
>
> David / dhildenb
>
next prev parent reply other threads:[~2025-07-18 12:43 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-17 11:52 [PATCH v2 0/9] mm: vm_normal_page*() improvements David Hildenbrand
2025-07-17 11:52 ` [PATCH v2 1/9] mm/huge_memory: move more common code into insert_pmd() David Hildenbrand
2025-07-17 15:34 ` Lorenzo Stoakes
2025-07-25 2:47 ` Wei Yang
2025-07-17 11:52 ` [PATCH v2 2/9] mm/huge_memory: move more common code into insert_pud() David Hildenbrand
2025-07-17 15:42 ` Lorenzo Stoakes
2025-07-25 2:56 ` Wei Yang
2025-07-17 11:52 ` [PATCH v2 3/9] mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd() David Hildenbrand
2025-07-17 15:47 ` Lorenzo Stoakes
2025-07-25 8:07 ` Wei Yang
2025-07-17 11:52 ` [PATCH v2 4/9] fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio David Hildenbrand
2025-07-17 18:09 ` Lorenzo Stoakes
2025-07-17 11:52 ` [PATCH v2 5/9] mm/huge_memory: mark PMD mappings of the huge zero folio special David Hildenbrand
2025-07-17 18:29 ` Lorenzo Stoakes
2025-07-17 20:31 ` David Hildenbrand
2025-07-18 10:41 ` Lorenzo Stoakes
2025-07-18 10:54 ` David Hildenbrand
2025-07-18 13:06 ` Lorenzo Stoakes
2025-07-28 8:49 ` Wei Yang
2025-07-17 11:52 ` [PATCH v2 6/9] mm/memory: convert print_bad_pte() to print_bad_page_map() David Hildenbrand
2025-07-17 19:17 ` Lorenzo Stoakes
2025-07-17 20:03 ` David Hildenbrand
2025-07-18 10:15 ` Lorenzo Stoakes
2025-07-18 11:04 ` David Hildenbrand
2025-07-18 12:55 ` Lorenzo Stoakes
2025-07-17 22:06 ` Demi Marie Obenour
2025-07-18 7:44 ` David Hildenbrand
2025-07-18 7:59 ` Demi Marie Obenour
2025-07-18 8:26 ` David Hildenbrand
2025-07-17 11:52 ` [PATCH v2 7/9] mm/memory: factor out common code from vm_normal_page_*() David Hildenbrand
2025-07-17 19:51 ` Lorenzo Stoakes
2025-07-17 19:55 ` Lorenzo Stoakes
2025-07-17 20:03 ` David Hildenbrand
2025-07-18 12:43 ` Lorenzo Stoakes [this message]
2025-07-30 12:54 ` David Hildenbrand
2025-07-30 13:24 ` Lorenzo Stoakes
2025-07-17 20:12 ` David Hildenbrand
2025-07-18 12:35 ` Lorenzo Stoakes
2025-07-17 11:52 ` [PATCH v2 8/9] mm: introduce and use vm_normal_page_pud() David Hildenbrand
2025-07-17 20:03 ` Lorenzo Stoakes
2025-07-17 20:14 ` David Hildenbrand
2025-07-18 10:47 ` Lorenzo Stoakes
2025-07-18 11:06 ` David Hildenbrand
2025-07-18 12:44 ` Lorenzo Stoakes
2025-07-29 7:52 ` Wei Yang
2025-07-17 11:52 ` [PATCH v2 9/9] mm: rename vm_ops->find_special_page() to vm_ops->find_normal_page() David Hildenbrand
2025-07-17 20:07 ` Lorenzo Stoakes
2025-07-29 7:53 ` Wei Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=eab1eb16-b99b-4d6b-9539-545d62ed1d5d@lucifer.local \
--to=lorenzo.stoakes@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=brauner@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=dev.jain@arm.com \
--cc=hughd@google.com \
--cc=jack@suse.cz \
--cc=jannh@google.com \
--cc=jgross@suse.com \
--cc=lance.yang@linux.dev \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=npache@redhat.com \
--cc=nvdimm@lists.linux.dev \
--cc=oleksandr_tyshchenko@epam.com \
--cc=osalvador@suse.de \
--cc=pfalcato@suse.de \
--cc=rppt@kernel.org \
--cc=ryan.roberts@arm.com \
--cc=sstabellini@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.org \
--cc=xen-devel@lists.xenproject.org \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).