[PATCH v4 25/28] ARM: decompressor: Remove __hyp_get_vectors usage
From: Christoffer Dall <hidden>
Date: 2017-03-24 14:34:40
Also in:
kvm, kvmarm
On Tue, Mar 21, 2017 at 07:20:55PM +0000, Marc Zyngier wrote:
quoted hunk ↗ jump to hunk
When the compressed image needs to be relocated to avoid being overwritten by the decompression process, we need to relocate the hyp vectors as well so that we can find them once the decompression has taken effect. For that, we perform the following calculation: u32 v = __hyp_get_vectors(); v += offset; __hyp_set_vectors(v); But we're guaranteed that the initial value of v as returned by __hyp_get_vectors is always __hyp_stub_vectors, because we have just set it by calling __hyp_stub_install. So let's remove the use of __hyp_get_vectors, and directly use __hyp_stub_vectors instead. Acked-by: Russell King <redacted> Signed-off-by: Marc Zyngier <redacted> --- arch/arm/boot/compressed/head.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 9150f9732785..d58bb104c6e8 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S@@ -422,7 +422,10 @@ dtb_check_done: cmp r0, #HYP_MODE bne 1f - bl __hyp_get_vectors +0: adr r0, 0b + movw r1, #:lower16:__hyp_stub_vectors - 0b + movt r1, #:upper16:__hyp_stub_vectors - 0b + add r0, r0, r1
nit: you could add a comment explaining what r0 ends up containing, because I'm pretty sure this will feel obscure when not read in the context of this series with your commit message above.
sub r0, r0, r5 add r0, r0, r10 bl __hyp_set_vectors -- 2.11.0
Nevertheless: Acked-by: Christoffer Dall <redacted>