All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] efi_loader: simplify printing GUIDs
@ 2022-01-16 15:14 Heinrich Schuchardt
  2022-01-16 15:14 ` [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y Heinrich Schuchardt
                   ` (7 more replies)
  0 siblings, 8 replies; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

In different places text representations are used for GUIDs, e.g.
    
* command efidebug
* command printenv -e
* command part list for GPT partitions

Introduce a new printf code %pUs and use it to deduplicate the coding.

Heinrich Schuchardt (8):
  lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y
  lib: printf code %pUs for GUID text representation
  disk: simplify part_print_efi()
  sandbox: imply PARTITION_TYPE_GUID
  test: add test for %pUs
  cmd: efidebug: simplify printing GUIDs
  efi_loader: user %pUs for printing GUIDs
  cmd: printenv: simplify printing GUIDs

 arch/Kconfig                      |   1 +
 cmd/efidebug.c                    | 160 +-----------------------------
 cmd/nvedit_efi.c                  |  39 +-------
 disk/part_efi.c                   |  21 ++--
 include/efi_api.h                 |   8 ++
 include/efi_dt_fixup.h            |   4 -
 include/efi_rng.h                 |   4 -
 lib/efi_loader/efi_boottime.c     |  26 ++---
 lib/efi_loader/efi_capsule.c      |   6 +-
 lib/efi_loader/efi_esrt.c         |   6 +-
 lib/efi_loader/efi_file.c         |   4 +-
 lib/efi_loader/efi_hii.c          |  14 +--
 lib/efi_loader/efi_hii_config.c   |   2 +-
 lib/efi_loader/efi_image_loader.c |   2 +-
 lib/efi_loader/efi_rng.c          |   2 +-
 lib/efi_loader/efi_signature.c    |   2 +-
 lib/efi_loader/efi_var_common.c   |   6 +-
 lib/uuid.c                        | 144 ++++++++++++++++++++++++++-
 lib/vsprintf.c                    |  11 +-
 test/print_ut.c                   |  20 +++-
 20 files changed, 226 insertions(+), 256 deletions(-)

-- 
2.33.1


^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-21 15:20   ` Simon Glass
  2022-01-16 15:14 ` [PATCH 2/8] lib: printf code %pUs for GUID text representation Heinrich Schuchardt
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

Currently uuid_guid_get_str() is only built if
CONFIG_PARTITION_TYPE_GUID=y.

To make it usable for other GUIDs compile it if CONFIG_LIB_UUID=y.
The linker will take care of removing it if it is unused.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 lib/uuid.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/uuid.c b/lib/uuid.c
index e4703dce2b..56c452ee77 100644
--- a/lib/uuid.c
+++ b/lib/uuid.c
@@ -86,11 +86,11 @@ int uuid_str_valid(const char *uuid)
 	return 1;
 }
 
-#ifdef CONFIG_PARTITION_TYPE_GUID
 static const struct {
 	const char *string;
 	efi_guid_t guid;
 } list_guid[] = {
+#ifdef CONFIG_PARTITION_TYPE_GUID
 	{"system",	PARTITION_SYSTEM_GUID},
 	{"mbr",		LEGACY_MBR_PARTITION_GUID},
 	{"msft",	PARTITION_MSFT_RESERVED_GUID},
@@ -100,6 +100,7 @@ static const struct {
 	{"swap",	PARTITION_LINUX_SWAP_GUID},
 	{"lvm",		PARTITION_LINUX_LVM_GUID},
 	{"u-boot-env",	PARTITION_U_BOOT_ENVIRONMENT},
+#endif
 };
 
 /*
@@ -139,7 +140,6 @@ const char *uuid_guid_get_str(const unsigned char *guid_bin)
 	}
 	return NULL;
 }
-#endif
 
 /*
  * uuid_str_to_bin() - convert string UUID or GUID to big endian binary data.
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 2/8] lib: printf code %pUs for GUID text representation
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
  2022-01-16 15:14 ` [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-18  2:48   ` AKASHI Takahiro
  2022-01-16 15:14 ` [PATCH 3/8] disk: simplify part_print_efi() Heinrich Schuchardt
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

In different places text representations are used for GUIDs, e.g.

* command efidebug
* command part list for GPT partitions

To allow reducing code duplication introduce a new printf code %pUs.
It will call uuid_guid_get_str() to get a text representation. If none is
found it will fallback to %pUl and print a hexadecimal representation.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 lib/vsprintf.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index de9f236b90..2c0cc1647e 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -255,8 +255,8 @@ static char *number(char *buf, char *end, u64 num,
 	return buf;
 }
 
-static char *string(char *buf, char *end, char *s, int field_width,
-		int precision, int flags)
+static char *string(char *buf, char *end, const char *s, int field_width,
+		    int precision, int flags)
 {
 	int len, i;
 
@@ -387,12 +387,14 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
  *   %pUB:   01020304-0506-0708-090A-0B0C0D0E0F10
  *   %pUl:   04030201-0605-0807-090a-0b0c0d0e0f10
  *   %pUL:   04030201-0605-0807-090A-0B0C0D0E0F10
+ *   %pUs:   GUID text representation if known or fallback to %pUl
  */
 static char *uuid_string(char *buf, char *end, u8 *addr, int field_width,
 			 int precision, int flags, const char *fmt)
 {
 	char uuid[UUID_STR_LEN + 1];
 	int str_format;
+	const char *str;
 
 	switch (*(++fmt)) {
 	case 'L':
@@ -404,6 +406,13 @@ static char *uuid_string(char *buf, char *end, u8 *addr, int field_width,
 	case 'B':
 		str_format = UUID_STR_FORMAT_STD | UUID_STR_UPPER_CASE;
 		break;
+	case 's':
+		str = uuid_guid_get_str(addr);
+		if (str)
+			return string(buf, end, str,
+				      field_width, precision, flags);
+		str_format = UUID_STR_FORMAT_GUID;
+		break;
 	default:
 		str_format = UUID_STR_FORMAT_STD;
 		break;
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 3/8] disk: simplify part_print_efi()
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
  2022-01-16 15:14 ` [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y Heinrich Schuchardt
  2022-01-16 15:14 ` [PATCH 2/8] lib: printf code %pUs for GUID text representation Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-21 15:20   ` Simon Glass
  2022-01-16 15:14 ` [PATCH 4/8] sandbox: imply PARTITION_TYPE_GUID Heinrich Schuchardt
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

Use printf code %pUs to print the text representation of the partition type
GUID.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 disk/part_efi.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/disk/part_efi.c b/disk/part_efi.c
index 3809333078..94e2930200 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -221,8 +221,7 @@ void part_print_efi(struct blk_desc *dev_desc)
 	ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, dev_desc->blksz);
 	gpt_entry *gpt_pte = NULL;
 	int i = 0;
-	char uuid[UUID_STR_LEN + 1];
-	unsigned char *uuid_bin;
+	unsigned char *uuid;
 
 	/* This function validates AND fills in the GPT header and PTE */
 	if (find_valid_gpt(dev_desc, gpt_head, &gpt_pte) != 1)
@@ -245,17 +244,13 @@ void part_print_efi(struct blk_desc *dev_desc)
 			le64_to_cpu(gpt_pte[i].ending_lba),
 			print_efiname(&gpt_pte[i]));
 		printf("\tattrs:\t0x%016llx\n", gpt_pte[i].attributes.raw);
-		uuid_bin = (unsigned char *)gpt_pte[i].partition_type_guid.b;
-		uuid_bin_to_str(uuid_bin, uuid, UUID_STR_FORMAT_GUID);
-		printf("\ttype:\t%s\n", uuid);
-		if (CONFIG_IS_ENABLED(PARTITION_TYPE_GUID)) {
-			const char *type = uuid_guid_get_str(uuid_bin);
-			if (type)
-				printf("\ttype:\t%s\n", type);
-		}
-		uuid_bin = (unsigned char *)gpt_pte[i].unique_partition_guid.b;
-		uuid_bin_to_str(uuid_bin, uuid, UUID_STR_FORMAT_GUID);
-		printf("\tguid:\t%s\n", uuid);
+		uuid = (unsigned char *)gpt_pte[i].partition_type_guid.b;
+		if (CONFIG_IS_ENABLED(PARTITION_TYPE_GUID))
+			printf("\ttype:\t%pUl\n\t\t(%pUs)\n", uuid, uuid);
+		else
+			printf("\ttype:\t%pUl\n", uuid);
+		uuid = (unsigned char *)gpt_pte[i].unique_partition_guid.b;
+		printf("\tguid:\t%pUl\n", uuid);
 	}
 
 	/* Remember to free pte */
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 4/8] sandbox: imply PARTITION_TYPE_GUID
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
                   ` (2 preceding siblings ...)
  2022-01-16 15:14 ` [PATCH 3/8] disk: simplify part_print_efi() Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-21 15:20   ` Simon Glass
  2022-01-16 15:14 ` [PATCH 5/8] test: add test for %pUs Heinrich Schuchardt
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

CONFIG_PARTITION_TYPE_GUID=y is needed for testing some GPT related
functionality.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 arch/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/Kconfig b/arch/Kconfig
index ee32e8366e..ffb8f5c8ec 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -175,6 +175,7 @@ config SANDBOX
 	imply AVB_VERIFY
 	imply LIBAVB
 	imply CMD_AVB
+	imply PARTITION_TYPE_GUID
 	imply SCP03
 	imply CMD_SCP03
 	imply UDP_FUNCTION_FASTBOOT
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 5/8] test: add test for %pUs
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
                   ` (3 preceding siblings ...)
  2022-01-16 15:14 ` [PATCH 4/8] sandbox: imply PARTITION_TYPE_GUID Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-21 15:20   ` Simon Glass
  2022-01-16 15:14 ` [PATCH 6/8] cmd: efidebug: simplify printing GUIDs Heinrich Schuchardt
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

Add a unit test for the %pUs printf code.

Use ut_asserteq_str() for checking string results.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 test/print_ut.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/test/print_ut.c b/test/print_ut.c
index 7b2e7bb152..194387f169 100644
--- a/test/print_ut.c
+++ b/test/print_ut.c
@@ -30,17 +30,29 @@ static int print_guid(struct unit_test_state *uts)
 	unsigned char guid[16] = {
 		1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
 	};
+	unsigned char guid_esp[16] = {
+		0x28, 0x73, 0x2a, 0xc1, 0x1f, 0xf8, 0xd2, 0x11,
+		0xBA, 0x4B, 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B
+	};
 	char str[40];
 	int ret;
 
 	sprintf(str, "%pUb", guid);
-	ut_assertok(strcmp("01020304-0506-0708-090a-0b0c0d0e0f10", str));
+	ut_asserteq_str("01020304-0506-0708-090a-0b0c0d0e0f10", str);
 	sprintf(str, "%pUB", guid);
-	ut_assertok(strcmp("01020304-0506-0708-090A-0B0C0D0E0F10", str));
+	ut_asserteq_str("01020304-0506-0708-090A-0B0C0D0E0F10", str);
 	sprintf(str, "%pUl", guid);
-	ut_assertok(strcmp("04030201-0605-0807-090a-0b0c0d0e0f10", str));
+	ut_asserteq_str("04030201-0605-0807-090a-0b0c0d0e0f10", str);
+	sprintf(str, "%pUs", guid);
+	ut_asserteq_str("04030201-0605-0807-090a-0b0c0d0e0f10", str);
 	sprintf(str, "%pUL", guid);
-	ut_assertok(strcmp("04030201-0605-0807-090A-0B0C0D0E0F10", str));
+	ut_asserteq_str("04030201-0605-0807-090A-0B0C0D0E0F10", str);
+	sprintf(str, "%pUs", guid_esp);
+	if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID)) { /* brace needed */
+		ut_asserteq_str("system", str);
+	} else {
+		ut_asserteq_str("c12a7328-f81f-11d2-ba4b-00a0c93ec93b", str);
+	}
 	ret = snprintf(str, 4, "%pUL", guid);
 	ut_asserteq(0, str[3]);
 	ut_asserteq(36, ret);
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
                   ` (4 preceding siblings ...)
  2022-01-16 15:14 ` [PATCH 5/8] test: add test for %pUs Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-21 15:20   ` Simon Glass
  2022-01-16 15:14 ` [PATCH 7/8] efi_loader: user %pUs for " Heinrich Schuchardt
  2022-01-16 15:14 ` [PATCH 8/8] cmd: printenv: simplify " Heinrich Schuchardt
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

Use "%pS" to print text representations of GUIDs.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 cmd/efidebug.c         | 160 ++---------------------------------------
 include/efi_api.h      |   8 +++
 include/efi_dt_fixup.h |   4 --
 include/efi_rng.h      |   4 --
 lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
 5 files changed, 128 insertions(+), 164 deletions(-)

diff --git a/cmd/efidebug.c b/cmd/efidebug.c
index a977ca9c72..66ce0fc305 100644
--- a/cmd/efidebug.c
+++ b/cmd/efidebug.c
@@ -502,149 +502,6 @@ static int do_efi_show_drivers(struct cmd_tbl *cmdtp, int flag,
 	return CMD_RET_SUCCESS;
 }
 
-static const struct {
-	const char *text;
-	const efi_guid_t guid;
-} guid_list[] = {
-	{
-		"Device Path",
-		EFI_DEVICE_PATH_PROTOCOL_GUID,
-	},
-	{
-		"Device Path To Text",
-		EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID,
-	},
-	{
-		"Device Path Utilities",
-		EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID,
-	},
-	{
-		"Unicode Collation 2",
-		EFI_UNICODE_COLLATION_PROTOCOL2_GUID,
-	},
-	{
-		"Driver Binding",
-		EFI_DRIVER_BINDING_PROTOCOL_GUID,
-	},
-	{
-		"Simple Text Input",
-		EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID,
-	},
-	{
-		"Simple Text Input Ex",
-		EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID,
-	},
-	{
-		"Simple Text Output",
-		EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID,
-	},
-	{
-		"Block IO",
-		EFI_BLOCK_IO_PROTOCOL_GUID,
-	},
-	{
-		"Simple File System",
-		EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID,
-	},
-	{
-		"Loaded Image",
-		EFI_LOADED_IMAGE_PROTOCOL_GUID,
-	},
-	{
-		"Graphics Output",
-		EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID,
-	},
-	{
-		"HII String",
-		EFI_HII_STRING_PROTOCOL_GUID,
-	},
-	{
-		"HII Database",
-		EFI_HII_DATABASE_PROTOCOL_GUID,
-	},
-	{
-		"HII Config Routing",
-		EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID,
-	},
-	{
-		"Load File2",
-		EFI_LOAD_FILE2_PROTOCOL_GUID,
-	},
-	{
-		"Random Number Generator",
-		EFI_RNG_PROTOCOL_GUID,
-	},
-	{
-		"Simple Network",
-		EFI_SIMPLE_NETWORK_PROTOCOL_GUID,
-	},
-	{
-		"PXE Base Code",
-		EFI_PXE_BASE_CODE_PROTOCOL_GUID,
-	},
-	{
-		"Device-Tree Fixup",
-		EFI_DT_FIXUP_PROTOCOL_GUID,
-	},
-	{
-		"System Partition",
-		PARTITION_SYSTEM_GUID
-	},
-	{
-		"Firmware Management",
-		EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GUID
-	},
-	/* Configuration table GUIDs */
-	{
-		"ACPI table",
-		EFI_ACPI_TABLE_GUID,
-	},
-	{
-		"EFI System Resource Table",
-		EFI_SYSTEM_RESOURCE_TABLE_GUID,
-	},
-	{
-		"device tree",
-		EFI_FDT_GUID,
-	},
-	{
-		"SMBIOS table",
-		SMBIOS_TABLE_GUID,
-	},
-	{
-		"Runtime properties",
-		EFI_RT_PROPERTIES_TABLE_GUID,
-	},
-	{
-		"TCG2 Final Events Table",
-		EFI_TCG2_FINAL_EVENTS_TABLE_GUID,
-	},
-};
-
-/**
- * get_guid_text - get string of GUID
- *
- * Return description of GUID.
- *
- * @guid:	GUID
- * Return:	description of GUID or NULL
- */
-static const char *get_guid_text(const void *guid)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(guid_list); i++) {
-		/*
-		 * As guidcmp uses memcmp() we can safely accept unaligned
-		 * GUIDs.
-		 */
-		if (!guidcmp(&guid_list[i].guid, guid))
-			return guid_list[i].text;
-	}
-
-	return NULL;
-}
-
 /**
  * do_efi_show_handles() - show UEFI handles
  *
@@ -664,7 +521,6 @@ static int do_efi_show_handles(struct cmd_tbl *cmdtp, int flag,
 	efi_handle_t *handles;
 	efi_guid_t **guid;
 	efi_uintn_t num, count, i, j;
-	const char *guid_text;
 	efi_status_t ret;
 
 	ret = EFI_CALL(efi_locate_handle_buffer(ALL_HANDLES, NULL, NULL,
@@ -692,11 +548,7 @@ static int do_efi_show_handles(struct cmd_tbl *cmdtp, int flag,
 			else
 				putc(' ');
 
-			guid_text = get_guid_text(guid[j]);
-			if (guid_text)
-				puts(guid_text);
-			else
-				printf("%pUl", guid[j]);
+			printf("%pUs", guid[j]);
 		}
 		putc('\n');
 	}
@@ -873,14 +725,10 @@ static int do_efi_show_tables(struct cmd_tbl *cmdtp, int flag,
 			      int argc, char *const argv[])
 {
 	efi_uintn_t i;
-	const char *guid_str;
 
-	for (i = 0; i < systab.nr_tables; ++i) {
-		guid_str = get_guid_text(&systab.tables[i].guid);
-		if (!guid_str)
-			guid_str = "";
-		printf("%pUl %s\n", &systab.tables[i].guid, guid_str);
-	}
+	for (i = 0; i < systab.nr_tables; ++i)
+		printf("%pUl (%pUs)\n",
+		       &systab.tables[i].guid, &systab.tables[i].guid);
 
 	return CMD_RET_SUCCESS;
 }
diff --git a/include/efi_api.h b/include/efi_api.h
index ec9fa89a93..a60d1bc416 100644
--- a/include/efi_api.h
+++ b/include/efi_api.h
@@ -426,6 +426,14 @@ struct efi_runtime_services {
 	EFI_GUID(0x1e2ed096, 0x30e2, 0x4254, 0xbd, \
 		 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25)
 
+#define EFI_RNG_PROTOCOL_GUID \
+	EFI_GUID(0x3152bca5, 0xeade, 0x433d, 0x86, 0x2e, \
+		 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44)
+
+#define EFI_DT_FIXUP_PROTOCOL_GUID \
+	EFI_GUID(0xe617d64c, 0xfe08, 0x46da, 0xf4, 0xdc, \
+		 0xbb, 0xd5, 0x87, 0x0c, 0x73, 0x00)
+
 /**
  * struct efi_configuration_table - EFI Configuration Table
  *
diff --git a/include/efi_dt_fixup.h b/include/efi_dt_fixup.h
index 9066e8dd8e..83382537d1 100644
--- a/include/efi_dt_fixup.h
+++ b/include/efi_dt_fixup.h
@@ -7,10 +7,6 @@
 
 #include <efi_api.h>
 
-#define EFI_DT_FIXUP_PROTOCOL_GUID \
-	EFI_GUID(0xe617d64c, 0xfe08, 0x46da, 0xf4, 0xdc, \
-		 0xbb, 0xd5, 0x87, 0x0c, 0x73, 0x00)
-
 #define EFI_DT_FIXUP_PROTOCOL_REVISION 0x00010000
 
 /* Add nodes and update properties */
diff --git a/include/efi_rng.h b/include/efi_rng.h
index 35f59678c7..3c622381cb 100644
--- a/include/efi_rng.h
+++ b/include/efi_rng.h
@@ -10,10 +10,6 @@
 #include <efi_api.h>
 
 /* EFI random number generation protocol related GUID definitions */
-#define EFI_RNG_PROTOCOL_GUID \
-	EFI_GUID(0x3152bca5, 0xeade, 0x433d, 0x86, 0x2e, \
-		 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44)
-
 #define EFI_RNG_ALGORITHM_RAW \
 	EFI_GUID(0xe43176d7, 0xb6e8, 0x4827, 0xb7, 0x84, \
 		 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61)
diff --git a/lib/uuid.c b/lib/uuid.c
index 56c452ee77..60b7ca17f1 100644
--- a/lib/uuid.c
+++ b/lib/uuid.c
@@ -5,6 +5,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <efi_api.h>
 #include <env.h>
 #include <rand.h>
 #include <time.h>
@@ -101,6 +102,121 @@ static const struct {
 	{"lvm",		PARTITION_LINUX_LVM_GUID},
 	{"u-boot-env",	PARTITION_U_BOOT_ENVIRONMENT},
 #endif
+#ifdef CONFIG_CMD_EFIDEBUG
+	{
+		"Device Path",
+		EFI_DEVICE_PATH_PROTOCOL_GUID,
+	},
+	{
+		"Device Path To Text",
+		EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID,
+	},
+	{
+		"Device Path Utilities",
+		EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID,
+	},
+	{
+		"Unicode Collation 2",
+		EFI_UNICODE_COLLATION_PROTOCOL2_GUID,
+	},
+	{
+		"Driver Binding",
+		EFI_DRIVER_BINDING_PROTOCOL_GUID,
+	},
+	{
+		"Simple Text Input",
+		EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID,
+	},
+	{
+		"Simple Text Input Ex",
+		EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID,
+	},
+	{
+		"Simple Text Output",
+		EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID,
+	},
+	{
+		"Block IO",
+		EFI_BLOCK_IO_PROTOCOL_GUID,
+	},
+	{
+		"Simple File System",
+		EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID,
+	},
+	{
+		"Loaded Image",
+		EFI_LOADED_IMAGE_PROTOCOL_GUID,
+	},
+	{
+		"Graphics Output",
+		EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID,
+	},
+	{
+		"HII String",
+		EFI_HII_STRING_PROTOCOL_GUID,
+	},
+	{
+		"HII Database",
+		EFI_HII_DATABASE_PROTOCOL_GUID,
+	},
+	{
+		"HII Config Routing",
+		EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID,
+	},
+	{
+		"Load File2",
+		EFI_LOAD_FILE2_PROTOCOL_GUID,
+	},
+	{
+		"Random Number Generator",
+		EFI_RNG_PROTOCOL_GUID,
+	},
+	{
+		"Simple Network",
+		EFI_SIMPLE_NETWORK_PROTOCOL_GUID,
+	},
+	{
+		"PXE Base Code",
+		EFI_PXE_BASE_CODE_PROTOCOL_GUID,
+	},
+	{
+		"Device-Tree Fixup",
+		EFI_DT_FIXUP_PROTOCOL_GUID,
+	},
+	{
+		"System Partition",
+		PARTITION_SYSTEM_GUID
+	},
+	{
+		"Firmware Management",
+		EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GUID
+	},
+	/* Configuration table GUIDs */
+	{
+		"ACPI table",
+		EFI_ACPI_TABLE_GUID,
+	},
+	{
+		"EFI System Resource Table",
+		EFI_SYSTEM_RESOURCE_TABLE_GUID,
+	},
+	{
+		"device tree",
+		EFI_FDT_GUID,
+	},
+	{
+		"SMBIOS table",
+		SMBIOS_TABLE_GUID,
+	},
+	{
+		"Runtime properties",
+		EFI_RT_PROPERTIES_TABLE_GUID,
+	},
+	{
+		"TCG2 Final Events Table",
+		EFI_TCG2_FINAL_EVENTS_TABLE_GUID,
+	},
+#endif
 };
 
 /*
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 7/8] efi_loader: user %pUs for printing GUIDs
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
                   ` (5 preceding siblings ...)
  2022-01-16 15:14 ` [PATCH 6/8] cmd: efidebug: simplify printing GUIDs Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  2022-01-21 15:20   ` Simon Glass
  2022-01-16 15:14 ` [PATCH 8/8] cmd: printenv: simplify " Heinrich Schuchardt
  7 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

For printing GUIDs with macro EFI_ENTRY use %pUs instead of %pUl to provide
readable debug output.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 lib/efi_loader/efi_boottime.c     | 26 +++++++++++++-------------
 lib/efi_loader/efi_capsule.c      |  6 +++---
 lib/efi_loader/efi_esrt.c         |  6 +++---
 lib/efi_loader/efi_file.c         |  4 ++--
 lib/efi_loader/efi_hii.c          | 14 +++++++-------
 lib/efi_loader/efi_hii_config.c   |  2 +-
 lib/efi_loader/efi_image_loader.c |  2 +-
 lib/efi_loader/efi_rng.c          |  2 +-
 lib/efi_loader/efi_signature.c    |  2 +-
 lib/efi_loader/efi_var_common.c   |  6 +++---
 10 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
index 20b69699fe..37b9c68b6e 100644
--- a/lib/efi_loader/efi_boottime.c
+++ b/lib/efi_loader/efi_boottime.c
@@ -747,7 +747,7 @@ efi_status_t EFIAPI efi_create_event_ex(uint32_t type, efi_uintn_t notify_tpl,
 {
 	efi_status_t ret;
 
-	EFI_ENTRY("%d, 0x%zx, %p, %p, %pUl", type, notify_tpl, notify_function,
+	EFI_ENTRY("%d, 0x%zx, %p, %p, %pUs", type, notify_tpl, notify_function,
 		  notify_context, event_group);
 
 	/*
@@ -1180,7 +1180,7 @@ static efi_status_t EFIAPI efi_install_protocol_interface(
 {
 	efi_status_t r;
 
-	EFI_ENTRY("%p, %pUl, %d, %p", handle, protocol, protocol_interface_type,
+	EFI_ENTRY("%p, %pUs, %d, %p", handle, protocol, protocol_interface_type,
 		  protocol_interface);
 
 	if (!handle || !protocol ||
@@ -1383,7 +1383,7 @@ static efi_status_t EFIAPI efi_uninstall_protocol_interface
 {
 	efi_status_t ret;
 
-	EFI_ENTRY("%p, %pUl, %p", handle, protocol, protocol_interface);
+	EFI_ENTRY("%p, %pUs, %p", handle, protocol, protocol_interface);
 
 	ret = efi_uninstall_protocol(handle, protocol, protocol_interface);
 	if (ret != EFI_SUCCESS)
@@ -1418,7 +1418,7 @@ efi_status_t EFIAPI efi_register_protocol_notify(const efi_guid_t *protocol,
 	struct efi_register_notify_event *item;
 	efi_status_t ret = EFI_SUCCESS;
 
-	EFI_ENTRY("%pUl, %p, %p", protocol, event, registration);
+	EFI_ENTRY("%pUs, %p, %p", protocol, event, registration);
 
 	if (!protocol || !event || !registration) {
 		ret = EFI_INVALID_PARAMETER;
@@ -1601,7 +1601,7 @@ static efi_status_t EFIAPI efi_locate_handle_ext(
 			const efi_guid_t *protocol, void *search_key,
 			efi_uintn_t *buffer_size, efi_handle_t *buffer)
 {
-	EFI_ENTRY("%d, %pUl, %p, %p, %p", search_type, protocol, search_key,
+	EFI_ENTRY("%d, %pUs, %p, %p, %p", search_type, protocol, search_key,
 		  buffer_size, buffer);
 
 	return EFI_EXIT(efi_locate_handle(search_type, protocol, search_key,
@@ -1699,7 +1699,7 @@ static efi_status_t
 EFIAPI efi_install_configuration_table_ext(const efi_guid_t *guid,
 					   void *table)
 {
-	EFI_ENTRY("%pUl, %p", guid, table);
+	EFI_ENTRY("%pUs, %p", guid, table);
 	return EFI_EXIT(efi_install_configuration_table(guid, table));
 }
 
@@ -1814,7 +1814,7 @@ static efi_status_t EFIAPI efi_locate_device_path(
 	u8 *remainder;
 	efi_status_t ret;
 
-	EFI_ENTRY("%pUl, %p, %p", protocol, device_path, device);
+	EFI_ENTRY("%pUs, %p, %p", protocol, device_path, device);
 
 	if (!protocol || !device_path || !*device_path) {
 		ret = EFI_INVALID_PARAMETER;
@@ -2303,7 +2303,7 @@ efi_status_t EFIAPI efi_close_protocol(efi_handle_t handle,
 	struct efi_open_protocol_info_item *pos;
 	efi_status_t r;
 
-	EFI_ENTRY("%p, %pUl, %p, %p", handle, protocol, agent_handle,
+	EFI_ENTRY("%p, %pUs, %p, %p", handle, protocol, agent_handle,
 		  controller_handle);
 
 	if (!efi_search_obj(agent_handle) ||
@@ -2353,7 +2353,7 @@ static efi_status_t EFIAPI efi_open_protocol_information(
 	struct efi_open_protocol_info_item *item;
 	efi_status_t r;
 
-	EFI_ENTRY("%p, %pUl, %p, %p", handle, protocol, entry_buffer,
+	EFI_ENTRY("%p, %pUs, %p, %p", handle, protocol, entry_buffer,
 		  entry_count);
 
 	/* Check parameters */
@@ -2477,7 +2477,7 @@ efi_status_t EFIAPI efi_locate_handle_buffer(
 	efi_status_t r;
 	efi_uintn_t buffer_size = 0;
 
-	EFI_ENTRY("%d, %pUl, %p, %p, %p", search_type, protocol, search_key,
+	EFI_ENTRY("%d, %pUs, %p, %p, %p", search_type, protocol, search_key,
 		  no_handles, buffer);
 
 	if (!no_handles || !buffer) {
@@ -2523,7 +2523,7 @@ static efi_status_t EFIAPI efi_locate_protocol(const efi_guid_t *protocol,
 	efi_status_t ret;
 	struct efi_object *efiobj;
 
-	EFI_ENTRY("%pUl, %p, %p", protocol, registration, protocol_interface);
+	EFI_ENTRY("%pUs, %p, %p", protocol, registration, protocol_interface);
 
 	/*
 	 * The UEFI spec explicitly requires a protocol even if a registration
@@ -2914,7 +2914,7 @@ static efi_status_t EFIAPI efi_open_protocol
 	struct efi_handler *handler;
 	efi_status_t r = EFI_INVALID_PARAMETER;
 
-	EFI_ENTRY("%p, %pUl, %p, %p, %p, 0x%x", handle, protocol,
+	EFI_ENTRY("%p, %pUs, %p, %p, %p, 0x%x", handle, protocol,
 		  protocol_interface, agent_handle, controller_handle,
 		  attributes);
 
@@ -3531,7 +3531,7 @@ static efi_status_t EFIAPI efi_reinstall_protocol_interface(
 {
 	efi_status_t ret;
 
-	EFI_ENTRY("%p, %pUl, %p, %p", handle, protocol, old_interface,
+	EFI_ENTRY("%p, %pUs, %p, %p", handle, protocol, old_interface,
 		  new_interface);
 
 	/* Uninstall protocol but do not delete handle */
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c
index 8301eed631..4463ae00fd 100644
--- a/lib/efi_loader/efi_capsule.c
+++ b/lib/efi_loader/efi_capsule.c
@@ -453,7 +453,7 @@ static efi_status_t efi_capsule_update_firmware(
 				   image->update_hardware_instance,
 				   handles, no_handles);
 		if (!fmp) {
-			log_err("FMP driver not found for firmware type %pUl, hardware instance %lld\n",
+			log_err("FMP driver not found for firmware type %pUs, hardware instance %lld\n",
 				&image->update_image_type_id,
 				image->update_hardware_instance);
 			ret = EFI_UNSUPPORTED;
@@ -548,13 +548,13 @@ efi_status_t EFIAPI efi_update_capsule(
 			continue;
 		}
 
-		log_debug("Capsule[%d] (guid:%pUl)\n",
+		log_debug("Capsule[%d] (guid:%pUs)\n",
 			  i, &capsule->capsule_guid);
 		if (!guidcmp(&capsule->capsule_guid,
 			     &efi_guid_firmware_management_capsule_id)) {
 			ret  = efi_capsule_update_firmware(capsule);
 		} else {
-			log_err("Unsupported capsule type: %pUl\n",
+			log_err("Unsupported capsule type: %pUs\n",
 				&capsule->capsule_guid);
 			ret = EFI_UNSUPPORTED;
 		}
diff --git a/lib/efi_loader/efi_esrt.c b/lib/efi_loader/efi_esrt.c
index 3ca55ce23a..dcc08a6d3a 100644
--- a/lib/efi_loader/efi_esrt.c
+++ b/lib/efi_loader/efi_esrt.c
@@ -180,7 +180,7 @@ struct efi_system_resource_entry *esrt_find_entry(efi_guid_t *img_fw_class)
 	/* Check if the image with img_fw_class is already in the ESRT. */
 	for (u32 idx = 0; idx < filled_entries; idx++) {
 		if (!guidcmp(&entry[idx].fw_class, img_fw_class)) {
-			EFI_PRINT("ESRT found entry for image %pUl at index %u\n",
+			EFI_PRINT("ESRT found entry for image %pUs at index %u\n",
 				  img_fw_class, idx);
 			return &entry[idx];
 		}
@@ -202,7 +202,7 @@ struct efi_system_resource_entry *esrt_find_entry(efi_guid_t *img_fw_class)
 	 */
 	esrt->fw_resource_count++;
 	entry[filled_entries].fw_class = *img_fw_class;
-	EFI_PRINT("ESRT allocated new entry for image %pUl at index %u\n",
+	EFI_PRINT("ESRT allocated new entry for image %pUs at index %u\n",
 		  img_fw_class, filled_entries);
 
 	return &entry[filled_entries];
@@ -291,7 +291,7 @@ efi_status_t efi_esrt_add_from_fmp(struct efi_firmware_management_protocol *fmp)
 				EFI_PRINT("ESRT entry mismatches image_type\n");
 
 		} else {
-			EFI_PRINT("ESRT failed to add entry for %pUl\n",
+			EFI_PRINT("ESRT failed to add entry for %pUs\n",
 				  &cur_img_info->image_type_id);
 			continue;
 		}
diff --git a/lib/efi_loader/efi_file.c b/lib/efi_loader/efi_file.c
index 6299fcbbf4..9aa003096c 100644
--- a/lib/efi_loader/efi_file.c
+++ b/lib/efi_loader/efi_file.c
@@ -824,7 +824,7 @@ static efi_status_t EFIAPI efi_file_getinfo(struct efi_file_handle *file,
 	efi_status_t ret = EFI_SUCCESS;
 	u16 *dst;
 
-	EFI_ENTRY("%p, %pUl, %p, %p", file, info_type, buffer_size, buffer);
+	EFI_ENTRY("%p, %pUs, %p, %p", file, info_type, buffer_size, buffer);
 
 	if (!file || !info_type || !buffer_size ||
 	    (*buffer_size && !buffer)) {
@@ -924,7 +924,7 @@ static efi_status_t EFIAPI efi_file_setinfo(struct efi_file_handle *file,
 	struct file_handle *fh = to_fh(file);
 	efi_status_t ret = EFI_UNSUPPORTED;
 
-	EFI_ENTRY("%p, %pUl, %zu, %p", file, info_type, buffer_size, buffer);
+	EFI_ENTRY("%p, %pUs, %zu, %p", file, info_type, buffer_size, buffer);
 
 	if (!guidcmp(info_type, &efi_file_info_guid)) {
 		struct efi_file_info *info = (struct efi_file_info *)buffer;
diff --git a/lib/efi_loader/efi_hii.c b/lib/efi_loader/efi_hii.c
index 77e330285a..9f87e95e32 100644
--- a/lib/efi_loader/efi_hii.c
+++ b/lib/efi_loader/efi_hii.c
@@ -372,7 +372,7 @@ add_packages(struct efi_hii_packagelist *hii,
 	end = ((void *)package_list)
 		+ get_unaligned_le32(&package_list->package_length);
 
-	EFI_PRINT("package_list: %pUl (%u)\n", &package_list->package_list_guid,
+	EFI_PRINT("package_list: %pUs (%u)\n", &package_list->package_list_guid,
 		  get_unaligned_le32(&package_list->package_length));
 
 	package = ((void *)package_list) + sizeof(*package_list);
@@ -504,7 +504,7 @@ update_package_list(const struct efi_hii_database_protocol *this,
 	if (!package_list)
 		return EFI_EXIT(EFI_INVALID_PARAMETER);
 
-	EFI_PRINT("package_list: %pUl (%u)\n", &package_list->package_list_guid,
+	EFI_PRINT("package_list: %pUs (%u)\n", &package_list->package_list_guid,
 		  get_unaligned_le32(&package_list->package_length));
 
 	package = ((void *)package_list) + sizeof(*package_list);
@@ -583,7 +583,7 @@ list_package_lists(const struct efi_hii_database_protocol *this,
 	int package_cnt, package_max;
 	efi_status_t ret = EFI_NOT_FOUND;
 
-	EFI_ENTRY("%p, %u, %pUl, %p, %p", this, package_type, package_guid,
+	EFI_ENTRY("%p, %u, %pUs, %p, %p", this, package_type, package_guid,
 		  handle_buffer_length, handle);
 
 	if (!handle_buffer_length ||
@@ -598,7 +598,7 @@ list_package_lists(const struct efi_hii_database_protocol *this,
 		goto out;
 	}
 
-	EFI_PRINT("package type=%x, guid=%pUl, length=%zu\n", (int)package_type,
+	EFI_PRINT("package type=%x, guid=%pUs, length=%zu\n", (int)package_type,
 		  package_guid, *handle_buffer_length);
 
 	package_cnt = 0;
@@ -658,7 +658,7 @@ register_package_notify(const struct efi_hii_database_protocol *this,
 			efi_uintn_t notify_type,
 			efi_handle_t *notify_handle)
 {
-	EFI_ENTRY("%p, %u, %pUl, %p, %zu, %p", this, package_type,
+	EFI_ENTRY("%p, %u, %pUs, %p, %zu, %p", this, package_type,
 		  package_guid, package_notify_fn, notify_type,
 		  notify_handle);
 
@@ -721,7 +721,7 @@ get_keyboard_layout(const struct efi_hii_database_protocol *this,
 	struct efi_keyboard_layout_data *layout_data;
 	u16 layout_length;
 
-	EFI_ENTRY("%p, %pUl, %p, %p", this, key_guid, keyboard_layout_length,
+	EFI_ENTRY("%p, %pUs, %p, %p", this, key_guid, keyboard_layout_length,
 		  keyboard_layout);
 
 	if (!keyboard_layout_length ||
@@ -756,7 +756,7 @@ static efi_status_t EFIAPI
 set_keyboard_layout(const struct efi_hii_database_protocol *this,
 		    efi_guid_t *key_guid)
 {
-	EFI_ENTRY("%p, %pUl", this, key_guid);
+	EFI_ENTRY("%p, %pUs", this, key_guid);
 
 	return EFI_EXIT(EFI_NOT_FOUND);
 }
diff --git a/lib/efi_loader/efi_hii_config.c b/lib/efi_loader/efi_hii_config.c
index 237e8acf84..31b0c97eb2 100644
--- a/lib/efi_loader/efi_hii_config.c
+++ b/lib/efi_loader/efi_hii_config.c
@@ -88,7 +88,7 @@ get_alt_config(const struct efi_hii_config_routing_protocol *this,
 	       const efi_string_t alt_cfg_id,
 	       efi_string_t *alt_cfg_resp)
 {
-	EFI_ENTRY("%p, \"%ls\", %pUl, \"%ls\", %p, \"%ls\", %p",
+	EFI_ENTRY("%p, \"%ls\", %pUs, \"%ls\", %p, \"%ls\", %p",
 		  this, config_resp, guid, name, device_path,
 		  alt_cfg_id, alt_cfg_resp);
 
diff --git a/lib/efi_loader/efi_image_loader.c b/lib/efi_loader/efi_image_loader.c
index 773bd0677c..255613eb72 100644
--- a/lib/efi_loader/efi_image_loader.c
+++ b/lib/efi_loader/efi_image_loader.c
@@ -676,7 +676,7 @@ static bool efi_image_authenticate(void *efi, size_t efi_size)
 				continue;
 			}
 			if (guidcmp(auth, &efi_guid_cert_type_pkcs7)) {
-				EFI_PRINT("Certificate type not supported: %pUl\n",
+				EFI_PRINT("Certificate type not supported: %pUs\n",
 					  auth);
 				continue;
 			}
diff --git a/lib/efi_loader/efi_rng.c b/lib/efi_loader/efi_rng.c
index 0e06546856..bb11d8d0e0 100644
--- a/lib/efi_loader/efi_rng.c
+++ b/lib/efi_loader/efi_rng.c
@@ -122,7 +122,7 @@ static efi_status_t EFIAPI getrng(struct efi_rng_protocol *this,
 	}
 
 	if (rng_algorithm) {
-		EFI_PRINT("RNG algorithm %pUl\n", rng_algorithm);
+		EFI_PRINT("RNG algorithm %pUs\n", rng_algorithm);
 		if (guidcmp(rng_algorithm, &rng_raw_guid)) {
 			status = EFI_UNSUPPORTED;
 			goto back;
diff --git a/lib/efi_loader/efi_signature.c b/lib/efi_loader/efi_signature.c
index 6e3ee3c0c0..3243e2c60d 100644
--- a/lib/efi_loader/efi_signature.c
+++ b/lib/efi_loader/efi_signature.c
@@ -174,7 +174,7 @@ bool efi_signature_lookup_digest(struct efi_image_regions *regs,
 	for (siglist = db; siglist; siglist = siglist->next) {
 		/* TODO: support other hash algorithms */
 		if (guidcmp(&siglist->sig_type, &efi_guid_sha256)) {
-			EFI_PRINT("Digest algorithm is not supported: %pUl\n",
+			EFI_PRINT("Digest algorithm is not supported: %pUs\n",
 				  &siglist->sig_type);
 			break;
 		}
diff --git a/lib/efi_loader/efi_var_common.c b/lib/efi_loader/efi_var_common.c
index 3cbb7c96c2..9f1dd74f36 100644
--- a/lib/efi_loader/efi_var_common.c
+++ b/lib/efi_loader/efi_var_common.c
@@ -62,7 +62,7 @@ efi_status_t EFIAPI efi_get_variable(u16 *variable_name,
 {
 	efi_status_t ret;
 
-	EFI_ENTRY("\"%ls\" %pUl %p %p %p", variable_name, vendor, attributes,
+	EFI_ENTRY("\"%ls\" %pUs %p %p %p", variable_name, vendor, attributes,
 		  data_size, data);
 
 	ret = efi_get_variable_int(variable_name, vendor, attributes,
@@ -96,7 +96,7 @@ efi_status_t EFIAPI efi_set_variable(u16 *variable_name,
 {
 	efi_status_t ret;
 
-	EFI_ENTRY("\"%ls\" %pUl %x %zu %p", variable_name, vendor, attributes,
+	EFI_ENTRY("\"%ls\" %pUs %x %zu %p", variable_name, vendor, attributes,
 		  data_size, data);
 
 	/* Make sure that the EFI_VARIABLE_READ_ONLY flag is not set */
@@ -127,7 +127,7 @@ efi_status_t EFIAPI efi_get_next_variable_name(efi_uintn_t *variable_name_size,
 {
 	efi_status_t ret;
 
-	EFI_ENTRY("%p \"%ls\" %pUl", variable_name_size, variable_name, vendor);
+	EFI_ENTRY("%p \"%ls\" %pUs", variable_name_size, variable_name, vendor);
 
 	ret = efi_get_next_variable_name_int(variable_name_size, variable_name,
 					     vendor);
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 8/8] cmd: printenv: simplify printing GUIDs
  2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
                   ` (6 preceding siblings ...)
  2022-01-16 15:14 ` [PATCH 7/8] efi_loader: user %pUs for " Heinrich Schuchardt
@ 2022-01-16 15:14 ` Heinrich Schuchardt
  7 siblings, 0 replies; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-16 15:14 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot,
	Heinrich Schuchardt

Use "%pS" to print text representations of GUIDs.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 cmd/nvedit_efi.c | 39 ++-------------------------------------
 lib/uuid.c       | 24 ++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 37 deletions(-)

diff --git a/cmd/nvedit_efi.c b/cmd/nvedit_efi.c
index 710d923a91..7ebb14e25f 100644
--- a/cmd/nvedit_efi.c
+++ b/cmd/nvedit_efi.c
@@ -39,40 +39,6 @@ static const struct {
 	{EFI_VARIABLE_READ_ONLY, "RO"},
 };
 
-static const struct {
-	efi_guid_t guid;
-	char *text;
-} efi_guid_text[] = {
-	/* signature database */
-	{EFI_GLOBAL_VARIABLE_GUID, "EFI_GLOBAL_VARIABLE_GUID"},
-	{EFI_IMAGE_SECURITY_DATABASE_GUID, "EFI_IMAGE_SECURITY_DATABASE_GUID"},
-	/* certificate type */
-	{EFI_CERT_SHA256_GUID, "EFI_CERT_SHA256_GUID"},
-	{EFI_CERT_X509_GUID, "EFI_CERT_X509_GUID"},
-	{EFI_CERT_TYPE_PKCS7_GUID, "EFI_CERT_TYPE_PKCS7_GUID"},
-};
-
-static const char unknown_guid[] = "";
-
-/**
- * efi_guid_to_str() - convert guid to readable name
- *
- * @guid:	GUID
- * Return:	string for GUID
- *
- * convert guid to readable name
- */
-static const char *efi_guid_to_str(const efi_guid_t *guid)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(efi_guid_text); i++)
-		if (!guidcmp(guid, &efi_guid_text[i].guid))
-			return efi_guid_text[i].text;
-
-	return unknown_guid;
-}
-
 /**
  * efi_dump_single_var() - show information about a UEFI variable
  *
@@ -111,7 +77,7 @@ static void efi_dump_single_var(u16 *name, const efi_guid_t *guid, bool verbose)
 		goto out;
 
 	rtc_to_tm(time, &tm);
-	printf("%ls:\n    %pUl %s\n", name, guid, efi_guid_to_str(guid));
+	printf("%ls:\n    %pUl (%pUs)\n", name, guid, guid);
 	if (attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS)
 		printf("    %04d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year,
 		       tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
@@ -497,8 +463,7 @@ int do_env_set_efi(struct cmd_tbl *cmdtp, int flag, int argc,
 	}
 
 	if (verbose) {
-		printf("GUID: %pUl %s\n", &guid,
-		       efi_guid_to_str((const efi_guid_t *)&guid));
+		printf("GUID: %pUl (%pUs)\n", &guid, &guid);
 		printf("Attributes: 0x%x\n", attributes);
 	}
 
diff --git a/lib/uuid.c b/lib/uuid.c
index 60b7ca17f1..3ffaab7d15 100644
--- a/lib/uuid.c
+++ b/lib/uuid.c
@@ -217,6 +217,30 @@ static const struct {
 		EFI_TCG2_FINAL_EVENTS_TABLE_GUID,
 	},
 #endif
+#ifdef CONFIG_CMD_NVEDIT_EFI
+	/* signature database */
+	{
+		"EFI_GLOBAL_VARIABLE_GUID",
+		EFI_GLOBAL_VARIABLE_GUID,
+	},
+	{
+		"EFI_IMAGE_SECURITY_DATABASE_GUID",
+		EFI_IMAGE_SECURITY_DATABASE_GUID,
+	},
+	/* certificate types */
+	{
+		"EFI_CERT_SHA256_GUID",
+		EFI_CERT_SHA256_GUID,
+	},
+	{
+		"EFI_CERT_X509_GUID",
+		EFI_CERT_X509_GUID,
+	},
+	{
+		"EFI_CERT_TYPE_PKCS7_GUID",
+		EFI_CERT_TYPE_PKCS7_GUID,
+	},
+#endif
 };
 
 /*
-- 
2.33.1


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH 2/8] lib: printf code %pUs for GUID text representation
  2022-01-16 15:14 ` [PATCH 2/8] lib: printf code %pUs for GUID text representation Heinrich Schuchardt
@ 2022-01-18  2:48   ` AKASHI Takahiro
  0 siblings, 0 replies; 21+ messages in thread
From: AKASHI Takahiro @ 2022-01-18  2:48 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Simon Glass, Rasmus Villemoes, Patrick Delaunay, u-boot

On Sun, Jan 16, 2022 at 04:14:35PM +0100, Heinrich Schuchardt wrote:
> In different places text representations are used for GUIDs, e.g.
> 
> * command efidebug
> * command part list for GPT partitions
> 
> To allow reducing code duplication introduce a new printf code %pUs.
> It will call uuid_guid_get_str() to get a text representation. If none is
> found it will fallback to %pUl and print a hexadecimal representation.

I think the idea is good.
Moreover, when you add a new format specifier to printf() routine,
it would also be good to add a document so that people won't bustle
around the code to find an appropriate format string.
Not only to "%pU*", but also others including "%pD" and "%ls" that you added.

# See linux's Documentation/core-api/printk-formats.rst.

-Takahiro Akashi


> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  lib/vsprintf.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> index de9f236b90..2c0cc1647e 100644
> --- a/lib/vsprintf.c
> +++ b/lib/vsprintf.c
> @@ -255,8 +255,8 @@ static char *number(char *buf, char *end, u64 num,
>  	return buf;
>  }
>  
> -static char *string(char *buf, char *end, char *s, int field_width,
> -		int precision, int flags)
> +static char *string(char *buf, char *end, const char *s, int field_width,
> +		    int precision, int flags)
>  {
>  	int len, i;
>  
> @@ -387,12 +387,14 @@ static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
>   *   %pUB:   01020304-0506-0708-090A-0B0C0D0E0F10
>   *   %pUl:   04030201-0605-0807-090a-0b0c0d0e0f10
>   *   %pUL:   04030201-0605-0807-090A-0B0C0D0E0F10
> + *   %pUs:   GUID text representation if known or fallback to %pUl
>   */
>  static char *uuid_string(char *buf, char *end, u8 *addr, int field_width,
>  			 int precision, int flags, const char *fmt)
>  {
>  	char uuid[UUID_STR_LEN + 1];
>  	int str_format;
> +	const char *str;
>  
>  	switch (*(++fmt)) {
>  	case 'L':
> @@ -404,6 +406,13 @@ static char *uuid_string(char *buf, char *end, u8 *addr, int field_width,
>  	case 'B':
>  		str_format = UUID_STR_FORMAT_STD | UUID_STR_UPPER_CASE;
>  		break;
> +	case 's':
> +		str = uuid_guid_get_str(addr);
> +		if (str)
> +			return string(buf, end, str,
> +				      field_width, precision, flags);
> +		str_format = UUID_STR_FORMAT_GUID;
> +		break;
>  	default:
>  		str_format = UUID_STR_FORMAT_STD;
>  		break;
> -- 
> 2.33.1
> 

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y
  2022-01-16 15:14 ` [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y Heinrich Schuchardt
@ 2022-01-21 15:20   ` Simon Glass
  0 siblings, 0 replies; 21+ messages in thread
From: Simon Glass @ 2022-01-21 15:20 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Currently uuid_guid_get_str() is only built if
> CONFIG_PARTITION_TYPE_GUID=y.
>
> To make it usable for other GUIDs compile it if CONFIG_LIB_UUID=y.
> The linker will take care of removing it if it is unused.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  lib/uuid.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 3/8] disk: simplify part_print_efi()
  2022-01-16 15:14 ` [PATCH 3/8] disk: simplify part_print_efi() Heinrich Schuchardt
@ 2022-01-21 15:20   ` Simon Glass
  0 siblings, 0 replies; 21+ messages in thread
From: Simon Glass @ 2022-01-21 15:20 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Use printf code %pUs to print the text representation of the partition type
> GUID.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  disk/part_efi.c | 21 ++++++++-------------
>  1 file changed, 8 insertions(+), 13 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 4/8] sandbox: imply PARTITION_TYPE_GUID
  2022-01-16 15:14 ` [PATCH 4/8] sandbox: imply PARTITION_TYPE_GUID Heinrich Schuchardt
@ 2022-01-21 15:20   ` Simon Glass
  0 siblings, 0 replies; 21+ messages in thread
From: Simon Glass @ 2022-01-21 15:20 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> CONFIG_PARTITION_TYPE_GUID=y is needed for testing some GPT related

GPT-related

> functionality.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  arch/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 5/8] test: add test for %pUs
  2022-01-16 15:14 ` [PATCH 5/8] test: add test for %pUs Heinrich Schuchardt
@ 2022-01-21 15:20   ` Simon Glass
  0 siblings, 0 replies; 21+ messages in thread
From: Simon Glass @ 2022-01-21 15:20 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Add a unit test for the %pUs printf code.
>
> Use ut_asserteq_str() for checking string results.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  test/print_ut.c | 20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 7/8] efi_loader: user %pUs for printing GUIDs
  2022-01-16 15:14 ` [PATCH 7/8] efi_loader: user %pUs for " Heinrich Schuchardt
@ 2022-01-21 15:20   ` Simon Glass
  0 siblings, 0 replies; 21+ messages in thread
From: Simon Glass @ 2022-01-21 15:20 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> For printing GUIDs with macro EFI_ENTRY use %pUs instead of %pUl to provide
> readable debug output.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  lib/efi_loader/efi_boottime.c     | 26 +++++++++++++-------------
>  lib/efi_loader/efi_capsule.c      |  6 +++---
>  lib/efi_loader/efi_esrt.c         |  6 +++---
>  lib/efi_loader/efi_file.c         |  4 ++--
>  lib/efi_loader/efi_hii.c          | 14 +++++++-------
>  lib/efi_loader/efi_hii_config.c   |  2 +-
>  lib/efi_loader/efi_image_loader.c |  2 +-
>  lib/efi_loader/efi_rng.c          |  2 +-
>  lib/efi_loader/efi_signature.c    |  2 +-
>  lib/efi_loader/efi_var_common.c   |  6 +++---
>  10 files changed, 35 insertions(+), 35 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-16 15:14 ` [PATCH 6/8] cmd: efidebug: simplify printing GUIDs Heinrich Schuchardt
@ 2022-01-21 15:20   ` Simon Glass
  2022-01-21 16:03     ` Heinrich Schuchardt
  0 siblings, 1 reply; 21+ messages in thread
From: Simon Glass @ 2022-01-21 15:20 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

Hi Heinrich,

On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Use "%pS" to print text representations of GUIDs.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  cmd/efidebug.c         | 160 ++---------------------------------------
>  include/efi_api.h      |   8 +++
>  include/efi_dt_fixup.h |   4 --
>  include/efi_rng.h      |   4 --
>  lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
>  5 files changed, 128 insertions(+), 164 deletions(-)
>

Does this blow up the image size? These strings only in the debug side before.

Having said that, I would much rather see a string than a guid, which
I consider to be little more than an obfuscation.

Regards,
Simon

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-21 15:20   ` Simon Glass
@ 2022-01-21 16:03     ` Heinrich Schuchardt
  2022-01-21 16:53       ` Simon Glass
  2022-01-24  7:23       ` AKASHI Takahiro
  0 siblings, 2 replies; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-21 16:03 UTC (permalink / raw)
  To: Simon Glass
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

On 1/21/22 16:20, Simon Glass wrote:
> Hi Heinrich,
> 
> On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
> <heinrich.schuchardt@canonical.com> wrote:
>>
>> Use "%pS" to print text representations of GUIDs.
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
>> ---
>>   cmd/efidebug.c         | 160 ++---------------------------------------
>>   include/efi_api.h      |   8 +++
>>   include/efi_dt_fixup.h |   4 --
>>   include/efi_rng.h      |   4 --
>>   lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
>>   5 files changed, 128 insertions(+), 164 deletions(-)
>>
> 
> Does this blow up the image size? These strings only in the debug side before.

It was to avoid image size increase that I added
+#ifdef CONFIG_CMD_EFIDEBUG

> 
> Having said that, I would much rather see a string than a guid, which
> I consider to be little more than an obfuscation.

That was my motivation. When debugging a boot failure I set DEBUG in 
lib/efi_loader/efi_boottime.c and reading GUIDs in the debug output was 
not helpful.

Best regards

Heinrich

> 
> Regards,
> Simon

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-21 16:03     ` Heinrich Schuchardt
@ 2022-01-21 16:53       ` Simon Glass
  2022-01-24  7:23       ` AKASHI Takahiro
  1 sibling, 0 replies; 21+ messages in thread
From: Simon Glass @ 2022-01-21 16:53 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Rasmus Villemoes, Patrick Delaunay, U-Boot Mailing List

Hi Heinrich,

On Fri, 21 Jan 2022 at 09:03, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> On 1/21/22 16:20, Simon Glass wrote:
> > Hi Heinrich,
> >
> > On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
> > <heinrich.schuchardt@canonical.com> wrote:
> >>
> >> Use "%pS" to print text representations of GUIDs.
> >>
> >> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> >> ---
> >>   cmd/efidebug.c         | 160 ++---------------------------------------
> >>   include/efi_api.h      |   8 +++
> >>   include/efi_dt_fixup.h |   4 --
> >>   include/efi_rng.h      |   4 --
> >>   lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
> >>   5 files changed, 128 insertions(+), 164 deletions(-)
> >>
> >
> > Does this blow up the image size? These strings only in the debug side before.
>
> It was to avoid image size increase that I added
> +#ifdef CONFIG_CMD_EFIDEBUG

Ah yes, thanks.

Reviewed-by: Simon Glass <sjg@chromium.org>

>
> >
> > Having said that, I would much rather see a string than a guid, which
> > I consider to be little more than an obfuscation.
>
> That was my motivation. When debugging a boot failure I set DEBUG in
> lib/efi_loader/efi_boottime.c and reading GUIDs in the debug output was
> not helpful.

Indeed.

Regards,
SImon

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-21 16:03     ` Heinrich Schuchardt
  2022-01-21 16:53       ` Simon Glass
@ 2022-01-24  7:23       ` AKASHI Takahiro
  2022-01-24  8:25         ` Heinrich Schuchardt
  1 sibling, 1 reply; 21+ messages in thread
From: AKASHI Takahiro @ 2022-01-24  7:23 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Simon Glass, Tom Rini, Rasmus Villemoes, Patrick Delaunay,
	U-Boot Mailing List

On Fri, Jan 21, 2022 at 05:03:03PM +0100, Heinrich Schuchardt wrote:
> On 1/21/22 16:20, Simon Glass wrote:
> > Hi Heinrich,
> > 
> > On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
> > <heinrich.schuchardt@canonical.com> wrote:
> > > 
> > > Use "%pS" to print text representations of GUIDs.
> > > 
> > > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> > > ---
> > >   cmd/efidebug.c         | 160 ++---------------------------------------
> > >   include/efi_api.h      |   8 +++
> > >   include/efi_dt_fixup.h |   4 --
> > >   include/efi_rng.h      |   4 --
> > >   lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
> > >   5 files changed, 128 insertions(+), 164 deletions(-)
> > > 
> > 
> > Does this blow up the image size? These strings only in the debug side before.
> 
> It was to avoid image size increase that I added
> +#ifdef CONFIG_CMD_EFIDEBUG
> 
> > 
> > Having said that, I would much rather see a string than a guid, which
> > I consider to be little more than an obfuscation.
> 
> That was my motivation. When debugging a boot failure I set DEBUG in
> lib/efi_loader/efi_boottime.c and reading GUIDs in the debug output was not
> helpful.

But setting DEBUG in efi_boottime.c doesn't lead to CONFIG_CMD_EFIDEBUG
being on in uuid.c. Do we want to have a more direct CONFIG?

-Takahiro Akashi

> Best regards
> 
> Heinrich
> 
> > 
> > Regards,
> > Simon

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-24  7:23       ` AKASHI Takahiro
@ 2022-01-24  8:25         ` Heinrich Schuchardt
  2022-01-25  0:19           ` AKASHI Takahiro
  0 siblings, 1 reply; 21+ messages in thread
From: Heinrich Schuchardt @ 2022-01-24  8:25 UTC (permalink / raw)
  To: AKASHI Takahiro, Simon Glass, Tom Rini, Rasmus Villemoes,
	Patrick Delaunay, U-Boot Mailing List

On 1/24/22 08:23, AKASHI Takahiro wrote:
> On Fri, Jan 21, 2022 at 05:03:03PM +0100, Heinrich Schuchardt wrote:
>> On 1/21/22 16:20, Simon Glass wrote:
>>> Hi Heinrich,
>>>
>>> On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
>>> <heinrich.schuchardt@canonical.com> wrote:
>>>>
>>>> Use "%pS" to print text representations of GUIDs.
>>>>
>>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
>>>> ---
>>>>    cmd/efidebug.c         | 160 ++---------------------------------------
>>>>    include/efi_api.h      |   8 +++
>>>>    include/efi_dt_fixup.h |   4 --
>>>>    include/efi_rng.h      |   4 --
>>>>    lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
>>>>    5 files changed, 128 insertions(+), 164 deletions(-)
>>>>
>>>
>>> Does this blow up the image size? These strings only in the debug side before.
>>
>> It was to avoid image size increase that I added
>> +#ifdef CONFIG_CMD_EFIDEBUG
>>
>>>
>>> Having said that, I would much rather see a string than a guid, which
>>> I consider to be little more than an obfuscation.
>>
>> That was my motivation. When debugging a boot failure I set DEBUG in
>> lib/efi_loader/efi_boottime.c and reading GUIDs in the debug output was not
>> helpful.
>
> But setting DEBUG in efi_boottime.c doesn't lead to CONFIG_CMD_EFIDEBUG
> being on in uuid.c. Do we want to have a more direct CONFIG?

We could use CONFIG_LOGLEVEL >= LOGL_DEBUG because once that loglevel is
set you can use the log command to log one of the EFI related functions.

Overall the EFI debugging requires rethinking:

If you simply add '#define DEFINE 1' to the top of
lib/efi_loader/efi_boottime your screen will be flooded by function
calls related to timer events. Probably those high frequency events
should use LOGL_DEBUG_IO.

Best regards

Heinrich

>
> -Takahiro Akashi
>
>> Best regards
>>
>> Heinrich
>>
>>>
>>> Regards,
>>> Simon


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 6/8] cmd: efidebug: simplify printing GUIDs
  2022-01-24  8:25         ` Heinrich Schuchardt
@ 2022-01-25  0:19           ` AKASHI Takahiro
  0 siblings, 0 replies; 21+ messages in thread
From: AKASHI Takahiro @ 2022-01-25  0:19 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Simon Glass, Tom Rini, Rasmus Villemoes, Patrick Delaunay,
	U-Boot Mailing List

On Mon, Jan 24, 2022 at 09:25:34AM +0100, Heinrich Schuchardt wrote:
> On 1/24/22 08:23, AKASHI Takahiro wrote:
> > On Fri, Jan 21, 2022 at 05:03:03PM +0100, Heinrich Schuchardt wrote:
> > > On 1/21/22 16:20, Simon Glass wrote:
> > > > Hi Heinrich,
> > > > 
> > > > On Sun, 16 Jan 2022 at 08:14, Heinrich Schuchardt
> > > > <heinrich.schuchardt@canonical.com> wrote:
> > > > > 
> > > > > Use "%pS" to print text representations of GUIDs.
> > > > > 
> > > > > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> > > > > ---
> > > > >    cmd/efidebug.c         | 160 ++---------------------------------------
> > > > >    include/efi_api.h      |   8 +++
> > > > >    include/efi_dt_fixup.h |   4 --
> > > > >    include/efi_rng.h      |   4 --
> > > > >    lib/uuid.c             | 116 ++++++++++++++++++++++++++++++
> > > > >    5 files changed, 128 insertions(+), 164 deletions(-)
> > > > > 
> > > > 
> > > > Does this blow up the image size? These strings only in the debug side before.
> > > 
> > > It was to avoid image size increase that I added
> > > +#ifdef CONFIG_CMD_EFIDEBUG
> > > 
> > > > 
> > > > Having said that, I would much rather see a string than a guid, which
> > > > I consider to be little more than an obfuscation.
> > > 
> > > That was my motivation. When debugging a boot failure I set DEBUG in
> > > lib/efi_loader/efi_boottime.c and reading GUIDs in the debug output was not
> > > helpful.
> > 
> > But setting DEBUG in efi_boottime.c doesn't lead to CONFIG_CMD_EFIDEBUG
> > being on in uuid.c. Do we want to have a more direct CONFIG?
> 
> We could use CONFIG_LOGLEVEL >= LOGL_DEBUG because once that loglevel is
> set you can use the log command to log one of the EFI related functions.

I'm not sure the log level is the best choice for controlling messages.
Showing a human-readable GUID would also be a help in case of errors.

> Overall the EFI debugging requires rethinking:

I definitely agree, no specific idea though.

-Takahiro Akashi

> If you simply add '#define DEFINE 1' to the top of
> lib/efi_loader/efi_boottime your screen will be flooded by function
> calls related to timer events. Probably those high frequency events
> should use LOGL_DEBUG_IO.
> 
> Best regards
> 
> Heinrich
> 
> > 
> > -Takahiro Akashi
> > 
> > > Best regards
> > > 
> > > Heinrich
> > > 
> > > > 
> > > > Regards,
> > > > Simon
> 

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2022-01-25  0:19 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-16 15:14 [PATCH 0/8] efi_loader: simplify printing GUIDs Heinrich Schuchardt
2022-01-16 15:14 ` [PATCH 1/8] lib: compile uuid_guid_get_str if CONFIG_LIB_UUID=y Heinrich Schuchardt
2022-01-21 15:20   ` Simon Glass
2022-01-16 15:14 ` [PATCH 2/8] lib: printf code %pUs for GUID text representation Heinrich Schuchardt
2022-01-18  2:48   ` AKASHI Takahiro
2022-01-16 15:14 ` [PATCH 3/8] disk: simplify part_print_efi() Heinrich Schuchardt
2022-01-21 15:20   ` Simon Glass
2022-01-16 15:14 ` [PATCH 4/8] sandbox: imply PARTITION_TYPE_GUID Heinrich Schuchardt
2022-01-21 15:20   ` Simon Glass
2022-01-16 15:14 ` [PATCH 5/8] test: add test for %pUs Heinrich Schuchardt
2022-01-21 15:20   ` Simon Glass
2022-01-16 15:14 ` [PATCH 6/8] cmd: efidebug: simplify printing GUIDs Heinrich Schuchardt
2022-01-21 15:20   ` Simon Glass
2022-01-21 16:03     ` Heinrich Schuchardt
2022-01-21 16:53       ` Simon Glass
2022-01-24  7:23       ` AKASHI Takahiro
2022-01-24  8:25         ` Heinrich Schuchardt
2022-01-25  0:19           ` AKASHI Takahiro
2022-01-16 15:14 ` [PATCH 7/8] efi_loader: user %pUs for " Heinrich Schuchardt
2022-01-21 15:20   ` Simon Glass
2022-01-16 15:14 ` [PATCH 8/8] cmd: printenv: simplify " Heinrich Schuchardt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.