Thread (58 messages) 58 messages, 10 authors, 2021-01-22

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

From: Andrey Konovalov <hidden>
Date: 2021-01-22 02:04:08
Also in: linux-arm-kernel, linux-mm

On Thu, Jan 21, 2021 at 8:37 PM Andrey Konovalov [off-list ref] wrote:
On Fri, May 15, 2020 at 7:17 PM Catalin Marinas [off-list ref] wrote:
quoted
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@arm.com>
Cc: Will Deacon <will@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!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help