KVM: arm64: Stop clobbering x0 for HVC_SOFT_RESTART
commit5.4-rM2-2.2.x-imx-squashedb9e10d4a6c
upstream. HVC_SOFT_RESTART is given values for x0-2 that it should installed before exiting to the new address so should not set x0 to stub HVC success or failure code. Fixes:af42f20480
("arm64: hyp-stub: Zero x0 on successful stub handling") Cc: stable@vger.kernel.org Signed-off-by: Andrew Scull <ascull@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20200706095259.1338221-1-ascull@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
a20aa35b83
commit
b956ec9afc
|
@ -136,11 +136,15 @@ ENTRY(__kvm_handle_stub_hvc)
|
||||||
|
|
||||||
1: cmp x0, #HVC_RESET_VECTORS
|
1: cmp x0, #HVC_RESET_VECTORS
|
||||||
b.ne 1f
|
b.ne 1f
|
||||||
reset:
|
|
||||||
/*
|
/*
|
||||||
* Reset kvm back to the hyp stub. Do not clobber x0-x4 in
|
* Set the HVC_RESET_VECTORS return code before entering the common
|
||||||
* case we coming via HVC_SOFT_RESTART.
|
* path so that we do not clobber x0-x2 in case we are coming via
|
||||||
|
* HVC_SOFT_RESTART.
|
||||||
*/
|
*/
|
||||||
|
mov x0, xzr
|
||||||
|
reset:
|
||||||
|
/* Reset kvm back to the hyp stub. */
|
||||||
mrs x5, sctlr_el2
|
mrs x5, sctlr_el2
|
||||||
ldr x6, =SCTLR_ELx_FLAGS
|
ldr x6, =SCTLR_ELx_FLAGS
|
||||||
bic x5, x5, x6 // Clear SCTL_M and etc
|
bic x5, x5, x6 // Clear SCTL_M and etc
|
||||||
|
@ -151,7 +155,6 @@ reset:
|
||||||
/* Install stub vectors */
|
/* Install stub vectors */
|
||||||
adr_l x5, __hyp_stub_vectors
|
adr_l x5, __hyp_stub_vectors
|
||||||
msr vbar_el2, x5
|
msr vbar_el2, x5
|
||||||
mov x0, xzr
|
|
||||||
eret
|
eret
|
||||||
|
|
||||||
1: /* Bad stub call */
|
1: /* Bad stub call */
|
||||||
|
|
Loading…
Reference in New Issue