Date: Fri, 26 Jun 2026 14:59:13 +0000 From: Warner Losh <imp@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 1e49aa7a984e - main - loader.efi: Add comments describing the boot protocol Message-ID: <6a3e93c1.216ee.6ad1e87f@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=1e49aa7a984e0d4381538aa6cf16d37b20b000b9 commit 1e49aa7a984e0d4381538aa6cf16d37b20b000b9 Author: Warner Losh <imp@FreeBSD.org> AuthorDate: 2026-06-26 14:45:31 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2026-06-26 14:54:35 +0000 loader.efi: Add comments describing the boot protocol Add some comments about the boot protocol. Need to do a deeper dive into the networking code since it's the last set of code used here. Signed-off-by: Warner Losh <imp@FreeBSD.org> Differential Revision: https://reviews.freebsd.org/D57800 --- stand/efi/loader/main.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index 1444b1eee17d..1d91c8dd26ac 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -641,17 +641,24 @@ find_currdev(bool do_bootmgr, char *boot_info, size_t boot_info_sz) #ifdef MD_IMAGE_SIZE /* - * If there is an embedded MD, try to use that. + * Forth choice: If there is an embedded MD, try to use that. */ printf("Trying MD\n"); if (probe_md_currdev()) return (0); #endif /* MD_IMAGE_SIZE */ + /* + * Fifth choice: try all the partitions on the boot device. + */ if (try_boot_device_partitions() == 0) return (0); #ifdef EFI_ZFS_BOOT + /* + * Sixth Choice: Probe the boot disk for ZFS and then probe the non-boot + * disk if we have a relaxed boot poluicy. + */ { zfsinfo_list_t *zfsinfo = efizfs_get_zfsinfo_list(); zfsinfo_t *zi; @@ -686,8 +693,8 @@ find_currdev(bool do_bootmgr, char *boot_info, size_t boot_info_sz) #endif /* EFI_ZFS_BOOT */ /* - * Try the device handle from our loaded image first. If that - * fails, use the device path from the loaded image and see if + * Seventh choice: Try the device handle from our loaded image first. + * If that fails, use the device path from the loaded image and see if * any of the nodes in that path match one of the enumerated * handles. Currently, this handle list is only for netboot. */ @@ -697,6 +704,12 @@ find_currdev(bool do_bootmgr, char *boot_info, size_t boot_info_sz) return (0); } + /* + * Eighth choice: look up the device handle... This loops through the + * entries to find the device handle. The network protocols have long + * strings of device nodes in the device path, and this may make + * something work. + */ copy = NULL; devpath = efi_lookup_image_devpath(IH); while (devpath != NULL) { @@ -1256,7 +1269,7 @@ main(int argc, CHAR16 *argv[]) #endif /* Get our loaded image protocol interface structure. */ - (void) OpenProtocolByHandle(IH, &imgid, (void **)&boot_img); + (void)OpenProtocolByHandle(IH, &imgid, (void **)&boot_img); /* Report the RSDP early. */ acpi_detect();home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a3e93c1.216ee.6ad1e87f>
