Skip to content

Commit 94d0657

Browse files
jgoulyctmarinas
authored andcommitted
arm64: add FEAT_LSE128 HWCAP
Add HWCAP for FEAT_LSE128 (128-bit Atomic instructions). Signed-off-by: Joey Gouly <joey.gouly@arm.com> Cc: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20231003124544.858804-2-joey.gouly@arm.com Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
1 parent 80652cc commit 94d0657

File tree

6 files changed

+8
-0
lines changed

6 files changed

+8
-0
lines changed

Documentation/arch/arm64/elf_hwcaps.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ HWCAP2_SVE_B16B16
314314
HWCAP2_LRCPC3
315315
Functionality implied by ID_AA64ISAR1_EL1.LRCPC == 0b0011.
316316

317+
HWCAP2_LSE128
318+
Functionality implied by ID_AA64ISAR0_EL1.Atomic == 0b0011.
319+
317320
4. Unused AT_HWCAP bits
318321
-----------------------
319322

arch/arm64/include/asm/hwcap.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@
141141
#define KERNEL_HWCAP_HBC __khwcap2_feature(HBC)
142142
#define KERNEL_HWCAP_SVE_B16B16 __khwcap2_feature(SVE_B16B16)
143143
#define KERNEL_HWCAP_LRCPC3 __khwcap2_feature(LRCPC3)
144+
#define KERNEL_HWCAP_LSE128 __khwcap2_feature(LSE128)
144145

145146
/*
146147
* 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
@@ -106,5 +106,6 @@
106106
#define HWCAP2_HBC (1UL << 44)
107107
#define HWCAP2_SVE_B16B16 (1UL << 45)
108108
#define HWCAP2_LRCPC3 (1UL << 46)
109+
#define HWCAP2_LSE128 (1UL << 47)
109110

110111
#endif /* _UAPI__ASM_HWCAP_H */

arch/arm64/kernel/cpufeature.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2789,6 +2789,7 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
27892789
HWCAP_CAP(ID_AA64ISAR0_EL1, SHA2, SHA512, CAP_HWCAP, KERNEL_HWCAP_SHA512),
27902790
HWCAP_CAP(ID_AA64ISAR0_EL1, CRC32, IMP, CAP_HWCAP, KERNEL_HWCAP_CRC32),
27912791
HWCAP_CAP(ID_AA64ISAR0_EL1, ATOMIC, IMP, CAP_HWCAP, KERNEL_HWCAP_ATOMICS),
2792+
HWCAP_CAP(ID_AA64ISAR0_EL1, ATOMIC, FEAT_LSE128, CAP_HWCAP, KERNEL_HWCAP_LSE128),
27922793
HWCAP_CAP(ID_AA64ISAR0_EL1, RDM, IMP, CAP_HWCAP, KERNEL_HWCAP_ASIMDRDM),
27932794
HWCAP_CAP(ID_AA64ISAR0_EL1, SHA3, IMP, CAP_HWCAP, KERNEL_HWCAP_SHA3),
27942795
HWCAP_CAP(ID_AA64ISAR0_EL1, SM3, IMP, CAP_HWCAP, KERNEL_HWCAP_SM3),

arch/arm64/kernel/cpuinfo.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ static const char *const hwcap_str[] = {
129129
[KERNEL_HWCAP_HBC] = "hbc",
130130
[KERNEL_HWCAP_SVE_B16B16] = "sveb16b16",
131131
[KERNEL_HWCAP_LRCPC3] = "lrcpc3",
132+
[KERNEL_HWCAP_LSE128] = "lse128",
132133
};
133134

134135
#ifdef CONFIG_COMPAT

arch/arm64/tools/sysreg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,6 +1239,7 @@ EndEnum
12391239
UnsignedEnum 23:20 ATOMIC
12401240
0b0000 NI
12411241
0b0010 IMP
1242+
0b0011 FEAT_LSE128
12421243
EndEnum
12431244
UnsignedEnum 19:16 CRC32
12441245
0b0000 NI

0 commit comments

Comments
 (0)