Re: [RFC PATCH 0/3] arm64: support FEAT_BBM level 2 and large block mapping when rodata=full

From: Jonathan Cameron
Date: Thu Jan 02 2025 - 07:13:39 EST


On Tue, 10 Dec 2024 11:31:52 +0000
Will Deacon <will@xxxxxxxxxx> wrote:

> On Mon, Nov 18, 2024 at 10:16:07AM -0800, Yang Shi wrote:
> >
> > When rodata=full kernel linear mapping is mapped by PTE due to arm's
> > break-before-make rule.
> >
> > This resulted in a couple of problems:
> > - performance degradation
> > - more TLB pressure
> > - memory waste for kernel page table
> >
> > There are some workarounds to mitigate the problems, for example, using
> > rodata=on, but this compromises the security measurement.
> >
> > With FEAT_BBM level 2 support, splitting large block page table to
> > smaller ones doesn't need to make the page table entry invalid anymore.
> > This allows kernel split large block mapping on the fly.
>
> I think you can still get TLB conflict aborts in this case, so this
> doesn't work. Hopefully the architecture can strengthen this in the
> future to give you what you need.
>
> Will
>

Hi All,

Given we have two threads on this topic, replying here as well...

Huawei has implementations that support BBML2, and might report TLB conflict
abort after changing block size directly until an appropriate TLB invalidation
instruction completes and this Implementation Choice is architecturally compliant.

I'm not trying to restrict potential solutions, but just making the point that we
will be interested in solutions that handle the conflict abort.

Jonathan