]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
efi: Split out table-listing code into a new file
authorSimon Glass <sjg@chromium.org>
Sun, 19 Mar 2023 19:30:14 +0000 (08:30 +1300)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 25 Mar 2023 10:07:22 +0000 (11:07 +0100)
This code is used with EFI_LOADER but is also useful (with some
modifications) for the EFI app and payload. Move it into a shared
file.

Show the address of the table so it can be examined if needed. Also show
the table name as unknown if necessary. Our list of GUIDs is fairly
small.

Signed-off-by: Simon Glass <sjg@chromium.org>
cmd/Makefile
cmd/efi_common.c [new file with mode: 0644]
cmd/efidebug.c
include/efi.h

index 7198029f11ea411c8b2f63a569c73bb8a8f2f1f0..62f50e2b1ccb97347b488502b8d8c076babb90d2 100644 (file)
@@ -63,7 +63,7 @@ obj-$(CONFIG_CMD_ECHO) += echo.o
 obj-$(CONFIG_ENV_IS_IN_EEPROM) += eeprom.o
 obj-$(CONFIG_CMD_EEPROM) += eeprom.o
 obj-$(CONFIG_EFI) += efi.o
-obj-$(CONFIG_CMD_EFIDEBUG) += efidebug.o
+obj-$(CONFIG_CMD_EFIDEBUG) += efidebug.o efi_common.o
 obj-$(CONFIG_CMD_EFICONFIG) += eficonfig.o
 ifdef CONFIG_CMD_EFICONFIG
 ifdef CONFIG_EFI_MM_COMM_TEE
diff --git a/cmd/efi_common.c b/cmd/efi_common.c
new file mode 100644 (file)
index 0000000..f405609
--- /dev/null
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Common code for EFI commands
+ *
+ * Copyright 2023 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <efi.h>
+#include <efi_api.h>
+#include <uuid.h>
+
+void efi_show_tables(struct efi_system_table *systab)
+{
+       int i;
+
+       for (i = 0; i < systab->nr_tables; i++) {
+               struct efi_configuration_table *tab = &systab->tables[i];
+               char guid_str[37];
+
+               uuid_bin_to_str(tab->guid.b, guid_str, 1);
+               printf("%p  %pUl  %s\n", tab->table, guid_str,
+                      uuid_guid_get_str(tab->guid.b) ?: "(unknown)");
+       }
+}
index e6959ede930fffe22729c3c53fcce77adeb15718..9622430c475ed897509d2a10fb474e9f4f8ca2d8 100644 (file)
@@ -649,11 +649,7 @@ static int do_efi_show_memmap(struct cmd_tbl *cmdtp, int flag,
 static int do_efi_show_tables(struct cmd_tbl *cmdtp, int flag,
                              int argc, char *const argv[])
 {
-       efi_uintn_t i;
-
-       for (i = 0; i < systab.nr_tables; ++i)
-               printf("%pUl (%pUs)\n",
-                      &systab.tables[i].guid, &systab.tables[i].guid);
+       efi_show_tables(&systab);
 
        return CMD_RET_SUCCESS;
 }
index 2f312da3cba5efdcee8c52b72977c328ce90d2f9..f0e5faa754920238a4b9af08926488fc35f10285 100644 (file)
@@ -648,4 +648,13 @@ int efi_call_exit_boot_services(void);
 int efi_get_mmap(struct efi_mem_desc **descp, int *sizep, uint *keyp,
                 int *desc_sizep, uint *versionp);
 
+/**
+ * efi_show_tables() - Show a list of available tables
+ *
+ * Shows the address, GUID (and name where known) for each table
+ *
+ * @systab: System table containing the list of tables
+ */
+void efi_show_tables(struct efi_system_table *systab);
+
 #endif /* _LINUX_EFI_H */