[PATCH 1/1] efi_loader: Show the FirmwareVendor and FirmwareRevision in helloworld

Simon Glass sjg at chromium.org
Wed Oct 9 23:14:12 CEST 2024


On Wed, 9 Oct 2024 at 05:56, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> From: Simon Glass <sjg at chromium.org>
>
> Show the firmware vendor and revision to make it clear which firmware is
> used, e.g. whether U-Boot is providing the boot services.
>
> The output will look like
>
>     Firmware vendor: Das U-Boot
>     Firmware revision: 20241000
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  lib/efi_loader/helloworld.c | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
>

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


> diff --git a/lib/efi_loader/helloworld.c b/lib/efi_loader/helloworld.c
> index 586177de0c8..f9154386472 100644
> --- a/lib/efi_loader/helloworld.c
> +++ b/lib/efi_loader/helloworld.c
> @@ -71,6 +71,33 @@ static void uint2dec(u32 value, u16 **buf)
>         *buf = pos;
>  }
>
> +/*
> + * Print an unsigned 32bit value as hexadecimal number to an u16 string
> + *
> + * @value:     value to be printed
> + * @buf:       pointer to buffer address
> + *             on return position of terminating zero word
> + */
> +static void uint2hex(u32 value, u16 **buf)
> +{
> +       u16 *pos = *buf;
> +       int i;
> +       u16 c;
> +
> +       for (i = 0; i < 8; ++i) {
> +               /* Write current digit */
> +               c = value >> 28;
> +               value <<= 4;
> +               if (c < 10)
> +                       c += '0';
> +               else
> +                       c += 'a' - 10;
> +               *pos++ = c;
> +       }
> +       *pos = 0;
> +       *buf = pos;
> +}
> +
>  /**
>   * print_uefi_revision() - print UEFI revision number
>   */
> @@ -96,6 +123,16 @@ static void print_uefi_revision(void)
>         con_out->output_string(con_out, u"Running on UEFI ");
>         con_out->output_string(con_out, rev);
>         con_out->output_string(con_out, u"\r\n");
> +
> +       con_out->output_string(con_out, u"Firmware vendor: ");
> +       con_out->output_string(con_out, systable->fw_vendor);
> +       con_out->output_string(con_out, u"\r\n");
> +
> +       buf = rev;
> +       uint2hex(systable->fw_revision, &buf);
> +       con_out->output_string(con_out, u"Firmware revision: ");
> +       con_out->output_string(con_out, rev);
> +       con_out->output_string(con_out, u"\r\n");
>  }
>
>  /**
> --
> 2.45.2
>


More information about the U-Boot mailing list