Commit f6203722 authored by Yeoreum Yun's avatar Yeoreum Yun Committed by Catalin Marinas
Browse files

arm64/hwcaps: Add MTE_STORE_ONLY hwcaps



Since ARMv8.9, FEAT_MTE_STORE_ONLY can be used to restrict raise of tag
check fault on store operation only.

add MTE_STORE_ONLY hwcaps so that user can use this feature.

Signed-off-by: default avatarYeoreum Yun <yeoreum.yun@arm.com>
Link: https://lore.kernel.org/r/20250618092957.2069907-5-yeoreum.yun@arm.com


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 4d51ff5b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -438,6 +438,9 @@ HWCAP2_POE
HWCAP3_MTE_FAR
    Functionality implied by ID_AA64PFR2_EL1.MTEFAR == 0b0001.

HWCAP3_MTE_STORE_ONLY
    Functionality implied by ID_AA64PFR2_EL1.MTESTOREONLY == 0b0001.

4. Unused AT_HWCAP bits
-----------------------

+1 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@

#define __khwcap3_feature(x)		(const_ilog2(HWCAP3_ ## x) + 128)
#define KERNEL_HWCAP_MTE_FAR		__khwcap3_feature(MTE_FAR)
#define KERNEL_HWCAP_MTE_STORE_ONLY	__khwcap3_feature(MTE_STORE_ONLY)

/*
 * This yields a mask that user programs can use to figure out what
+1 −0
Original line number Diff line number Diff line
@@ -144,5 +144,6 @@
 * HWCAP3 flags - for AT_HWCAP3
 */
#define HWCAP3_MTE_FAR		(1UL << 0)
#define HWCAP3_MTE_STORE_ONLY		(1UL << 1)

#endif /* _UAPI__ASM_HWCAP_H */
+1 −0
Original line number Diff line number Diff line
@@ -3228,6 +3228,7 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
	HWCAP_CAP(ID_AA64PFR1_EL1, MTE, MTE2, CAP_HWCAP, KERNEL_HWCAP_MTE),
	HWCAP_CAP(ID_AA64PFR1_EL1, MTE, MTE3, CAP_HWCAP, KERNEL_HWCAP_MTE3),
	HWCAP_CAP(ID_AA64PFR2_EL1, MTEFAR, IMP, CAP_HWCAP, KERNEL_HWCAP_MTE_FAR),
	HWCAP_CAP(ID_AA64PFR2_EL1, MTESTOREONLY, IMP, CAP_HWCAP , KERNEL_HWCAP_MTE_STORE_ONLY),
#endif /* CONFIG_ARM64_MTE */
	HWCAP_CAP(ID_AA64MMFR0_EL1, ECV, IMP, CAP_HWCAP, KERNEL_HWCAP_ECV),
	HWCAP_CAP(ID_AA64MMFR1_EL1, AFP, IMP, CAP_HWCAP, KERNEL_HWCAP_AFP),
+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ static const char *const hwcap_str[] = {
	[KERNEL_HWCAP_SME_STMOP]	= "smestmop",
	[KERNEL_HWCAP_SME_SMOP4]	= "smesmop4",
	[KERNEL_HWCAP_MTE_FAR]		= "mtefar",
	[KERNEL_HWCAP_MTE_STORE_ONLY]	= "mtestoreonly",
};

#ifdef CONFIG_COMPAT