From: Heinrich Schuchardt Date: Tue, 23 Jul 2024 14:44:23 +0000 (+0200) Subject: smbios: add extended Extended BIOS ROM Size X-Git-Url: http://git.dujemihanovic.xyz/html/%7B%7B%20%28.OutputFormats.Get?a=commitdiff_plain;h=8c919fcd20ce0a832c6e4fc4413ebac0d2a8f125;p=u-boot.git smbios: add extended Extended BIOS ROM Size 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. Signed-off-by: Heinrich Schuchardt --- diff --git a/include/smbios.h b/include/smbios.h index a4fda9df7b..00119d7a60 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 4126466e34..7c24ea129e 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -22,6 +22,7 @@ #include #include #endif +#include /* Safeguard for checking that U_BOOT_VERSION_NUM macros are compatible with U_BOOT_DMI */ #if U_BOOT_VERSION_NUM < 2000 || U_BOOT_VERSION_NUM > 2099 || \ @@ -348,7 +349,13 @@ 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 < SZ_16M) { + t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1; + } else { + /* CONFIG_ROM_SIZE < 8 GiB */ + 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 |