From 58fa2a5aa164fd8b516bd66649bbb595ebf1540c Mon Sep 17 00:00:00 2001 From: Randolph Date: Thu, 12 Oct 2023 14:35:07 +0800 Subject: [PATCH] spl: riscv: add os type for next booting stage If SPL_LOAD_FIT_OPENSBI_OS_BOOT is enabled, the function spl_invoke_opensbi should change the target OS type to IH_OS_LINUX. OpenSBI will load the Linux image as the next boot stage. The os_takes_devicetree function returns a value of true or false depending on whether or not SPL_LOAD_FIT_OPENSBI_OS_BOOT is enabled. Signed-off-by: Randolph Reviewed-by: Simon Glass --- common/spl/spl_fit.c | 3 ++- common/spl/spl_opensbi.c | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index c026e1a194..70d8d5942d 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -367,7 +367,8 @@ static bool os_takes_devicetree(uint8_t os) case IH_OS_U_BOOT: return true; case IH_OS_LINUX: - return IS_ENABLED(CONFIG_SPL_OS_BOOT); + return IS_ENABLED(CONFIG_SPL_OS_BOOT) || + IS_ENABLED(CONFIG_SPL_OPENSBI); default: return false; } diff --git a/common/spl/spl_opensbi.c b/common/spl/spl_opensbi.c index 6583b31953..9801d38c0b 100644 --- a/common/spl/spl_opensbi.c +++ b/common/spl/spl_opensbi.c @@ -59,9 +59,14 @@ void __noreturn spl_invoke_opensbi(struct spl_image_info *spl_image) /* * Find next os image in /fit-images - * The next os image default is u-boot proper + * The next os image default is u-boot proper, once enable + * OpenSBI OS boot mode, the OS image should be linux. */ - os_type = IH_OS_U_BOOT; + if (CONFIG_IS_ENABLED(LOAD_FIT_OPENSBI_OS_BOOT)) + os_type = IH_OS_LINUX; + else + os_type = IH_OS_U_BOOT; + ret = spl_opensbi_find_os_node(spl_image->fdt_addr, &os_node, os_type); if (ret) { pr_err("Can't find %s node for opensbi, %d\n", -- 2.39.5