[PATCH 0/7] riscv: spl: OpenSBI OS boot mode
Randolph
randolph at andestech.com
Mon Sep 25 11:25:36 CEST 2023
Introduce a shortcut boot mode for RISC-V.
As we know, in ARM architecture has the Falcon mode to do the shortcut
boot to the Linux kernel. (by enabling CONFIG_SPL_OS_BOOT)
ARM Falcon mode boot flow would be as follows:
u-boot SPL -> Linux kernel
But for RISC-V, OpenSBI is required to allows the supervisor to execute
some privileged operations.
The RISC-V Normal boot flow as follows:
u-boot SPL -> OpenSBI -> u-boot proper -> Linux kernel
Quoting the same ideas as ARM's Falcon mode,
OpenSBI OS boot flow as follows:
u-boot SPL -> OpenSBI -> Linux kernel
An important part of OpenSBI OS boot mode is to prepare the device tree.
A normal U-Boot does FDT fixups when booting Linux.
For OpenSBI OS boot mode, Linux boots directly from SPL,
skipping the normal U-Boot.
The device tree has to be prepared in advance.
The device tree in memory is the one needed for OpenSBI OS boot mode.
The Linux kernel image will also need to be provided for the generation
of the FIT file.
Randolph (7):
riscv: dts: Introduce SPL_LOAD_FIT_CONFIG symbol
riscv: dts: add binman_linux.dtsi for opensbi os boot mode
spl: riscv: opensbi: change the default os_type as varible
riscv: dts: introduce SPL_LOAD_FIT_OPENSBI_OS_BOOT symbol
spl: riscv: add os type for next booting stage
andes: config: add riscv falcon mode for ae350 platform
riscv: spl: andes: Move the DTB in front of kernel
arch/riscv/Kconfig | 16 +++++
arch/riscv/dts/ae350-u-boot.dtsi | 1 +
arch/riscv/dts/ae350_32.dts | 1 -
arch/riscv/dts/ae350_64.dts | 1 -
arch/riscv/dts/binman_linux.dtsi | 79 +++++++++++++++++++++++++
board/AndesTech/ae350/ae350.c | 25 ++++++++
common/spl/spl_fit.c | 4 ++
common/spl/spl_opensbi.c | 31 ++++++----
configs/ae350_rv32_falcon_defconfig | 60 +++++++++++++++++++
configs/ae350_rv32_falcon_xip_defconfig | 61 +++++++++++++++++++
configs/ae350_rv64_falcon_defconfig | 60 +++++++++++++++++++
configs/ae350_rv64_falcon_xip_defconfig | 61 +++++++++++++++++++
12 files changed, 388 insertions(+), 12 deletions(-)
create mode 100644 arch/riscv/dts/binman_linux.dtsi
create mode 100644 configs/ae350_rv32_falcon_defconfig
create mode 100644 configs/ae350_rv32_falcon_xip_defconfig
create mode 100644 configs/ae350_rv64_falcon_defconfig
create mode 100644 configs/ae350_rv64_falcon_xip_defconfig
--
2.34.1
More information about the U-Boot
mailing list