Module Name: src Committed By: martin Date: Mon Jan 1 14:00:17 UTC 2024
Modified Files: src/sys/stand/efiboot [netbsd-10]: efinet.c Log Message: Additionally pull up following revision(s) (requested by rin in ticket #524): sys/stand/efiboot/efinet.c: revision 1.9 MI efiboot: Revert "Stop using efi_bootdp after exclusive open for PXE" http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/stand/efiboot/efinet.c#rev1.7 Some UEFI implementations pass multiple boot options as boot device path, and NULL-clearing it results in boot failures. Thanks skrll@ for pointing it out. To generate a diff of this commit: cvs rdiff -u -r1.6.32.1 -r1.6.32.2 src/sys/stand/efiboot/efinet.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/stand/efiboot/efinet.c diff -u src/sys/stand/efiboot/efinet.c:1.6.32.1 src/sys/stand/efiboot/efinet.c:1.6.32.2 --- src/sys/stand/efiboot/efinet.c:1.6.32.1 Sat Dec 30 19:33:25 2023 +++ src/sys/stand/efiboot/efinet.c Mon Jan 1 14:00:17 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: efinet.c,v 1.6.32.1 2023/12/30 19:33:25 martin Exp $ */ +/* $NetBSD: efinet.c,v 1.6.32.2 2024/01/01 14:00:17 martin Exp $ */ /*- * Copyright (c) 2001 Doug Rabson @@ -333,7 +333,7 @@ efi_net_probe(void) EFI_STATUS status; UINTN i, nhandles; int nifs, depth = -1; - bool found, is_bootdp; + bool found; status = LibLocateHandle(ByProtocol, &SimpleNetworkProtocol, NULL, &nhandles, &handles); @@ -377,9 +377,6 @@ efi_net_probe(void) if (!found) continue; - is_bootdp = depth > 0 && - efi_device_path_ncmp(efi_bootdp, dp0, depth) == 0; - status = uefi_call_wrapper(BS->OpenProtocol, 6, handles[i], &SimpleNetworkProtocol, (void **)&net, IH, NULL, EFI_OPEN_PROTOCOL_EXCLUSIVE); @@ -407,21 +404,10 @@ efi_net_probe(void) return; } - if (is_bootdp) { - /* - * This is boot device... - */ + if (depth > 0 && efi_device_path_ncmp(efi_bootdp, dp0, depth) == 0) { char devname[9]; - snprintf(devname, sizeof(devname), "net%u", nifs); set_default_device(devname); - - /* - * and now opened for us excluively. Therefore, - * access via device path is illegal. - */ - efi_bootdp = NULL; - depth = -1; } nifs++;