Skip to content

Commit f620372

Browse files
LeviYeoReumctmarinas
authored andcommitted
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: Yeoreum Yun <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Catalin Marinas <[email protected]>
1 parent 4d51ff5 commit f620372

File tree

5 files changed

+7
-0
lines changed

5 files changed

+7
-0
lines changed

Documentation/arch/arm64/elf_hwcaps.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,9 @@ HWCAP2_POE
438438
HWCAP3_MTE_FAR
439439
Functionality implied by ID_AA64PFR2_EL1.MTEFAR == 0b0001.
440440

441+
HWCAP3_MTE_STORE_ONLY
442+
Functionality implied by ID_AA64PFR2_EL1.MTESTOREONLY == 0b0001.
443+
441444
4. Unused AT_HWCAP bits
442445
-----------------------
443446

arch/arm64/include/asm/hwcap.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@
177177

178178
#define __khwcap3_feature(x) (const_ilog2(HWCAP3_ ## x) + 128)
179179
#define KERNEL_HWCAP_MTE_FAR __khwcap3_feature(MTE_FAR)
180+
#define KERNEL_HWCAP_MTE_STORE_ONLY __khwcap3_feature(MTE_STORE_ONLY)
180181

181182
/*
182183
* This yields a mask that user programs can use to figure out what

arch/arm64/include/uapi/asm/hwcap.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,5 +144,6 @@
144144
* HWCAP3 flags - for AT_HWCAP3
145145
*/
146146
#define HWCAP3_MTE_FAR (1UL << 0)
147+
#define HWCAP3_MTE_STORE_ONLY (1UL << 1)
147148

148149
#endif /* _UAPI__ASM_HWCAP_H */

arch/arm64/kernel/cpufeature.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3228,6 +3228,7 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
32283228
HWCAP_CAP(ID_AA64PFR1_EL1, MTE, MTE2, CAP_HWCAP, KERNEL_HWCAP_MTE),
32293229
HWCAP_CAP(ID_AA64PFR1_EL1, MTE, MTE3, CAP_HWCAP, KERNEL_HWCAP_MTE3),
32303230
HWCAP_CAP(ID_AA64PFR2_EL1, MTEFAR, IMP, CAP_HWCAP, KERNEL_HWCAP_MTE_FAR),
3231+
HWCAP_CAP(ID_AA64PFR2_EL1, MTESTOREONLY, IMP, CAP_HWCAP , KERNEL_HWCAP_MTE_STORE_ONLY),
32313232
#endif /* CONFIG_ARM64_MTE */
32323233
HWCAP_CAP(ID_AA64MMFR0_EL1, ECV, IMP, CAP_HWCAP, KERNEL_HWCAP_ECV),
32333234
HWCAP_CAP(ID_AA64MMFR1_EL1, AFP, IMP, CAP_HWCAP, KERNEL_HWCAP_AFP),

arch/arm64/kernel/cpuinfo.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ static const char *const hwcap_str[] = {
161161
[KERNEL_HWCAP_SME_STMOP] = "smestmop",
162162
[KERNEL_HWCAP_SME_SMOP4] = "smesmop4",
163163
[KERNEL_HWCAP_MTE_FAR] = "mtefar",
164+
[KERNEL_HWCAP_MTE_STORE_ONLY] = "mtestoreonly",
164165
};
165166

166167
#ifdef CONFIG_COMPAT

0 commit comments

Comments
 (0)