[PATCH v4 24/26] arm64: mte: Introduce early param to disable MTE support

Andrey Konovalov andreyknvl at google.com
Thu Jan 21 14:37:18 EST 2021


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 Calatin,

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?

Thanks!



More information about the linux-arm-kernel mailing list