]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
cmd: efidebug: add ecpt command
authorVincent Stehlé <vincent.stehle@arm.com>
Mon, 9 Mar 2026 16:36:37 +0000 (17:36 +0100)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 14 Mar 2026 07:10:26 +0000 (08:10 +0100)
Add an "efidebug ecpt" command, to print the conformance profiles in the
ECPT:

  => efidebug ecpt
  cce33c35-74ac-4087-bce7-8b29b02eeb27  EFI EBBR 2.1 Conformance Profile

Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Tom Rini <trini@konsulko.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
cmd/efidebug.c

index 109496d9e95148dc9869439ec6ffa87e054e7421..7b733119c824e82de5032ae19ceb0e67887a2468 100644 (file)
@@ -533,6 +533,47 @@ static int do_efi_show_defaults(struct cmd_tbl *cmdtp, int flag,
        return CMD_RET_SUCCESS;
 }
 
+#if CONFIG_IS_ENABLED(EFI_ECPT)
+/**
+ * do_efi_show_ecpt() - show UEFI conformance profiles in ECPT
+ *
+ * @cmdtp:     Command table
+ * @flag:      Command flag
+ * @argc:      Number of arguments
+ * @argv:      Argument array
+ * Return:     CMD_RET_SUCCESS on success,
+ *             CMD_RET_USAGE or CMD_RET_FAILURE on failure
+ *
+ * Implement efidebug "ecpt" sub-command.
+ * Show all the UEFI Conformance Profiles listed in the EFI Conformance Profiles
+ * Table (ECPT).
+ */
+static int do_efi_show_ecpt(struct cmd_tbl *cmdtp, int flag, int argc,
+                           char *const argv[])
+{
+       const struct efi_conformance_profiles_table *ecpt;
+       u16 n;
+
+       if (argc != 1)
+               return CMD_RET_USAGE;
+
+       ecpt = efi_get_configuration_table(&efi_ecpt_guid);
+       if (!ecpt) {
+               log_err("ECPT table missing\n");
+               return CMD_RET_FAILURE;
+       }
+
+       for (n = 0; n < ecpt->number_of_profiles; n++) {
+               const efi_guid_t *guid = &ecpt->conformance_profiles[n];
+
+               printf("%pUl  %s\n", guid->b,
+                      uuid_guid_get_str(guid->b) ?: "(unknown)");
+       }
+
+       return CMD_RET_SUCCESS;
+}
+#endif /* CONFIG_IS_ENABLED(EFI_ECPT) */
+
 static const char * const efi_mem_type_string[] = {
        [EFI_RESERVED_MEMORY_TYPE] = "RESERVED",
        [EFI_LOADER_CODE] = "LOADER CODE",
@@ -1586,6 +1627,10 @@ static struct cmd_tbl cmd_efidebug_sub[] = {
                         "", ""),
        U_BOOT_CMD_MKENT(defaults, CONFIG_SYS_MAXARGS, 1, do_efi_show_defaults,
                         "", ""),
+#if CONFIG_IS_ENABLED(EFI_ECPT)
+       U_BOOT_CMD_MKENT(ecpt, CONFIG_SYS_MAXARGS, 1, do_efi_show_ecpt,
+                        "", ""),
+#endif
        U_BOOT_CMD_MKENT(images, CONFIG_SYS_MAXARGS, 1, do_efi_show_images,
                         "", ""),
        U_BOOT_CMD_MKENT(memmap, CONFIG_SYS_MAXARGS, 1, do_efi_show_memmap,
@@ -1680,6 +1725,10 @@ U_BOOT_LONGHELP(efidebug,
        "  - show UEFI handles\n"
        "efidebug defaults\n"
        "  - show default EFI filename and PXE architecture\n"
+#if CONFIG_IS_ENABLED(EFI_ECPT)
+       "efidebug ecpt\n"
+       "  - show conformance profiles in the ECPT\n"
+#endif
        "efidebug images\n"
        "  - show loaded images\n"
        "efidebug memmap\n"