Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1691982
| From | Mark Rutland <mark.rutland@arm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 06/11] arm64: Don't trap host pointer auth use to EL2 |
| Date | 2017-07-19 18:10 +0200 |
| Message-ID | <u4ZI1-2x4-73@gated-at.bofh.it> (permalink) |
| References | <u4ZHZ-2x4-33@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
To allow EL0 (and/or EL1) to use pointer authentication functionality,
we must ensure that pointer authentication instructions and accesses to
pointer authentication keys are not trapped to EL2 (where we will not be
able to handle them).
This patch ensures that HCR_EL2 is configured appropriately when the
kernel is booted at EL2. For non-VHE kernels we set HCR_EL2.{API,APK},
ensuring that EL1 can access keys and permit EL0 use of instructions.
For VHE kernels, EL2 access is controlled by EL3, and we need not set
anything.
This does not enable support for KVM guests, since KVM manages HCR_EL2
itself.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Christoffer Dall <christoffer.dall@linaro.org>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: kvmarm@lists.cs.columbia.edu
---
arch/arm64/include/asm/kvm_arm.h | 2 ++
arch/arm64/kernel/head.S | 19 +++++++++++++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index 61d694c..c1267e8 100644
--- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h
@@ -23,6 +23,8 @@
#include <asm/types.h>
/* Hyp Configuration Register (HCR) bits */
+#define HCR_API (UL(1) << 41)
+#define HCR_APK (UL(1) << 40)
#define HCR_E2H (UL(1) << 34)
#define HCR_ID (UL(1) << 33)
#define HCR_CD (UL(1) << 32)
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index 973df7d..8b8e8d7 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -412,10 +412,25 @@ CPU_LE( bic x0, x0, #(1 << 25) ) // Clear the EE bit for EL2
/* Hyp configuration. */
mov x0, #HCR_RW // 64-bit EL1
- cbz x2, set_hcr
+ cbz x2, 1f
orr x0, x0, #HCR_TGE // Enable Host Extensions
orr x0, x0, #HCR_E2H
-set_hcr:
+1:
+#ifdef CONFIG_ARM64_POINTER_AUTHENTICATION
+ /*
+ * Disable pointer authentication traps to EL2. The HCR_EL2.{APK,API}
+ * bits exist iff at least one authentication mechanism is implemented.
+ */
+ mrs x1, id_aa64isar1_el1
+ mov_q x3, ((0xf << ID_AA64ISAR1_GPI_SHIFT) | \
+ (0xf << ID_AA64ISAR1_GPA_SHIFT) | \
+ (0xf << ID_AA64ISAR1_API_SHIFT) | \
+ (0xf << ID_AA64ISAR1_APA_SHIFT))
+ and x1, x1, x3
+ cbz x1, 1f
+ orr x0, x0, #(HCR_APK | HCR_API)
+1:
+#endif
msr hcr_el2, x0
isb
--
1.9.1
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/11] ARMv8.3 pointer authentication userspace support Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
[PATCH 09/11] arm64/kvm: preserve host HCR_EL2 value Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
[PATCH 06/11] arm64: Don't trap host pointer auth use to EL2 Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
Re: [PATCH 06/11] arm64: Don't trap host pointer auth use to EL2 Dave Martin <Dave.Martin@arm.com> - 2017-07-24 12:40 +0200
[PATCH 05/11] arm64/cpufeature: detect pointer authentication Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
[PATCH 10/11] arm64/kvm: context-switch ptrauth registers Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
[PATCH 07/11] arm64: add basic pointer authentication support Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
Re: [PATCH 07/11] arm64: add basic pointer authentication support Dave Martin <Dave.Martin@arm.com> - 2017-07-25 17:30 +0200
[PATCH 08/11] arm64: expose user PAC bit positions via ptrace Mark Rutland <mark.rutland@arm.com> - 2017-07-19 18:10 +0200
Re: [PATCH 00/11] ARMv8.3 pointer authentication userspace support Dave Martin <Dave.Martin@arm.com> - 2017-07-21 19:10 +0200
Re: [PATCH 00/11] ARMv8.3 pointer authentication userspace support Mark Rutland <mark.rutland@arm.com> - 2017-07-25 14:10 +0200
Re: [PATCH 00/11] ARMv8.3 pointer authentication userspace support Jiong Wang <Jiong.Wang@arm.com> - 2017-07-25 16:10 +0200
Re: [kernel-hardening] [PATCH 00/11] ARMv8.3 pointer authentication userspace support Li Kun <hw.likun@huawei.com> - 2017-07-25 16:20 +0200
Re: [kernel-hardening] [PATCH 00/11] ARMv8.3 pointer authentication userspace support Mark Rutland <mark.rutland@arm.com> - 2017-07-25 17:20 +0200
Re: [PATCH 00/11] ARMv8.3 pointer authentication userspace support Mark Rutland <mark.rutland@arm.com> - 2017-07-25 18:10 +0200
csiph-web