[PATCH v4 24/26] arm64: mte: Introduce early param to disable MTE support
Andrey Konovalov
andreyknvl at google.com
Thu Jan 21 21:03:52 EST 2021
On Thu, Jan 21, 2021 at 8:37 PM Andrey Konovalov <andreyknvl at google.com> wrote:
>
> On Fri, May 15, 2020 at 7:17 PM Catalin Marinas <catalin.marinas at arm.com> wrote:
> >
> > For performance analysis it may be desirable to disable MTE altogether
> > via an early param. Introduce arm64.mte_disable and, if true, filter out
> > the sanitised ID_AA64PFR1_EL1.MTE field to avoid exposing the HWCAP to
> > user.
> >
> > Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
> > Cc: Will Deacon <will at kernel.org>
> > ---
> >
> > Notes:
> > New in v4.
> >
> > Documentation/admin-guide/kernel-parameters.txt | 4 ++++
> > arch/arm64/kernel/cpufeature.c | 11 +++++++++++
> > 2 files changed, 15 insertions(+)
> >
> > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> > index f2a93c8679e8..7436e7462b85 100644
> > --- a/Documentation/admin-guide/kernel-parameters.txt
> > +++ b/Documentation/admin-guide/kernel-parameters.txt
> > @@ -373,6 +373,10 @@
> > arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards
> > Format: <io>,<irq>,<nodeID>
> >
> > + arm64.mte_disable=
> > + [ARM64] Disable Linux support for the Memory
> > + Tagging Extension (both user and in-kernel).
> > +
> > ataflop= [HW,M68k]
> >
> > atarimouse= [HW,MOUSE] Atari Mouse
> > diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
> > index aaadc1cbc006..f7596830694f 100644
> > --- a/arch/arm64/kernel/cpufeature.c
> > +++ b/arch/arm64/kernel/cpufeature.c
> > @@ -126,12 +126,23 @@ static void cpu_enable_cnp(struct arm64_cpu_capabilities const *cap);
> > static bool __system_matches_cap(unsigned int n);
> >
> > #ifdef CONFIG_ARM64_MTE
> > +static bool mte_disable;
> > +
> > +static int __init arm64_mte_disable(char *buf)
> > +{
> > + return strtobool(buf, &mte_disable);
> > +}
> > +early_param("arm64.mte_disable", arm64_mte_disable);
> > +
> > s64 mte_ftr_filter(const struct arm64_ftr_bits *ftrp, s64 val)
> > {
> > struct device_node *np;
> > static bool memory_checked = false;
> > static bool mte_capable = true;
> >
> > + if (mte_disable)
> > + return ID_AA64PFR1_MTE_NI;
> > +
> > /* EL0-only MTE is not supported by Linux, don't expose it */
> > if (val < ID_AA64PFR1_MTE)
> > return ID_AA64PFR1_MTE_NI;
>
> Hi Catalin,
>
> While this patch didn't land upstream, we need an MTE kill-switch for
> Android GKI. Is this patch OK to take as is? Is it still valid?
Looking at this more closely: looks like this code no longer exists.
What would be the approach to add this kind of switch now?
Thanks!
More information about the linux-arm-kernel
mailing list