Re: [PATCH] mm: don't ioremap COWed anon pages in generic_access_phys()
From: Lorenzo Stoakes (ARM)
Date: Fri Oct 02 2026 - 06:18:53 EST
On Fri, Oct 02, 2026 at 12:02:15PM +0200, David Hildenbrand (Arm) wrote:
> On 10/2/26 10:38, Lorenzo Stoakes (ARM) wrote:
> > On Thu, Oct 01, 2026 at 10:22:29PM +0200, David Hildenbrand (Arm) wrote:
> > So I'd say somebody from the core team should take over this if we want to
> > come up with a patch.
>
> Yes, I'll take care of it.
Thanks!
> >> Signed-off-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
> >
> > This looks reasonable but I hate that we have 'special' CoW overrides like
> > this :)
>
> After sending this yesterday, I concluded that we can do this cleaner: just have
>
> bool normal_page;
>
> (naming suggestions?)
>
> that express that this is something refcounted with a struct page, like
> documented for vm_normal_page().
>
> Then we can just refuse all of these.
Yeah it's all a bit tricky.
Maybe is_vm_normal_page ?
Or do we want to default to referring to a folio... but then pfnmap not a
folio... ugh.
is_normal?
With a comment explaining in sense of vm_normal_page/folio()?
> >> diff --git a/include/linux/mm.h b/include/linux/mm.h
> >> index c49ef99b4413..b90e547797a9 100644
> >> --- a/include/linux/mm.h
> >> +++ b/include/linux/mm.h
> >> unsigned long addr, pmd_t pmd);
> >> struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr,
> >> pmd_t pmd);
> >> +struct folio *vm_normal_folio_pud(struct vm_area_struct *vma,
> >> + unsigned long addr, pud_t pud);
> >
> > Hmm, if not defined before why would this need a new PUD handler? Do we
> > even have PUD-leaf PFN mappings?
>
> Yes we do. In any case, good for consistency.
In that case then we should definitely have it!
> > Since a folio being 'anon' is vague, because we stupidly made 'anon' vague
> > in general.
>
> For folios it's an established term :)
Yeah, fair enough, that is true.
And makes the anon folio -> tracked as such in my change consistent end-to-end.
I guess we have swapbacked for the shmem stuff as a clear delineation too.
>
> >
> > Anyway I was going to ask does this suffice for CoW but having an anon rmap
> > implies CoW so it does.
>
>
> The downside of using "bool normal_page;" is that we should check
> vm_normal_page() for any mapping, not just cow mappings. I suspect
> performance-wise we don't really care.
Yep, I'm sure it's fine!
--
Cheers, Lorenzo