[PATCH v2 05/12] KVM: arm64: nVHE: Add EL2h sync exception handler
Pierre-Clément Tosi
ptosi at google.com
Wed Apr 10 01:28:51 PDT 2024
Introduce a handler for EL2h synchronous exceptions distinct from
handlers for other "invalid" exceptions when running with the nVHE host
vector. This will allow a future patch to handle kCFI (synchronous)
errors without affecting other classes of exceptions.
Signed-off-by: Pierre-Clément Tosi <ptosi at google.com>
---
arch/arm64/kvm/hyp/nvhe/host.S | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/kvm/hyp/nvhe/host.S b/arch/arm64/kvm/hyp/nvhe/host.S
index 7397b4f1838a..0613b6e35137 100644
--- a/arch/arm64/kvm/hyp/nvhe/host.S
+++ b/arch/arm64/kvm/hyp/nvhe/host.S
@@ -183,7 +183,7 @@ SYM_FUNC_END(__host_hvc)
.endif
.endm
-.macro invalid_host_el2_vect
+.macro __host_el2_vect handler:req
.align 7
/*
@@ -202,7 +202,7 @@ SYM_FUNC_END(__host_hvc)
* context has been saved by __host_exit or after the hyp context has
* been partially clobbered by __host_enter.
*/
- b __hyp_panic
+ b \handler
.L__hyp_sp_overflow\@:
/* Switch to the overflow stack */
@@ -212,6 +212,10 @@ SYM_FUNC_END(__host_hvc)
ASM_BUG()
.endm
+.macro host_el2_sync_vect
+ __host_el2_vect __hyp_panic
+.endm
+
.macro invalid_host_el1_vect
.align 7
mov x0, xzr /* restore_host = false */
@@ -221,6 +225,10 @@ SYM_FUNC_END(__host_hvc)
b __hyp_do_panic
.endm
+.macro invalid_host_el2_vect
+ __host_el2_vect __hyp_panic
+.endm
+
/*
* The host vector does not use an ESB instruction in order to avoid consuming
* SErrors that should only be consumed by the host. Guest entry is deferred by
@@ -238,7 +246,7 @@ SYM_CODE_START(__kvm_hyp_host_vector)
invalid_host_el2_vect // FIQ EL2t
invalid_host_el2_vect // Error EL2t
- invalid_host_el2_vect // Synchronous EL2h
+ host_el2_sync_vect // Synchronous EL2h
invalid_host_el2_vect // IRQ EL2h
invalid_host_el2_vect // FIQ EL2h
invalid_host_el2_vect // Error EL2h
--
2.44.0.478.gd926399ef9-goog
--
Pierre
More information about the linux-arm-kernel
mailing list