[PATCH 1/1] smbios: add extended Extended BIOS ROM Size

Mark Kettenis mark.kettenis at xs4all.nl
Tue Jul 23 22:12:57 CEST 2024


> From: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> Date: Tue, 23 Jul 2024 12:46:34 +0200
> 
> U-Boot claims to create SMBIOS 3.7 tables. The type 0 table has
> a field Extended BIOS ROM Size since version 3.1.
> 
> BIOS ROM sizes of 16 MiB or above must be written to this field.
> 
> Add and fill the missing field.
> 
> This patch does not cover the case of a ROM >= 8 GiB which cannot
> be configured in U-Boot.
> 
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  include/smbios.h | 1 +
>  lib/smbios.c     | 9 ++++++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/include/smbios.h b/include/smbios.h
> index a4fda9df7bd..00119d7a60c 100644
> --- a/include/smbios.h
> +++ b/include/smbios.h
> @@ -105,6 +105,7 @@ struct __packed smbios_type0 {
>  	u8 bios_minor_release;
>  	u8 ec_major_release;
>  	u8 ec_minor_release;
> +	u16 extended_bios_rom_size;
>  	char eos[SMBIOS_STRUCT_EOS_BYTES];
>  };
>  
> diff --git a/lib/smbios.c b/lib/smbios.c
> index 4126466e34a..e2a2f873a94 100644
> --- a/lib/smbios.c
> +++ b/lib/smbios.c
> @@ -348,7 +348,14 @@ static int smbios_write_type0(ulong *current, int handle,
>  #endif
>  	t->bios_release_date = smbios_add_prop(ctx, NULL, U_BOOT_DMI_DATE);
>  #ifdef CONFIG_ROM_SIZE
> -	t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1;
> +	if (CONFIG_ROM_SIZE < 0x1000000) {
> +		/* CONFIG_ROM_SIZE < 16 MiB */
> +		t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1;
> +	} else {
> +		/* CONFIG_ROM_SIZE < 8 GiB */

I don't think that comment is true ;).

> +		t->bios_rom_size = 0xff;
> +		t->extended_bios_rom_size = CONFIG_ROM_SIZE >> 20;
> +	}
>  #endif
>  	t->bios_characteristics = BIOS_CHARACTERISTICS_PCI_SUPPORTED |
>  				  BIOS_CHARACTERISTICS_SELECTABLE_BOOT |
> -- 
> 2.45.2
> 
> 


More information about the U-Boot mailing list