diff mbox series

riscv: Support riscv64 image type

Message ID 20230410072718.3484-1-rick@andestech.com
State New
Delegated to: Andes
Headers show
Series riscv: Support riscv64 image type | expand

Commit Message

Rick Chen April 10, 2023, 7:27 a.m. UTC
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(-)

Comments

Simon Glass April 19, 2023, 1:46 a.m. UTC | #1
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
Rick Chen April 19, 2023, 6:56 a.m. UTC | #2
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
Simon Glass July 26, 2023, 9:33 p.m. UTC | #3
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
Rick Chen July 27, 2023, 1:27 a.m. UTC | #4
> 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
Leo Liang July 27, 2023, 1:39 a.m. UTC | #5
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
diff mbox series

Patch

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