From nobody Fri Jun 26 14:59:18 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gmzN66Qddz6jcxX for ; Fri, 26 Jun 2026 14:59:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gmzN64J3Rz3dMw for ; Fri, 26 Jun 2026 14:59:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782485958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MNT+WyEN/2S+jUz+DhOCQln7XCyIgvlLBEWajtdBFZM=; b=d9C261fTwemau31ZfcLGJke/vnODqPTQm7+GxSAp/fGBe3VFB5xe0YspPh5cSYnd0w7K4F ttQopAlVHhMqFGSw/R6diGP5QsjCeLjbJgrQC34jn1AKtSFBy7b6V0m+wruP5bh9BAB99F gFif+TDNyb9Om4IC0PZ22Gm7jyETYuouTkcVsA3CMNPE+uwHkBdjO1jfG5jT3lETgY0IbY TPgSyq1UXgrKoqUUb00qoLnH221hAmQ/fhnX7SZjk+Ncn5M8Fc/6i7d30n8YA+4kTAWCba lS+GudU38D6G08k9LvKr3uRYTmDCJGd1/bcGRXULTLLAwwQtfBB1e9jLLNtJLg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782485958; a=rsa-sha256; cv=none; b=W1td5xFFqLXL2uXWj6TH0A8dPN0Ab/kMtLpLil6T13o/2aTDzYKB30O2Cegbs9RwWvreoM BzvBJJfmk7Fq/pdwpWJvbmLUCkxychU2x7CDkj7tcKefDGJ0wni+Q5baE2oY7sTAsQh6Yk DYBuMdb7WkCn2H4QuJXS4JOpYMuK2TqxKcE4cdn1RroiM3pgTtQMvbcIkTpXRFfAOP5XSz UG5/JjVR2xtA+x1pmLFlpJ/aX1nmG4lDPnqlyVfIki1TQNGN3T+mIjgcuZwMKzDSUdcBts EdU5EbWM4315CNllZfbpVbBUraKswOpCpVHmL7DQFekK6jKwcP7SGVwYRZ+PsQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782485958; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MNT+WyEN/2S+jUz+DhOCQln7XCyIgvlLBEWajtdBFZM=; b=j3nO5qKUi7DdnNX/rWtM/otSzoYKNODrZiUrppY6rnHFOjPHUkWE38jXyV/eDO+3kY1jGX +FtFuAGlmgDPQIiBN3UGyz8xUW0IXIdll73lk55yAQ/kQsZk5+1vlVFdkrUBEQNLB9tCMp HlQOqIhPpj8R62nC3g8ZZ+Vc3QQm91Bu8x+mUG/kzFmHgutU3wIICRlQVuJr4LpYs66dow B/mR8ToBd1AzGb1TnMp+PikGpUfpPmPLrCo/IeTZt9sRKIalMee3ll5S9lArB7gT5YbSIV 1LQSMkGng22cXlClncUmmvjK80c2dOMFTHeTQhq6GWoHy/CnHllZSOEc2zOYCw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gmzN62kBvzhWp for ; Fri, 26 Jun 2026 14:59:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 204ba by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 26 Jun 2026 14:59:18 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: ce9bfd781679 - main - loader.efi: Refactor try_boot_device_partitions List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ce9bfd781679ba67123345352a754c2e2dd1ef0b Auto-Submitted: auto-generated Date: Fri, 26 Jun 2026 14:59:18 +0000 Message-Id: <6a3e93c6.204ba.2bd6bcfa@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=ce9bfd781679ba67123345352a754c2e2dd1ef0b commit ce9bfd781679ba67123345352a754c2e2dd1ef0b Author: Warner Losh AuthorDate: 2026-06-26 14:45:51 +0000 Commit: Warner Losh CommitDate: 2026-06-26 14:54:36 +0000 loader.efi: Refactor try_boot_device_partitions Break out the probing into try_disk_and_partitions and adjust the trying message slightly to be a little clearer what we're doing. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D57802 --- stand/efi/loader/main.c | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index e11f8b1c3833..961ccc8f7065 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -375,6 +375,29 @@ try_as_currdev(pdinfo_t *pp, bool verbose) return (sanity_check_currdev()); } +/* + * Given a disk, try each of its partitions as the boot device. + */ +static int +try_disk_and_partitions(pdinfo_t *disk, EFI_HANDLE skip_handle) +{ + pdinfo_t *pp; + + if (disk == NULL) + return (ENOENT); + + if (try_as_currdev(disk, true)) + return (0); + + STAILQ_FOREACH(pp, &disk->pd_part, pd_link) { + if (pp->pd_handle == skip_handle) + continue; + if (try_as_currdev(pp, true)) + return (0); + } + return (ENOENT); +} + /* * Search the boot device first (i.e. the ESP and any sibling partitions). * Per the UEFI specification, filesystems on other devices must not be @@ -383,7 +406,7 @@ try_as_currdev(pdinfo_t *pp, bool verbose) static int try_boot_device_partitions(void) { - pdinfo_t *dp, *pp, *espdp; + pdinfo_t *dp; CHAR16 *text; dp = efiblk_get_pdinfo_by_handle(boot_img->DeviceHandle); @@ -392,30 +415,11 @@ try_boot_device_partitions(void) text = efi_devpath_name(dp->pd_devpath); if (text != NULL) { - printf("Trying ESP: %S\n", text); + printf("Trying ESP device: %S\n", text); efi_free_devpath_name(text); } - set_currdev_pdinfo(dp); - if (sanity_check_currdev()) - return (0); - if (dp->pd_parent == NULL) - return (ENOENT); - - espdp = dp; - dp = dp->pd_parent; - STAILQ_FOREACH(pp, &dp->pd_part, pd_link) { - if (espdp == pp) - continue; - text = efi_devpath_name(pp->pd_devpath); - if (text != NULL) { - printf("Trying: %S\n", text); - efi_free_devpath_name(text); - } - if (try_as_currdev(dp, pp)) - return (0); - } - return (ENOENT); + return (try_disk_and_partitions(dp->pd_parent, dp->pd_handle)); } /*