[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