[PATCH v2 11/12] efi: Support showing tables

Simon Glass sjg at chromium.org
Sun Mar 19 20:29:03 CET 2023


Hi Heinrich,

On Mon, 20 Mar 2023 at 05:43, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 3/10/23 21:49, Simon Glass wrote:
> > Add a command (for the app and payload) to display the tables provided
> > by EFI.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > Changes in v2:
> > - Make use of common code
> >
> >   cmd/Makefile          |  2 +-
> >   cmd/efi.c             | 33 ++++++++++++++++++++++++++++++++-
> >   doc/usage/cmd/efi.rst | 22 ++++++++++++++++++++++
> >   3 files changed, 55 insertions(+), 2 deletions(-)
> >
> > diff --git a/cmd/Makefile b/cmd/Makefile
> > index 1c5c6f3c00c..a0bfa2acefe 100644
> > --- a/cmd/Makefile
> > +++ b/cmd/Makefile
> > @@ -62,7 +62,7 @@ obj-$(CONFIG_CMD_EXTENSION) += extension_board.o
> >   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_EFI) += efi.o efi_common.o
> >   obj-$(CONFIG_CMD_EFIDEBUG) += efidebug.o efi_common.o
> >   obj-$(CONFIG_CMD_EFICONFIG) += eficonfig.o
> >   ifdef CONFIG_CMD_EFICONFIG
> > diff --git a/cmd/efi.c b/cmd/efi.c
> > index c0384e0db28..4d0edfa7f27 100644
> > --- a/cmd/efi.c
> > +++ b/cmd/efi.c
> > @@ -7,10 +7,12 @@
> >   #include <common.h>
> >   #include <command.h>
> >   #include <efi.h>
> > +#include <efi_api.h>
> >   #include <errno.h>
> >   #include <log.h>
> >   #include <malloc.h>
> >   #include <sort.h>
> > +#include <uuid.h>
> >   #include <asm/global_data.h>
> >
> >   DECLARE_GLOBAL_DATA_PTR;
> > @@ -273,8 +275,36 @@ done:
> >       return ret ? CMD_RET_FAILURE : 0;
> >   }
> >
> > +static int do_efi_tables(struct cmd_tbl *cmdtp, int flag, int argc,
> > +                      char *const argv[])
> > +{
> > +     struct efi_system_table *systab;
> > +
> > +     if (IS_ENABLED(CONFIG_EFI_APP)) {
> > +             systab = efi_get_sys_table();
> > +             if (!systab) {
> > +                     printf("Cannot read system table\n");
> > +                     return CMD_RET_FAILURE;
> > +             }
> > +     } else {
> > +             int size;
> > +             int ret;
> > +
> > +             ret = efi_info_get(EFIET_SYS_TABLE, (void **)&systab, &size);
> > +             if (ret) {
> > +                     printf("Cannot find EFI system table (err=%d)\n", ret);
> > +                     return CMD_RET_FAILURE;
>
> Wouldn't U-Boot have failed earlier if there is no system table?

This is catching the case where we didn't add it to the list by
calling add_entry_addr() in the stub. I agree it can't happen with the
current code. How about I just drop the message, but still return
failure?

Regards,
Simon


More information about the U-Boot mailing list