]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64/cpufeature: Add FEAT_MTE_TAGGED_FAR feature
authorYeoreum Yun <yeoreum.yun@arm.com>
Wed, 18 Jun 2025 08:45:04 +0000 (09:45 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 2 Jul 2025 16:44:10 +0000 (17:44 +0100)
Add FEAT_MTE_TAGGED_FAR cpucap which makes FAR_ELx report
all non-address bits on a synchronous MTE tag check fault since Armv8.9

Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
Acked-by: Yury Khrustalev <yury.khrustalev@arm.com>
Link: https://lore.kernel.org/r/20250618084513.1761345-2-yeoreum.yun@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/cpufeature.c
arch/arm64/tools/cpucaps

index b34044e20128b367efa22527387a566456e83992..af6a6924a3e81d505eb05d3c21ee49c6d3f2522d 100644 (file)
@@ -320,6 +320,7 @@ static const struct arm64_ftr_bits ftr_id_aa64pfr1[] = {
 
 static const struct arm64_ftr_bits ftr_id_aa64pfr2[] = {
        ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_FPMR_SHIFT, 4, 0),
+       ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_MTEFAR_SHIFT, 4, ID_AA64PFR2_EL1_MTEFAR_NI),
        ARM64_FTR_END,
 };
 
@@ -2874,6 +2875,13 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
                .matches = has_cpuid_feature,
                ARM64_CPUID_FIELDS(ID_AA64PFR1_EL1, MTE, MTE3)
        },
+       {
+               .desc = "FAR on MTE Tag Check Fault",
+               .capability = ARM64_MTE_FAR,
+               .type = ARM64_CPUCAP_SYSTEM_FEATURE,
+               .matches = has_cpuid_feature,
+               ARM64_CPUID_FIELDS(ID_AA64PFR2_EL1, MTEFAR, IMP)
+       },
 #endif /* CONFIG_ARM64_MTE */
        {
                .desc = "RCpc load-acquire (LDAPR)",
index 10effd4cff6b4efbd1bc4f7d4d515691b2ece478..fe8f4f8ce95cd5d57ba51f8c6259c548868eee7b 100644 (file)
@@ -68,6 +68,7 @@ MPAM
 MPAM_HCR
 MTE
 MTE_ASYMM
+MTE_FAR
 SME
 SME_FA64
 SME2