HI Lukas

> From: Lukas Auer [mailto:lukas.a...@aisec.fraunhofer.de]
> Sent: Wednesday, December 04, 2019 5:40 AM
> To: u-boot@lists.denx.de
> Cc: Rick Jian-Zhi Chen(陳建志); Anup Patel; Bin Meng; Lukas Auer; Anup Patel; 
> Anup Patel; Atish Patra; Marcus Comstedt
> Subject: [PATCH 0/4] Fixes for RISC-V U-Boot SPL / OpenSBI boot flow
>
> Rick's recent patch series, which adds support for U-Boot SPL to the Andes 
> platform, brought several problems of the current U-Boot SPL boot flow on 
> RISC-V to light. Discussion on the relevant parts starts at [1].
>
> The problem showed itself in the form of code corruption. At start, OpenSBI 
> relocates itself to its link address. This allows it to be loaded 
> independently of the link address. In the case that the link address ranges 
> of U-Boot SPL and OpenSBI overlap, code corruption occurs if the relocation 
> starts while some harts are still running U-Boot SPL.
> This series prevents this problem by specifying the hart that performs the 
> relocation and then making sure that it is the last hart to enter OpenSBI, 
> allowing relocation to be completed safely. A recent version of OpenSBI is 
> required for the changes to work.
>
> This patch series resolves the problems associated with the use case of 
> overlapping link address ranges. However, it is still recommended to select 
> non-overlapping ranges for U-Boot SPL and OpenSBI.
>
> [1]: https://lists.denx.de/pipermail/u-boot/2019-November/389385.html
>
>
> Lukas Auer (4):
>   spl: opensbi: specify main hart as preferred boot hart
>   riscv: add functions for reading the IPI status
>   riscv: add option to wait for ack from secondary harts in smp
>     functions
>   spl: opensbi: wait for ack from secondary harts before entering
>     OpenSBI
>
>  arch/riscv/cpu/start.S        |  2 ++
>  arch/riscv/include/asm/smp.h  |  3 ++-
>  arch/riscv/lib/andes_plic.c   |  9 ++++++++
>  arch/riscv/lib/bootm.c        |  2 +-
>  arch/riscv/lib/sbi_ipi.c      | 11 +++++++++
>  arch/riscv/lib/sifive_clint.c |  9 ++++++++
>  arch/riscv/lib/smp.c          | 43 +++++++++++++++++++++++++++--------
>  arch/riscv/lib/spl.c          |  2 +-
>  common/spl/spl_opensbi.c      | 13 ++++++++++-
>  include/opensbi.h             | 18 ++++++++++++++-
>  10 files changed, 98 insertions(+), 14 deletions(-)
>
> --
> 2.21.0
>

LGTM.

Thanks,
Rick

Reply via email to