Am Sat, Mar 27, 2021 at 12:09:25AM +0100 schrieb Klemens Nanni:
> On Fri, Mar 26, 2021 at 11:28:37PM +0100, Patrick Wildt wrote:
> > >   fdt = (void *)addr;
> > > - return (0);
> > > + return (1);
> > 
> > Wait, you've been saying that return code 1 makes it boot.  So now you
> > changed it so that "mach dtb" kicks of booting the kernel?  That does
> > not seem tight to me.  This should stay 0, right?
> Absolutely, my bad.
> 
> I've tested all scenarios with and without this fixed diff below to
> double check.
> 
> OK?
> 

Yes.

> 
> Index: efiboot.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm64/stand/efiboot/efiboot.c,v
> retrieving revision 1.31
> diff -u -p -r1.31 efiboot.c
> --- efiboot.c 9 Mar 2021 21:11:24 -0000       1.31
> +++ efiboot.c 26 Mar 2021 23:05:46 -0000
> @@ -980,24 +980,26 @@ Xdtb_efi(void)
>  
>  #define O_RDONLY     0
>  
> -     if (cmd.argc != 2)
> -             return (1);
> +     if (cmd.argc != 2) {
> +             printf("dtb file\n");
> +             return (0);
> +     }
>  
>       snprintf(path, sizeof(path), "%s:%s", cmd.bootdev, cmd.argv[1]);
>  
>       fd = open(path, O_RDONLY);
>       if (fd < 0 || fstat(fd, &sb) == -1) {
>               printf("cannot open %s\n", path);
> -             return (1);
> +             return (0);
>       }
>       if (efi_memprobe_find(EFI_SIZE_TO_PAGES(sb.st_size),
>           0x1000, &addr) != EFI_SUCCESS) {
>               printf("cannot allocate memory for %s\n", path);
> -             return (1);
> +             return (0);
>       }
>       if (read(fd, (void *)addr, sb.st_size) != sb.st_size) {
>               printf("cannot read from %s\n", path);
> -             return (1);
> +             return (0);
>       }
>  
>       fdt = (void *)addr;

Reply via email to