[U-Boot] [PATCH 01/16] efi: Update efi_smbios_register() to return error code

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Sep 18 04:02:14 UTC 2017


On 09/18/2017 12:59 AM, Simon Glass wrote:
> This function can fail but gives no indication of failure. Update it to
> return an error when something goes wrong.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> 
>  include/efi_loader.h        | 10 ++++++++--
>  lib/efi_loader/efi_smbios.c |  6 ++++--
>  2 files changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/include/efi_loader.h b/include/efi_loader.h
> index 2051fc994e..79d2dad22c 100644
> --- a/include/efi_loader.h
> +++ b/include/efi_loader.h
> @@ -150,8 +150,14 @@ int efi_disk_register(void);
>  int efi_gop_register(void);
>  /* Called by bootefi to make the network interface available */
>  int efi_net_register(void **handle);
> -/* Called by bootefi to make SMBIOS tables available */
> -void efi_smbios_register(void);
> +/**
> + * efi_smbios_register() - write out SMBIOS tables
> + *
> + * Called by bootefi to make SMBIOS tables available
> + *
> + * @return 0 if OK, -ENOMEM if no memory is available for the tables
> + */
> +int efi_smbios_register(void);
>  
>  /* Called by networking code to memorize the dhcp ack package */
>  void efi_net_set_dhcp_ack(void *pkt, int len);
> diff --git a/lib/efi_loader/efi_smbios.c b/lib/efi_loader/efi_smbios.c
> index ac412e7362..3b87294dc3 100644
> --- a/lib/efi_loader/efi_smbios.c
> +++ b/lib/efi_loader/efi_smbios.c
> @@ -13,7 +13,7 @@
>  
>  static const efi_guid_t smbios_guid = SMBIOS_TABLE_GUID;
>  
> -void efi_smbios_register(void)
> +int efi_smbios_register(void)

Please, use efi_status_t as return type.

>  {
>  	/* Map within the low 32 bits, to allow for 32bit SMBIOS tables */
>  	uint64_t dmi = 0xffffffff;
> @@ -22,11 +22,13 @@ void efi_smbios_register(void)
>  	int memtype = EFI_RUNTIME_SERVICES_DATA;
>  
>  	if (efi_allocate_pages(1, memtype, pages, &dmi) != EFI_SUCCESS)
> -		return;
> +		return -ENOMEM;

Use	return EFI_OUT_OF_RESOURCES
This matches the value returned by efi_install_configuration_table.

>  
>  	/* Generate SMBIOS tables */
>  	write_smbios_table(dmi);
>  
>  	/* And expose them to our EFI payload */
>  	efi_install_configuration_table(&smbios_guid, (void*)(uintptr_t)dmi);

This function can return EFI_OUT_OF_RESOURCES.

> +
> +	return 0;

Use	return EFI_SUCCESS;

Regards Heinrich

>  }
> 



More information about the U-Boot mailing list