summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-11-04 06:09:09 +0300
committerHeinrich Schuchardt <xypron.glpk@gmx.de>2021-11-07 20:36:55 +0300
commitf84457376264913537392a90d7022631af1639b7 (patch)
tree6a6c8c1a62613ac10ddaf56646750b287c1fa847
parent9c297a3dab2dc830a6abe54039d57612a0ac6918 (diff)
downloadu-boot-f84457376264913537392a90d7022631af1639b7.tar.xz
efi: Add a way to obtain boot services in the app
Add a function to return this information along with a stub for the efi_info_get() function, since calling it otherwise hangs U-Boot. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
-rw-r--r--include/efi.h8
-rw-r--r--lib/efi/efi_app.c10
2 files changed, 17 insertions, 1 deletions
diff --git a/include/efi.h b/include/efi.h
index 18c13e0370..b5835422b9 100644
--- a/include/efi.h
+++ b/include/efi.h
@@ -444,10 +444,16 @@ extern char _binary_u_boot_bin_start[], _binary_u_boot_bin_end[];
*
* @return pointer to EFI system table
*/
-
struct efi_system_table *efi_get_sys_table(void);
/**
+ * efi_get_boot() - Get access to the EFI boot services table
+ *
+ * @return pointer to EFI boot services table
+ */
+struct efi_boot_services *efi_get_boot(void);
+
+/**
* efi_get_ram_base() - Find the base of RAM
*
* This is used when U-Boot is built as an EFI application.
diff --git a/lib/efi/efi_app.c b/lib/efi/efi_app.c
index 907bacd716..f61665686c 100644
--- a/lib/efi/efi_app.c
+++ b/lib/efi/efi_app.c
@@ -31,11 +31,21 @@ struct efi_system_table *efi_get_sys_table(void)
return global_priv->sys_table;
}
+struct efi_boot_services *efi_get_boot(void)
+{
+ return global_priv->boot;
+}
+
unsigned long efi_get_ram_base(void)
{
return global_priv->ram_base;
}
+int efi_info_get(enum efi_entry_t type, void **datap, int *sizep)
+{
+ return -ENOSYS;
+}
+
static efi_status_t setup_memory(struct efi_priv *priv)
{
struct efi_boot_services *boot = priv->boot;