@@ -183,7 +183,7 @@ SYM_FUNC_END(__host_hvc)
.endif
.endm
-.macro invalid_host_el2_vect
+.macro __host_el2_vect handler:req
.align 7
/*
@@ -203,7 +203,7 @@ SYM_FUNC_END(__host_hvc)
* been partially clobbered by __host_enter.
*/
stp x0, x1, [sp, #-16]!
- b __guest_exit_panic
+ b \handler
.L__hyp_sp_overflow\@:
/* Switch to the overflow stack */
@@ -213,6 +213,10 @@ SYM_FUNC_END(__host_hvc)
ASM_BUG()
.endm
+.macro host_el2_sync_vect
+ __host_el2_vect __guest_exit_panic
+.endm
+
.macro invalid_host_el1_vect
.align 7
mov x0, xzr /* restore_host = false */
@@ -222,6 +226,10 @@ SYM_FUNC_END(__host_hvc)
b __hyp_do_panic
.endm
+.macro invalid_host_el2_vect
+ __host_el2_vect __guest_exit_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
@@ -239,7 +247,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
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@google.com> --- arch/arm64/kvm/hyp/nvhe/host.S | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)