[PATCH 3/3] cmd: efi: efidebug print ECPT table

Heinrich Schuchardt xypron.glpk at gmx.de
Fri Dec 17 14:29:27 CET 2021


Am 17. Dezember 2021 13:55:06 MEZ schrieb Jose Marinho <jose.marinho at arm.com>:
>Signed-off-by: Jose Marinho <jose.marinho at arm.com>

Please, provide a commit message.

Best regards

Heinrich

>---
> cmd/efidebug.c       | 41 +++++++++++++++++++++++++++++++++++++++++
> include/efi_loader.h |  2 ++
> 2 files changed, 43 insertions(+)
>
>diff --git a/cmd/efidebug.c b/cmd/efidebug.c
>index a53a5029fa..c3246e1820 100644
>--- a/cmd/efidebug.c
>+++ b/cmd/efidebug.c
>@@ -889,6 +889,38 @@ static int do_efi_show_tables(struct cmd_tbl *cmdtp, int flag,
> 	return CMD_RET_SUCCESS;
> }
> 
>+#ifdef CONFIG_EFI_ECPT
>+static int do_efi_ecpt(struct cmd_tbl *cmdtp, int flag,
>+		       int argc, char * const argv[])
>+{
>+	struct efi_conformance_profiles_table *ecpt;
>+
>+	if (argc != 1)
>+		return CMD_RET_USAGE;
>+
>+	for (int idx = 0; idx < systab.nr_tables; idx++)
>+		if (!guidcmp(&efi_ecpt_guid, &systab.tables[idx].guid))
>+			ecpt = (struct efi_system_resource_table *)systab.tables[idx].table;
>+
>+	if (!ecpt) {
>+		log_info("ECPT: table not present\n");
>+		return CMD_RET_SUCCESS;
>+	}
>+
>+	const int num_profiles = ecpt->number_of_profiles;
>+
>+	printf("========================================\n");
>+	printf("ECPT: version:%d\n", ecpt->version);
>+	printf("ECPT: num profiles:%d\n", num_profiles);
>+
>+	for (int i = 0; i < num_profiles; i++)
>+		printf("ECPT: profile %d = %pUL\n", i, &ecpt->conformance_profiles[i]);
>+	printf("========================================\n");
>+
>+	return CMD_RET_SUCCESS;
>+}
>+#endif /* CONFIG_EFI_ECPT */
>+
> /**
>  * create_initrd_dp() - Create a special device for our Boot### option
>  *
>@@ -1681,6 +1713,11 @@ static struct cmd_tbl cmd_efidebug_sub[] = {
> 			 "", ""),
> 	U_BOOT_CMD_MKENT(query, CONFIG_SYS_MAXARGS, 1, do_efi_query_info,
> 			 "", ""),
>+#ifdef CONFIG_EFI_ECPT
>+	U_BOOT_CMD_MKENT(ecpt, CONFIG_SYS_MAXARGS, 1, do_efi_ecpt,
>+			 "", ""),
>+#endif
>+
> };
> 
> /**
>@@ -1769,6 +1806,10 @@ static char efidebug_help_text[] =
> 	"  - show UEFI memory map\n"
> 	"efidebug tables\n"
> 	"  - show UEFI configuration tables\n"
>+#ifdef CONFIG_EFI_ECPT
>+	"efidebug ecpt\n"
>+	"  - show UEFI conformance profiles table\n"
>+#endif
> #ifdef CONFIG_CMD_BOOTEFI_BOOTMGR
> 	"efidebug test bootmgr\n"
> 	"  - run simple bootmgr for test\n"
>diff --git a/include/efi_loader.h b/include/efi_loader.h
>index d20ff396d0..d60a340136 100644
>--- a/include/efi_loader.h
>+++ b/include/efi_loader.h
>@@ -310,6 +310,8 @@ extern const efi_guid_t efi_guid_firmware_management_protocol;
> extern const efi_guid_t efi_esrt_guid;
> /* GUID of the SMBIOS table */
> extern const efi_guid_t smbios_guid;
>+/* GUID for the ECPT */
>+extern const efi_guid_t efi_ecpt_guid;
> 
> extern char __efi_runtime_start[], __efi_runtime_stop[];
> extern char __efi_runtime_rel_start[], __efi_runtime_rel_stop[];



More information about the U-Boot mailing list