* [PATCH 0/1] arm64/cpufeature: Add an option for mte support @ 2021-07-28 9:42 yee.lee 2021-07-28 9:42 ` [PATCH 1/1] arm64/cpufeature: Add option to disable " yee.lee 0 siblings, 1 reply; 4+ messages in thread From: yee.lee @ 2021-07-28 9:42 UTC (permalink / raw) To: linux-kernel Cc: nicholas.Tang, Kuan-Ying.lee, chinwen.chang, Yee Lee, Matthias Brugger, moderated list:ARM/Mediatek SoC support, moderated list:ARM/Mediatek SoC support From: Yee Lee <yee.lee@mediatek.com> Arm64 introduced mte to enforce memory protection but also increased the system requirements, such as the additional tag memory and the firmware control complexity. For the case of products with limited resouce or low-power environment, the requirements to support mte is unlikely reached. Hence, a solution for low-end devices is necessary. This patch Add an option for mte support. An parameter from system is used to indicate its states for all requirements. If not, mte is disabled both in kernel and userspace. === Test === QEMU5.2 + mte passed cmdline : "arm64_mte_not_support" boot log: ...(skip) [ 0.000000] CPU features: detected: Memory Tagging Extension [ 0.000000] CPU features: detected: Spectre-v2 [ 0.000000] CPU features: detected: Spectre-v4 [ 0.000000] CPU features: kernel page table isolation forced ON by KASLR [ 0.000000] CPU features: detected: Kernel page table isolation (KPTI) [ 0.000000] CPU features: MTE is disabled since system does not support. Yee Lee (1): arm64/cpufeature: Add option to disable mte support arch/arm64/include/asm/cpufeature.h | 4 +++- arch/arm64/kernel/cpufeature.c | 13 +++++++++++++ arch/arm64/kernel/image-vars.h | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) -- 2.18.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/1] arm64/cpufeature: Add option to disable mte support 2021-07-28 9:42 [PATCH 0/1] arm64/cpufeature: Add an option for mte support yee.lee @ 2021-07-28 9:42 ` yee.lee 2021-07-28 9:59 ` Suzuki K Poulose 0 siblings, 1 reply; 4+ messages in thread From: yee.lee @ 2021-07-28 9:42 UTC (permalink / raw) To: linux-kernel Cc: nicholas.Tang, Kuan-Ying.lee, chinwen.chang, Yee Lee, Catalin Marinas, Will Deacon, Matthias Brugger, Marc Zyngier, David Brazdil, Suzuki K Poulose, Mark Rutland, Ionela Voinescu, Amit Daniel Kachhap, Quentin Perret, Andrew Scull, James Morse, Fuad Tabba, moderated list:ARM64 PORT (AARCH64 ARCHITECTURE), moderated list:ARM/Mediatek SoC support From: Yee Lee <yee.lee@mediatek.com> Add a static key to exapnd the logic of system_supports_mte(). This function controls mte enablement in both EL1 and EL0. The static key, "arm64_mte_support" is default true and can be disabled via the early_param. Signed-off-by: Yee Lee <yee.lee@mediatek.com> --- arch/arm64/include/asm/cpufeature.h | 4 +++- arch/arm64/kernel/cpufeature.c | 13 +++++++++++++ arch/arm64/kernel/image-vars.h | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h index 9bb9d11750d7..0e5c82f2e012 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -420,6 +420,7 @@ static __always_inline bool is_hyp_code(void) extern DECLARE_BITMAP(cpu_hwcaps, ARM64_NCAPS); extern struct static_key_false cpu_hwcap_keys[ARM64_NCAPS]; extern struct static_key_false arm64_const_caps_ready; +extern struct static_key_true arm64_mte_support; /* ARM64 CAPS + alternative_cb */ #define ARM64_NPATCHABLE (ARM64_NCAPS + 1) @@ -756,7 +757,8 @@ static __always_inline bool system_uses_irq_prio_masking(void) static inline bool system_supports_mte(void) { return IS_ENABLED(CONFIG_ARM64_MTE) && - cpus_have_const_cap(ARM64_MTE); + cpus_have_const_cap(ARM64_MTE) && + static_branch_likely(&arm64_mte_support); } static inline bool system_has_prio_mask_debugging(void) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 0ead8bfedf20..b1602ad3d7c0 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -1840,9 +1840,22 @@ static void bti_enable(const struct arm64_cpu_capabilities *__unused) } #endif /* CONFIG_ARM64_BTI */ +DEFINE_STATIC_KEY_TRUE(arm64_mte_support); +EXPORT_SYMBOL(arm64_mte_support); #ifdef CONFIG_ARM64_MTE +static int __init disable_arm64_mte_support(char *str) +{ + static_branch_disable(&arm64_mte_support); + return 0; +} +early_param("arm64_mte_not_support", disable_arm64_mte_support); + static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap) { + if(!system_supports_mte()){ + pr_info("MTE is disabled since system does not support.\n"); + return ; + } /* * Clear the tags in the zero page. This needs to be done via the * linear map which has the Tagged attribute. diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h index c96a9a0043bf..04cf30ec84e7 100644 --- a/arch/arm64/kernel/image-vars.h +++ b/arch/arm64/kernel/image-vars.h @@ -83,6 +83,9 @@ KVM_NVHE_ALIAS(__icache_flags); KVM_NVHE_ALIAS(arm64_const_caps_ready); KVM_NVHE_ALIAS(cpu_hwcap_keys); +/* Static key which indicates if system supports mte */ +KVM_NVHE_ALIAS(arm64_mte_support); + /* Static keys which are set if a vGIC trap should be handled in hyp. */ KVM_NVHE_ALIAS(vgic_v2_cpuif_trap); KVM_NVHE_ALIAS(vgic_v3_cpuif_trap); -- 2.18.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] arm64/cpufeature: Add option to disable mte support 2021-07-28 9:42 ` [PATCH 1/1] arm64/cpufeature: Add option to disable " yee.lee @ 2021-07-28 9:59 ` Suzuki K Poulose 2021-07-28 10:05 ` Marc Zyngier 0 siblings, 1 reply; 4+ messages in thread From: Suzuki K Poulose @ 2021-07-28 9:59 UTC (permalink / raw) To: yee.lee, linux-kernel Cc: nicholas.Tang, Kuan-Ying.lee, chinwen.chang, Catalin Marinas, Will Deacon, Matthias Brugger, Marc Zyngier, David Brazdil, Mark Rutland, Ionela Voinescu, Amit Daniel Kachhap, Quentin Perret, Andrew Scull, James Morse, Fuad Tabba, moderated list:ARM64 PORT (AARCH64 ARCHITECTURE), moderated list:ARM/Mediatek SoC support On 28/07/2021 10:42, yee.lee@mediatek.com wrote: > From: Yee Lee <yee.lee@mediatek.com> > > Add a static key to exapnd the logic of system_supports_mte(). > This function controls mte enablement in both EL1 and EL0. > > The static key, "arm64_mte_support" is default true and can > be disabled via the early_param. Please could we use the id-reg override mechanism and give it an alias ? See : arch/arm64/kernel/idreg-override.c And could add something along the lines of : arm64.nomte Cheers Suzuki ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] arm64/cpufeature: Add option to disable mte support 2021-07-28 9:59 ` Suzuki K Poulose @ 2021-07-28 10:05 ` Marc Zyngier 0 siblings, 0 replies; 4+ messages in thread From: Marc Zyngier @ 2021-07-28 10:05 UTC (permalink / raw) To: Suzuki K Poulose Cc: yee.lee, linux-kernel, nicholas.Tang, Kuan-Ying.lee, chinwen.chang, Catalin Marinas, Will Deacon, Matthias Brugger, David Brazdil, Mark Rutland, Ionela Voinescu, Amit Daniel Kachhap, Quentin Perret, Andrew Scull, James Morse, Fuad Tabba, moderated list:ARM64 PORT (AARCH64 ARCHITECTURE), moderated list:ARM/Mediatek SoC support On Wed, 28 Jul 2021 10:59:24 +0100, Suzuki K Poulose <suzuki.poulose@arm.com> wrote: > > On 28/07/2021 10:42, yee.lee@mediatek.com wrote: > > From: Yee Lee <yee.lee@mediatek.com> > > > > Add a static key to exapnd the logic of system_supports_mte(). > > This function controls mte enablement in both EL1 and EL0. > > > > The static key, "arm64_mte_support" is default true and can > > be disabled via the early_param. > > Please could we use the id-reg override mechanism and give it > an alias ? > > See : > > arch/arm64/kernel/idreg-override.c > > And could add something along the lines of : > > arm64.nomte Damn, you beat me to it! :D M. -- Without deviation from the norm, progress is not possible. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-07-28 10:05 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-07-28 9:42 [PATCH 0/1] arm64/cpufeature: Add an option for mte support yee.lee 2021-07-28 9:42 ` [PATCH 1/1] arm64/cpufeature: Add option to disable " yee.lee 2021-07-28 9:59 ` Suzuki K Poulose 2021-07-28 10:05 ` Marc Zyngier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).