From nobody Tue Apr 28 20:59:09 2026 X-Original-To: dev-commits-src-all@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 4g4t8Z1kfPz6c5Wq for ; Tue, 28 Apr 2026 20:59:10 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g4t8Y6sHyz3PPy for ; Tue, 28 Apr 2026 20:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777409950; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0nWpai31HuhRruU+0NqhXdeItm/aQ48ynsHxu6BaHXU=; b=G3ECvJGPNq9T15laYRt6dxG9RV3KzLH+e/egoXYhjc39fXi9dh7MPIYobFzaPbvPaOVCTc Ci5QjhWtMO7CtMwAjSCs7Bvl+WsFdkGhfNVoD4j3OHrXcJt/srm4oFOIvd2PHTZonx/cUf 8NJguyusVSnJWzcYaGj+Xl82hRDG1M+lX6coNyoDtVboqhj7XQo91boDx3/b/8MRV8JfTY E3G1WTY2eidl3hT0xFlyhDTIyFL2uVtF+cwOUqa3CghYECOPkasRoslidoJY8W8+324vvj RrwJfs05rMOlX7YhsM2RnBHJdcGjSWVAV8aSqDDj7fI9RogqMjDrmDE3mETaPw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777409950; a=rsa-sha256; cv=none; b=DyTq8LEBjXhD3bv4gRmj3BSc6SjJDBlq9fStAKMJ1ByWTygtBs23iRw0Rg7Ob+5BMDO6+t fOToJpKrETi8KXG4I+NOa3L8jv+OkZYIuidJwtlcwNPfN0Au3pE5GldFT1wZUvO9kPMqi0 niz9OB7k23ei4tfaLek4dGdodzzhxNi+vB3uh3vgPFgAPiu0SmfBdCej2XjP+Itt57duOH pbDggRCLEyvYbsadPM8jTTOd+IGD6IBsAiXTm+BgchVBKb4dB2z4UtT9T34rfgCGLc6hss 3Eza/uTZ0D3/fXiIyE7Nsocd+9d6USKN4//ovKnz2JlPHLOat68L3Z/JNRTEYg== 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=1777409950; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0nWpai31HuhRruU+0NqhXdeItm/aQ48ynsHxu6BaHXU=; b=E07pW1ISNnQy1uRR0++AZvTzOuzArH0OB8fobAIC6ofiVz2oLUW1nuYbYwkzFf9XSjjeEG PSX3miCRsz6BoJSwi7vbaGZSWCD4cpgxp3QLyPdpeYi+GBd/WBuT0qgDwz8NGcW7NMuX29 Z1em1aw5HLEFYa8y89AG6P273ZcySgPSIOteDq2LmB1iiFYvWb1fK9bzqFlun+Csh7dMfu tQByk5DFlJuzd8AhT0c5ZcqDJzJP6+0k4Auabeqkzg1Cbag86sxS3LGPkGmnte5qQNfDu9 nHDicLHGGqmi9HcKoHA2snyEVMa9S7fQPUpjR46gaTlgsbcGB5Qcfn09vvAj6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g4t8Y5QLvz18rR for ; Tue, 28 Apr 2026 20:59:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ad79 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 28 Apr 2026 20:59:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: =?utf-8?Q?St=C3=A9pha?=ne Rochoy From: Pouria Mousavizadeh Tehrani Subject: git: 76de40889eed - main - efibootmgr: Show attributes, category and optional data when verbose List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pouria X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 76de40889eed130442b67e14249f96e2e8f88f48 Auto-Submitted: auto-generated Date: Tue, 28 Apr 2026 20:59:09 +0000 Message-Id: <69f11f9d.3ad79.7d56299a@gitrepo.freebsd.org> The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=76de40889eed130442b67e14249f96e2e8f88f48 commit 76de40889eed130442b67e14249f96e2e8f88f48 Author: Stéphane Rochoy AuthorDate: 2026-04-24 07:03:31 +0000 Commit: Pouria Mousavizadeh Tehrani CommitDate: 2026-04-28 20:58:59 +0000 efibootmgr: Show attributes, category and optional data when verbose Also rework a bit the way device path are displayed for consistency. Signed-off-by: stephane.rochoy@stormshield.eu Reviewed by: imp Sponsored by: Stormshield Pull-Request: https://github.com/freebsd/freebsd-src/pull/2167 --- usr.sbin/efibootmgr/efibootmgr.8 | 2 +- usr.sbin/efibootmgr/efibootmgr.c | 71 +++++++++++++++++++++++++++++++++------- 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/usr.sbin/efibootmgr/efibootmgr.8 b/usr.sbin/efibootmgr/efibootmgr.8 index 62ca0d6da3b2..2d7aaf5bd4a4 100644 --- a/usr.sbin/efibootmgr/efibootmgr.8 +++ b/usr.sbin/efibootmgr/efibootmgr.8 @@ -200,7 +200,7 @@ variable. Displays the UEFI device path of .Ar unix-path . .It Fl v -verbose -Display the device path of boot entries in the output. +Display extra information on boot entries: device path, attributes, category and optional data. .El .Sh EXAMPLES To display the current diff --git a/usr.sbin/efibootmgr/efibootmgr.c b/usr.sbin/efibootmgr/efibootmgr.c index 1b572b613e05..e1786d9fc1bc 100644 --- a/usr.sbin/efibootmgr/efibootmgr.c +++ b/usr.sbin/efibootmgr/efibootmgr.c @@ -54,11 +54,27 @@ #include #ifndef LOAD_OPTION_ACTIVE -#define LOAD_OPTION_ACTIVE 0x00000001 +#define LOAD_OPTION_ACTIVE 0x00000001 +#endif + +#ifndef LOAD_OPTION_FORCE_RECONNECT +#define LOAD_OPTION_FORCE_RECONNECT 0x00000002 +#endif + +#ifndef LOAD_OPTION_HIDDEN +#define LOAD_OPTION_HIDDEN 0x00000008 +#endif + +#ifndef LOAD_OPTION_CATEGORY +#define LOAD_OPTION_CATEGORY 0x00001F00 #endif #ifndef LOAD_OPTION_CATEGORY_BOOT -#define LOAD_OPTION_CATEGORY_BOOT 0x00000000 +#define LOAD_OPTION_CATEGORY_BOOT 0x00000000 +#endif + +#ifndef LOAD_OPTION_CATEGORY_APP +#define LOAD_OPTION_CATEGORY_APP 0x00000100 #endif #define BAD_LENGTH ((size_t)-1) @@ -744,14 +760,14 @@ static void print_loadopt_str(uint8_t *data, size_t datalen) { char *dev, *relpath, *abspath; - uint32_t attr; + uint32_t attr, categ; uint16_t fplen; efi_char *descr; uint8_t *ep = data + datalen; - uint8_t *walker = data; + uint8_t *walker = data, *opt; efidp dp, edp; char buf[1024]; - int len; + int len, optlen; int rv; int indent; @@ -775,11 +791,13 @@ print_loadopt_str(uint8_t *data, size_t datalen) if (walker > ep) return; edp = (efidp)walker; - /* - * Everything left is the binary option args - * opt = walker; - * optlen = ep - walker; - */ + + /* Everything left is the binary option args */ + opt = walker; + optlen = ep - walker; + + printf("\n"); + printf(" dp:"); indent = 1; while (dp < edp) { if (efidp_size(dp) == 0) @@ -787,7 +805,7 @@ print_loadopt_str(uint8_t *data, size_t datalen) efidp_format_device_path(buf, sizeof(buf), dp, (intptr_t)(void *)edp - (intptr_t)(void *)dp); printf("%*s%s\n", indent, "", buf); - indent = 10 + len + 1; + indent = 11; rv = efivar_device_path_to_unix_path(dp, &dev, &relpath, &abspath); if (rv == 0) { printf("%*s%s:%s %s\n", indent + 4, "", dev, relpath, abspath); @@ -797,6 +815,37 @@ print_loadopt_str(uint8_t *data, size_t datalen) } dp = (efidp)((char *)dp + efidp_size(dp)); } + + /* Optional Data */ + if (optlen > 0) { + printf(" opt/x: "); + efi_hexdump(opt, optlen, 11); + printf(" opt/a: "); + efi_asciidump(opt, optlen, 11); + } + + /* Attributes */ + printf(" attr: %#x<", attr); + if (attr & LOAD_OPTION_ACTIVE) + printf("ACTIVE,"); + if (attr & LOAD_OPTION_FORCE_RECONNECT) + printf("FORCE_RECONNECT,"); + if (attr & LOAD_OPTION_HIDDEN) + printf("HIDDEN,"); + printf(">\n"); + + /* Category */ + categ = (attr & LOAD_OPTION_CATEGORY); + printf(" categ: %#x<", categ); + switch (categ) { + case LOAD_OPTION_CATEGORY_APP: + printf("APP"); + break; + case LOAD_OPTION_CATEGORY_BOOT: + printf("BOOT"); + break; + } + printf(">\n"); } static char *