[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aQNlRQO7oXUcR84A@willie-the-truck>
Date: Thu, 30 Oct 2025 13:16:53 +0000
From: Will Deacon <will@...nel.org>
To: Dev Jain <dev.jain@....com>
Cc: Yang Shi <yang@...amperecomputing.com>, ryan.roberts@....com,
cl@...two.org, catalin.marinas@....com,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/2] arm64: mm: relax VM_ALLOW_HUGE_VMAP if BBML2_NOABORT
is supported
On Fri, Oct 17, 2025 at 09:20:10PM +0530, Dev Jain wrote:
> On 17/10/25 12:20 am, Yang Shi wrote:
> > On 10/14/25 11:50 PM, Dev Jain wrote:
> > > On 14/10/25 4:57 am, Yang Shi wrote:
> > > > When changing permissions for vmalloc area, VM_ALLOW_HUGE_VMAP area is
> > > > exclueded because kernel can't split the va mapping if it is called on
> > > > partial range.
> > > > It is no longer true if the machines support BBML2_NOABORT after commit
> > > > a166563e7ec3 ("arm64: mm: support large block mapping when
> > > > rodata=full").
> > > > So we can relax this restriction and update the comments accordingly.
> > > >
> > > > Fixes: a166563e7ec3 ("arm64: mm: support large block mapping
> > > > when rodata=full")
> > > > Signed-off-by: Yang Shi <yang@...amperecomputing.com>
> > > > ---
> > > > arch/arm64/mm/pageattr.c | 13 +++++++------
> > > > 1 file changed, 7 insertions(+), 6 deletions(-)
> > > >
> > > > diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
> > > > index c21a2c319028..b4dcae6273a8 100644
> > > > --- a/arch/arm64/mm/pageattr.c
> > > > +++ b/arch/arm64/mm/pageattr.c
> > > > @@ -157,13 +157,13 @@ static int change_memory_common(unsigned
> > > > long addr, int numpages,
> > > > /*
> > > > * Kernel VA mappings are always live, and splitting live section
> > > > - * mappings into page mappings may cause TLB conflicts. This means
> > > > - * we have to ensure that changing the permission bits of
> > > > the range
> > > > - * we are operating on does not result in such splitting.
> > > > + * mappings into page mappings may cause TLB conflicts on
> > > > the machines
> > > > + * which don't support BBML2_NOABORT.
> > > > *
> > > > * Let's restrict ourselves to mappings created by vmalloc
> > > > (or vmap).
> > > > - * Disallow VM_ALLOW_HUGE_VMAP mappings to guarantee that
> > > > only page
> > > > - * mappings are updated and splitting is never needed.
> > > > + * Disallow VM_ALLOW_HUGE_VMAP mappings if the systems
> > > > don't support
> > > > + * BBML2_NOABORT to guarantee that only page mappings are
> > > > updated and
> > > > + * splitting is never needed on those machines.
> > > > *
> > > > * So check whether the [addr, addr + size) interval is entirely
> > > > * covered by precisely one VM area that has the VM_ALLOC
> > > > flag set.
> > > > @@ -171,7 +171,8 @@ static int change_memory_common(unsigned
> > > > long addr, int numpages,
> > > > area = find_vm_area((void *)addr);
> > > > if (!area ||
> > > > end > (unsigned long)kasan_reset_tag(area->addr) +
> > > > area->size ||
> > > > - ((area->flags & (VM_ALLOC | VM_ALLOW_HUGE_VMAP)) != VM_ALLOC))
> > > > + !(area->flags & VM_ALLOC) || ((area->flags &
> > > > VM_ALLOW_HUGE_VMAP) &&
> > > > + !system_supports_bbml2_noabort()))
> > > > return -EINVAL;
> > > > if (!numpages)
> > >
> > > This will conflict with my upcoming vmalloc-huge series, so best to
> > > leave it to me,
> > > I already have this included :)
> >
> > My point is that I hope this can be merged as a hotfix for 6.18. I have
> > no strong opinion on either the maintainers take this one or from your
> > series. But if this will go into 6.18 as a hotfix, it should be also a
> > prerequisite patch (standalone) in your series, and the rest of your
> > series should be based on top of it. Of course this argument will not
> > stand if we don't care to have it fixed for 6.18.
>
> I see what you mean, but I don't think this patch should be treated as a
> hotfix. We forgot to relax a
>
> restriction - that's fine. That is not an incorrectness in the linear map
> series. A fix usually
>
> fixes an incorrectness.
Right, unless there's a real functional issue that is affecting people
then I don't see the need to take any of this for 6.18.
Will
Powered by blists - more mailing lists