Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbb4574c authored by Mark Rutland's avatar Mark Rutland Committed by Christoffer Dall
Browse files

arm64: kvm: report original PAR_EL1 upon panic



If we call __kvm_hyp_panic while a guest context is active, we call
__restore_sysregs before acquiring the system register values for the
panic, in the process throwing away the PAR_EL1 value at the point of
the panic.

This patch modifies __kvm_hyp_panic to stash the PAR_EL1 value prior to
restoring host register values, enabling us to report the original
values at the point of the panic.

Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
parent 1d7a4e31
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -864,6 +864,10 @@ ENTRY(__kvm_flush_vm_context)
ENDPROC(__kvm_flush_vm_context)

__kvm_hyp_panic:
	// Stash PAR_EL1 before corrupting it in __restore_sysregs
	mrs	x0, par_el1
	push	x0, xzr

	// Guess the context by looking at VTTBR:
	// If zero, then we're already a host.
	// Otherwise restore a minimal host context before panicing.
@@ -898,7 +902,7 @@ __kvm_hyp_panic:
	mrs	x3, esr_el2
	mrs	x4, far_el2
	mrs	x5, hpfar_el2
	mrs	x6, par_el1
	pop	x6, xzr		// active context PAR_EL1
	mrs	x7, tpidr_el2

	mov	lr, #(PSR_F_BIT | PSR_I_BIT | PSR_A_BIT | PSR_D_BIT |\