Skip to content

Commit 7181f71

Browse files
LeviYeoReumctmarinas
authored andcommitted
arm64: cpufeature: Add FEAT_LSUI
Since Armv9.6, FEAT_LSUI introduces atomic instructions that allow privileged code to access user memory without clearing the PSTATE.PAN bit. Add CPU feature detection for FEAT_LSUI. Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com> [catalin.marinas@arm.com: Remove commit log references to SW_PAN] Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
1 parent 1f318b9 commit 7181f71

3 files changed

Lines changed: 13 additions & 0 deletions

File tree

arch/arm64/include/asm/cpucaps.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ cpucap_is_possible(const unsigned int cap)
7171
return true;
7272
case ARM64_HAS_PMUV3:
7373
return IS_ENABLED(CONFIG_HW_PERF_EVENTS);
74+
case ARM64_HAS_LSUI:
75+
return IS_ENABLED(CONFIG_ARM64_LSUI);
7476
}
7577

7678
return true;

arch/arm64/kernel/cpufeature.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ static const struct arm64_ftr_bits ftr_id_aa64isar2[] = {
281281

282282
static const struct arm64_ftr_bits ftr_id_aa64isar3[] = {
283283
ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_EL1_FPRCVT_SHIFT, 4, 0),
284+
ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_EL1_LSUI_SHIFT, 4, ID_AA64ISAR3_EL1_LSUI_NI),
284285
ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_EL1_LSFE_SHIFT, 4, 0),
285286
ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_EL1_FAMINMAX_SHIFT, 4, 0),
286287
ARM64_FTR_END,
@@ -3169,6 +3170,15 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
31693170
.cpu_enable = cpu_enable_ls64_v,
31703171
ARM64_CPUID_FIELDS(ID_AA64ISAR1_EL1, LS64, LS64_V)
31713172
},
3173+
#ifdef CONFIG_ARM64_LSUI
3174+
{
3175+
.desc = "Unprivileged Load Store Instructions (LSUI)",
3176+
.capability = ARM64_HAS_LSUI,
3177+
.type = ARM64_CPUCAP_SYSTEM_FEATURE,
3178+
.matches = has_cpuid_feature,
3179+
ARM64_CPUID_FIELDS(ID_AA64ISAR3_EL1, LSUI, IMP)
3180+
},
3181+
#endif
31723182
{},
31733183
};
31743184

arch/arm64/tools/cpucaps

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ HAS_LPA2
4848
HAS_LSE_ATOMICS
4949
HAS_LS64
5050
HAS_LS64_V
51+
HAS_LSUI
5152
HAS_MOPS
5253
HAS_NESTED_VIRT
5354
HAS_BBML2_NOABORT

0 commit comments

Comments
 (0)