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?
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;