Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1615326

[RFC 4/9] arm64/cpufeature: detect pointer authentication

From Mark Rutland <mark.rutland@arm.com>
Newsgroups linux.kernel
Subject [RFC 4/9] arm64/cpufeature: detect pointer authentication
Date 2017-04-03 17:30 +0200
Message-ID <tsc5A-cE-23@gated-at.bofh.it> (permalink)
References <tsc5A-cE-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


So that we can dynamically handle the presence of pointer authentication
functionality, wire up probing code in cpufeature.c.

Currently, this only detects the presence of an architected algorithm.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
---
 arch/arm64/include/asm/cpucaps.h |  4 +++-
 arch/arm64/kernel/cpufeature.c   | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/include/asm/cpucaps.h b/arch/arm64/include/asm/cpucaps.h
index fb78a5d..15dd6d6 100644
--- a/arch/arm64/include/asm/cpucaps.h
+++ b/arch/arm64/include/asm/cpucaps.h
@@ -37,7 +37,9 @@
 #define ARM64_HAS_NO_FPSIMD			16
 #define ARM64_WORKAROUND_REPEAT_TLBI		17
 #define ARM64_WORKAROUND_QCOM_FALKOR_E1003	18
+#define ARM64_HAS_ADDRESS_AUTH			19
+#define ARM64_HAS_GENERIC_AUTH			20
 
-#define ARM64_NCAPS				19
+#define ARM64_NCAPS				21
 
 #endif /* __ASM_CPUCAPS_H */
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 30255b2..172c80e 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -871,6 +871,28 @@ static bool has_no_fpsimd(const struct arm64_cpu_capabilities *entry, int __unus
 		.min_field_value = 0,
 		.matches = has_no_fpsimd,
 	},
+#ifdef CONFIG_ARM64_POINTER_AUTHENTICATION
+	{
+		.desc = "Address authentication (architected algorithm)",
+		.capability = ARM64_HAS_ADDRESS_AUTH,
+		.def_scope = SCOPE_SYSTEM,
+		.sys_reg = SYS_ID_AA64ISAR1_EL1,
+		.sign = FTR_UNSIGNED,
+		.field_pos = ID_AA64ISAR1_APA_SHIFT,
+		.min_field_value = ID_AA64ISAR1_APA_ARCHITECTED,
+		.matches = has_cpuid_feature,
+	},
+	{
+		.desc = "Generic authentication (architected algorithm)",
+		.capability = ARM64_HAS_GENERIC_AUTH,
+		.def_scope = SCOPE_SYSTEM,
+		.sys_reg = SYS_ID_AA64ISAR1_EL1,
+		.sign = FTR_UNSIGNED,
+		.field_pos = ID_AA64ISAR1_GPA_SHIFT,
+		.min_field_value = ID_AA64ISAR1_GPA_ARCHITECTED,
+		.matches = has_cpuid_feature
+	},
+#endif /* CONFIG_ARM64_POINTER_AUTHENTICATION */
 	{},
 };
 
-- 
1.9.1

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[RFC 0/9] ARMv8.3 pointer authentication userspace support Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  [RFC 4/9] arm64/cpufeature: detect pointer authentication Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  [RFC 8/9] arm64/kvm: context-switch PAC registers Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
    Re: [RFC 8/9] arm64/kvm: context-switch PAC registers Marc Zyngier <marc.zyngier@arm.com> - 2017-04-07 17:50 +0200
  [RFC 9/9] arm64: docs: document pointer authentication Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  [RFC 2/9] arm64: add pointer authentication register bits Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  [RFC 7/9] arm64: expose PAC bit positions via ptrace Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  [RFC 1/9] asm-generic: mm_hooks: allow hooks to be overridden individually Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  [RFC 6/9] arm64: add basic pointer authentication support Mark Rutland <mark.rutland@arm.com> - 2017-04-03 17:30 +0200
  Re: [RFC 0/9] ARMv8.3 pointer authentication userspace support Adam Wallis <awallis@codeaurora.org> - 2017-04-07 17:20 +0200

csiph-web