Hi Ard, Could you please take this patch? Heinrich and Atish have added RB tag. Let me know if I need to do anything. Thanks Sunil On Fri, Jan 28, 2022 at 10:20:04AM +0530, Sunil V L wrote: > The get_boot_hartid_from_fdt() function currently returns U32_MAX > for failure case which is not correct because U32_MAX is a valid > hartid value. This patch fixes the issue by returning error code. > > Fixes: d7071743db31 ("RISC-V: Add EFI stub support.") > Cc: stable@xxxxxxxxxxxxxxx > > Signed-off-by: Sunil V L <sunilvl@xxxxxxxxxxxxxxxx> > --- > drivers/firmware/efi/libstub/riscv-stub.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/drivers/firmware/efi/libstub/riscv-stub.c b/drivers/firmware/efi/libstub/riscv-stub.c > index 380e4e251399..9c460843442f 100644 > --- a/drivers/firmware/efi/libstub/riscv-stub.c > +++ b/drivers/firmware/efi/libstub/riscv-stub.c > @@ -25,7 +25,7 @@ typedef void __noreturn (*jump_kernel_func)(unsigned int, unsigned long); > > static u32 hartid; > > -static u32 get_boot_hartid_from_fdt(void) > +static int get_boot_hartid_from_fdt(void) > { > const void *fdt; > int chosen_node, len; > @@ -33,23 +33,26 @@ static u32 get_boot_hartid_from_fdt(void) > > fdt = get_efi_config_table(DEVICE_TREE_GUID); > if (!fdt) > - return U32_MAX; > + return -EINVAL; > > chosen_node = fdt_path_offset(fdt, "/chosen"); > if (chosen_node < 0) > - return U32_MAX; > + return -EINVAL; > > prop = fdt_getprop((void *)fdt, chosen_node, "boot-hartid", &len); > if (!prop || len != sizeof(u32)) > - return U32_MAX; > + return -EINVAL; > > - return fdt32_to_cpu(*prop); > + hartid = fdt32_to_cpu(*prop); > + return 0; > } > > efi_status_t check_platform_features(void) > { > - hartid = get_boot_hartid_from_fdt(); > - if (hartid == U32_MAX) { > + int ret; > + > + ret = get_boot_hartid_from_fdt(); > + if (ret) { > efi_err("/chosen/boot-hartid missing or invalid!\n"); > return EFI_UNSUPPORTED; > } > -- > 2.25.1 >