[PATCH v1 3/3] booti/bootm: riscv: Verify image arch type

Mayuresh Chitale mchitale at ventanamicro.com
Thu Apr 3 12:58:27 CEST 2025


On Tue, Mar 11, 2025 at 7:29 PM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 11.03.25 14:35, Mayuresh Chitale wrote:
> > Unlike ARM and X86, booting 32-bit images on 64-bit CPUs is currently
> > not supported for Risc-V. Hence, for bootm, disallow booting a FIT
> > or a legacy image that was built for an arch type which is different
> > than the current arch and for booti, set the arch type to be the
> > same as the current arch.
> >
> > Signed-off-by: Mayuresh Chitale <mchitale at ventanamicro.com>
> > ---
> >   arch/riscv/lib/bootm.c | 4 ++++
> >   cmd/booti.c            | 5 ++++-
> >   2 files changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/riscv/lib/bootm.c b/arch/riscv/lib/bootm.c
> > index 76c610bcee0..90f71bee6a5 100644
> > --- a/arch/riscv/lib/bootm.c
> > +++ b/arch/riscv/lib/bootm.c
> > @@ -94,6 +94,10 @@ static void boot_jump_linux(struct bootm_headers *images, int flag)
> >       announce_and_cleanup(fake);
> >
> >       if (!fake) {
> > +             if (images->os.arch != IH_ARCH_DEFAULT) {
> > +                     printf("Image arch not compatible with host arch.\n");
> > +                     hang();
> > +             }
> >               if (CONFIG_IS_ENABLED(OF_LIBFDT) && images->ft_len) {
> >   #ifdef CONFIG_SMP
> >                       ret = smp_call_function(images->ep,
> > diff --git a/cmd/booti.c b/cmd/booti.c
> > index 1a57fe91397..00921ec4a9d 100644
> > --- a/cmd/booti.c
> > +++ b/cmd/booti.c
> > @@ -131,7 +131,10 @@ int do_booti(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> >
> >       images.os.os = IH_OS_LINUX;
> >       if (IS_ENABLED(CONFIG_RISCV_SMODE))
>
> Why do we check for S-mode here? Wouldn't checking CONFIG_RISCV be more
> adequate? Think of a micro-controller with only M and U mode.
>
> sipeed_maix_bitm_defconfig has CONFIG_RISCV_MMODE=y, CONFIG_CMD_BOOTI=y.
>
> Cf. 3cedc97479ff ("RISCV: image: Add booti support")
>
> Otherwise looks good.

Thanks Heinrich. I will update the patch.
>
> Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>
> > -             images.os.arch = IH_ARCH_RISCV;
> > +             if (IS_ENABLED(CONFIG_64BIT))
> > +                     images.os.arch = IH_ARCH_RISCV64;
> > +             else
> > +                     images.os.arch = IH_ARCH_RISCV;
> >       else if (IS_ENABLED(CONFIG_ARM64))
> >               images.os.arch = IH_ARCH_ARM64;
> >
>


More information about the U-Boot mailing list