[PATCH] riscv: Support riscv64 image type

Allow U-Boot to load 32 or 64 bits RISC-V Kernel Image distinguishly. It helps to avoid someone maybe make a mistake to run 32-bit U-Boot to load 64-bit kernel.
Signed-off-by: Rick Chen rick@andestech.com
--- The patchset is based on Simon's patch: riscv: Add a 64-bit image type --- --- arch/riscv/include/asm/u-boot.h | 4 ++++ cmd/booti.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/arch/riscv/include/asm/u-boot.h b/arch/riscv/include/asm/u-boot.h index d5e1d5f323..e3b4a0357c 100644 --- a/arch/riscv/include/asm/u-boot.h +++ b/arch/riscv/include/asm/u-boot.h @@ -23,6 +23,10 @@ #include <asm/u-boot-riscv.h>
/* For image.h:image_check_target_arch() */ +#ifdef CONFIG_ARCH_RV64I +#define IH_ARCH_DEFAULT IH_ARCH_RISCV64 +#else #define IH_ARCH_DEFAULT IH_ARCH_RISCV +#endif
#endif /* _U_BOOT_H_ */ diff --git a/cmd/booti.c b/cmd/booti.c index 6ac39193db..dc0b0ae41c 100644 --- a/cmd/booti.c +++ b/cmd/booti.c @@ -119,7 +119,7 @@ int do_booti(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
images.os.os = IH_OS_LINUX; #ifdef CONFIG_RISCV_SMODE - images.os.arch = IH_ARCH_RISCV; + images.os.arch = IH_ARCH_DEFAULT; #elif CONFIG_ARM64 images.os.arch = IH_ARCH_ARM64; #endif

Hi Rick,
On Mon, 10 Apr 2023 at 01:26, Rick Chen rick@andestech.com wrote:
Allow U-Boot to load 32 or 64 bits RISC-V Kernel Image distinguishly. It helps to avoid someone maybe make a mistake to run 32-bit U-Boot to load 64-bit kernel.
Signed-off-by: Rick Chen rick@andestech.com
The patchset is based on Simon's patch: riscv: Add a 64-bit image type
arch/riscv/include/asm/u-boot.h | 4 ++++ cmd/booti.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
I don't know much about RISC-V, but I assume U-Boot is able to do this successfully? Does it not need to switch modes first?
Regards, Simon

Hi Simon,
Hi Rick,
On Mon, 10 Apr 2023 at 01:26, Rick Chen rick@andestech.com wrote:
Allow U-Boot to load 32 or 64 bits RISC-V Kernel Image distinguishly. It helps to avoid someone maybe make a mistake to run 32-bit U-Boot to load 64-bit kernel.
Signed-off-by: Rick Chen rick@andestech.com
The patchset is based on Simon's patch: riscv: Add a 64-bit image type
arch/riscv/include/asm/u-boot.h | 4 ++++ cmd/booti.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
I don't know much about RISC-V, but I assume U-Boot is able to do this successfully? Does it not need to switch modes first?
No, it is not need to switch modes as far as I know. Here only provide a check mechanism just like arm to see if loader and OS are match
But This patch is for bootm flow. Maybe I still need to check if it is necessary to prepare a patch for binman flow ? /arch/riscv/dts/binman.dtsi arch = "riscv";
maybe provide another binman64.dtsi for arch="riscv64"
Thanks, Rick
Regards, Simon

Hi Rick,
On Wed, 19 Apr 2023 at 00:56, Rick Chen rickchen36@gmail.com wrote:
Hi Simon,
Hi Rick,
On Mon, 10 Apr 2023 at 01:26, Rick Chen rick@andestech.com wrote:
Allow U-Boot to load 32 or 64 bits RISC-V Kernel Image distinguishly. It helps to avoid someone maybe make a mistake to run 32-bit U-Boot to load 64-bit kernel.
Signed-off-by: Rick Chen rick@andestech.com
The patchset is based on Simon's patch: riscv: Add a 64-bit image type
arch/riscv/include/asm/u-boot.h | 4 ++++ cmd/booti.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
I don't know much about RISC-V, but I assume U-Boot is able to do this successfully? Does it not need to switch modes first?
No, it is not need to switch modes as far as I know. Here only provide a check mechanism just like arm to see if loader and OS are match
But This patch is for bootm flow. Maybe I still need to check if it is necessary to prepare a patch for binman flow ? /arch/riscv/dts/binman.dtsi arch = "riscv";
maybe provide another binman64.dtsi for arch="riscv64"
Yes I think that is needed too. Are you going to update this patch, or send a second one?
Regards, Simon

Hi Rick,
On Wed, 19 Apr 2023 at 00:56, Rick Chen rickchen36@gmail.com wrote:
Hi Simon,
Hi Rick,
On Mon, 10 Apr 2023 at 01:26, Rick Chen rick@andestech.com wrote:
Allow U-Boot to load 32 or 64 bits RISC-V Kernel Image distinguishly. It helps to avoid someone maybe make a mistake to run 32-bit U-Boot to load 64-bit kernel.
Signed-off-by: Rick Chen rick@andestech.com
The patchset is based on Simon's patch: riscv: Add a 64-bit image type
arch/riscv/include/asm/u-boot.h | 4 ++++ cmd/booti.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
I don't know much about RISC-V, but I assume U-Boot is able to do this successfully? Does it not need to switch modes first?
No, it is not need to switch modes as far as I know. Here only provide a check mechanism just like arm to see if loader and OS are match
But This patch is for bootm flow. Maybe I still need to check if it is necessary to prepare a patch for binman flow ? /arch/riscv/dts/binman.dtsi arch = "riscv";
maybe provide another binman64.dtsi for arch="riscv64"
Yes I think that is needed too. Are you going to update this patch, or send a second one?
Hi Simon,
OK.
HI Leo,
I am a little busy on other things.Can you help to update this patch ?
Thanks. Rick
Regards, Simon

Hi Rick,
On Thu, Jul 27, 2023 at 09:27:31AM +0800, Rick Chen wrote:
Hi Rick,
On Wed, 19 Apr 2023 at 00:56, Rick Chen rickchen36@gmail.com wrote:
Hi Simon,
Hi Rick,
On Mon, 10 Apr 2023 at 01:26, Rick Chen rick@andestech.com wrote:
Allow U-Boot to load 32 or 64 bits RISC-V Kernel Image distinguishly. It helps to avoid someone maybe make a mistake to run 32-bit U-Boot to load 64-bit kernel.
Signed-off-by: Rick Chen rick@andestech.com
The patchset is based on Simon's patch: riscv: Add a 64-bit image type
arch/riscv/include/asm/u-boot.h | 4 ++++ cmd/booti.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
I don't know much about RISC-V, but I assume U-Boot is able to do this successfully? Does it not need to switch modes first?
No, it is not need to switch modes as far as I know. Here only provide a check mechanism just like arm to see if loader and OS are match
But This patch is for bootm flow. Maybe I still need to check if it is necessary to prepare a patch for binman flow ? /arch/riscv/dts/binman.dtsi arch = "riscv";
maybe provide another binman64.dtsi for arch="riscv64"
Yes I think that is needed too. Are you going to update this patch, or send a second one?
Hi Simon,
OK.
HI Leo,
I am a little busy on other things.Can you help to update this patch ?
No problem! I will send a v2 patch ASAP.
Best regards, Leo
Thanks. Rick
Regards, Simon
participants (4)
-
Leo Liang
-
Rick Chen
-
Rick Chen
-
Simon Glass