[PATCH v2 2/2] arm64: mte: DC {GVA,GZVA} shouldn't be used when DCZID_EL0.DZP == 1
Reiji Watanabe
reijiw at google.com
Sat Dec 4 00:03:05 PST 2021
On Fri, Dec 3, 2021 at 10:52 AM Catalin Marinas <catalin.marinas at arm.com> wrote:
>
> On Fri, Dec 03, 2021 at 06:29:48PM +0000, Catalin Marinas wrote:
> > On Sun, Nov 07, 2021 at 11:11:49PM -0800, Reiji Watanabe wrote:
> > > diff --git a/arch/arm64/lib/mte.S b/arch/arm64/lib/mte.S
> > > index e83643b3995f..e62c048af337 100644
> > > --- a/arch/arm64/lib/mte.S
> > > +++ b/arch/arm64/lib/mte.S
> > > @@ -43,17 +43,23 @@ SYM_FUNC_END(mte_clear_page_tags)
> > > * x0 - address to the beginning of the page
> > > */
> > > SYM_FUNC_START(mte_zero_clear_page_tags)
> > > + and x0, x0, #(1 << MTE_TAG_SHIFT) - 1 // clear the tag
> > > mrs x1, dczid_el0
> > > + tbnz x1, #4, 2f // Branch if DC GZVA is prohibited
> > > and w1, w1, #0xf
> > > mov x2, #4
> > > lsl x1, x2, x1
> > > - and x0, x0, #(1 << MTE_TAG_SHIFT) - 1 // clear the tag
> > >
> > > 1: dc gzva, x0
> > > add x0, x0, x1
> > > tst x0, #(PAGE_SIZE - 1)
> > > b.ne 1b
> > > ret
> > > +
> > > +2: stzg x0, [x0], #16
> >
> > Nitpick: MTE_GRANULE_SIZE instead of 16.
I will fix it.
> >
> > > + tst x0, #(PAGE_SIZE - 1)
> > > + b.ne 2b
> > > + ret
> > > SYM_FUNC_END(mte_zero_clear_page_tags)
> >
> > We can use stz2g here since we know it's always a PAGE_SIZE and an even
> > number of tag granules.
Ah, yes, I will fix it using stz2g.
> I should have replied on v3. The comment is the same.
Thank you for the review and I will be working for v4 !
Regards,
Reiji
More information about the linux-arm-kernel
mailing list