[U-Boot] [PATCH 1/3] ARM: HYP/non-sec: save and restore stack
Alexander Graf
agraf at suse.de
Tue Jun 12 18:46:02 UTC 2018
On 12.06.18 19:27, Mark Kettenis wrote:
> The current code that switches into HYP mode doesn't bother to set
> up a stack for HYP mode. This doesn't work for EFI applications
> as they expect a usable stack. Fix this by saving the stack
> pointer before switching and use it to set SP_hyp from monitor.
> This restores the stack pointer when we drop into HYP mode.
>
> Signed-off-by: Mark Kettenis <kettenis at openbsd.org>
Can we be sure that the stack in MON is usable from HYP?
Alex
> ---
> arch/arm/cpu/armv7/nonsec_virt.S | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/nonsec_virt.S b/arch/arm/cpu/armv7/nonsec_virt.S
> index 56bdba1d38..246d817340 100644
> --- a/arch/arm/cpu/armv7/nonsec_virt.S
> +++ b/arch/arm/cpu/armv7/nonsec_virt.S
> @@ -52,9 +52,9 @@ _secure_monitor:
> bl psci_stack_setup
>
> @ Configure the PSCI backend
> - push {r0, r1, r2, ip}
> + push {r0, r1, r2, r3, ip}
> bl psci_arch_init
> - pop {r0, r1, r2, ip}
> + pop {r0, r1, r2, r3, ip}
> #endif
>
> #ifdef CONFIG_ARM_ERRATA_773022
> @@ -80,6 +80,7 @@ _secure_monitor:
> #ifdef CONFIG_ARMV7_VIRT
> orreq r5, r5, #0x100 @ allow HVC instruction
> moveq r6, #HYP_MODE @ Enter the kernel as HYP
> + msreq sp_hyp, r3 @ restore saved stack
> #endif
>
> mcr p15, 0, r5, c1, c1, 0 @ write SCR (with NS bit set)
> @@ -106,6 +107,7 @@ ENTRY(_do_nonsec_entry)
> mov r0, r1
> mov r1, r2
> mov r2, r3
> + mov r3, sp
> smc #0
> ENDPROC(_do_nonsec_entry)
>
>
More information about the U-Boot
mailing list