x86/smbios: Untangle system and board tables

We were used to set the same values in the system and board tables.
We'll keep the mainboard values as defaults for the system tables,
so nothing changes unless somebody overrides the system table hooks.

Change-Id: I3c9c95a1307529c3137647a161a698a4c3daa0ae
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/29477
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Richard Spiegel <richard.spiegel@silverbackltd.com>
Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr>
This commit is contained in:
Nico Huber 2017-11-01 09:49:16 +01:00 committed by Nico Huber
parent 4663f45caa
commit ebd8a4f90c
17 changed files with 65 additions and 54 deletions

View File

@ -631,33 +631,33 @@ config SMBIOS_PROVIDED_BY_MOBO
default n default n
config MAINBOARD_SERIAL_NUMBER config MAINBOARD_SERIAL_NUMBER
string "SMBIOS Serial Number" prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
string
depends on GENERATE_SMBIOS_TABLES depends on GENERATE_SMBIOS_TABLES
depends on !SMBIOS_PROVIDED_BY_MOBO
default "123456789" default "123456789"
help help
The Serial Number to store in SMBIOS structures. The Serial Number to store in SMBIOS structures.
config MAINBOARD_VERSION config MAINBOARD_VERSION
string "SMBIOS Version Number" prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
string
depends on GENERATE_SMBIOS_TABLES depends on GENERATE_SMBIOS_TABLES
depends on !SMBIOS_PROVIDED_BY_MOBO
default "1.0" default "1.0"
help help
The Version Number to store in SMBIOS structures. The Version Number to store in SMBIOS structures.
config MAINBOARD_SMBIOS_MANUFACTURER config MAINBOARD_SMBIOS_MANUFACTURER
string "SMBIOS Manufacturer" prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
string
depends on GENERATE_SMBIOS_TABLES depends on GENERATE_SMBIOS_TABLES
depends on !SMBIOS_PROVIDED_BY_MOBO
default MAINBOARD_VENDOR default MAINBOARD_VENDOR
help help
Override the default Manufacturer stored in SMBIOS structures. Override the default Manufacturer stored in SMBIOS structures.
config MAINBOARD_SMBIOS_PRODUCT_NAME config MAINBOARD_SMBIOS_PRODUCT_NAME
string "SMBIOS Product name" prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
string
depends on GENERATE_SMBIOS_TABLES depends on GENERATE_SMBIOS_TABLES
depends on !SMBIOS_PROVIDED_BY_MOBO
default MAINBOARD_PART_NUMBER default MAINBOARD_PART_NUMBER
help help
Override the default Product name stored in SMBIOS structures. Override the default Product name stored in SMBIOS structures.

View File

@ -402,8 +402,6 @@ static int smbios_write_type0(unsigned long *current, int handle)
return len; return len;
} }
#if !CONFIG(SMBIOS_PROVIDED_BY_MOBO)
const char *__weak smbios_mainboard_serial_number(void) const char *__weak smbios_mainboard_serial_number(void)
{ {
return CONFIG_MAINBOARD_SERIAL_NUMBER; return CONFIG_MAINBOARD_SERIAL_NUMBER;
@ -424,12 +422,6 @@ const char *__weak smbios_mainboard_product_name(void)
return CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME; return CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME;
} }
void __weak smbios_mainboard_set_uuid(u8 *uuid)
{
/* leave all zero */
}
#endif
const char *__weak smbios_mainboard_asset_tag(void) const char *__weak smbios_mainboard_asset_tag(void)
{ {
return ""; return "";
@ -450,18 +442,36 @@ smbios_board_type __weak smbios_mainboard_board_type(void)
return SMBIOS_BOARD_TYPE_UNKNOWN; return SMBIOS_BOARD_TYPE_UNKNOWN;
} }
const char *__weak smbios_mainboard_sku(void) const char *__weak smbios_system_serial_number(void)
{
return smbios_mainboard_serial_number();
}
const char *__weak smbios_system_version(void)
{
return smbios_mainboard_version();
}
const char *__weak smbios_system_manufacturer(void)
{
return smbios_mainboard_manufacturer();
}
const char *__weak smbios_system_product_name(void)
{
return smbios_mainboard_product_name();
}
void __weak smbios_system_set_uuid(u8 *uuid)
{
/* leave all zero */
}
const char *__weak smbios_system_sku(void)
{ {
return ""; return "";
} }
#ifdef CONFIG_MAINBOARD_FAMILY
const char *smbios_mainboard_family(void)
{
return CONFIG_MAINBOARD_FAMILY;
}
#endif /* CONFIG_MAINBOARD_FAMILY */
static int smbios_write_type1(unsigned long *current, int handle) static int smbios_write_type1(unsigned long *current, int handle)
{ {
struct smbios_type1 *t = (struct smbios_type1 *)*current; struct smbios_type1 *t = (struct smbios_type1 *)*current;
@ -472,17 +482,17 @@ static int smbios_write_type1(unsigned long *current, int handle)
t->handle = handle; t->handle = handle;
t->length = len - 2; t->length = len - 2;
t->manufacturer = smbios_add_string(t->eos, t->manufacturer = smbios_add_string(t->eos,
smbios_mainboard_manufacturer()); smbios_system_manufacturer());
t->product_name = smbios_add_string(t->eos, t->product_name = smbios_add_string(t->eos,
smbios_mainboard_product_name()); smbios_system_product_name());
t->serial_number = smbios_add_string(t->eos, t->serial_number = smbios_add_string(t->eos,
smbios_mainboard_serial_number()); smbios_system_serial_number());
t->sku = smbios_add_string(t->eos, smbios_mainboard_sku()); t->sku = smbios_add_string(t->eos, smbios_system_sku());
t->version = smbios_add_string(t->eos, smbios_mainboard_version()); t->version = smbios_add_string(t->eos, smbios_system_version());
#ifdef CONFIG_MAINBOARD_FAMILY #ifdef CONFIG_MAINBOARD_FAMILY
t->family = smbios_add_string(t->eos, smbios_mainboard_family()); t->family = smbios_add_string(t->eos, CONFIG_MAINBOARD_FAMILY);
#endif #endif
smbios_mainboard_set_uuid(t->uuid); smbios_system_set_uuid(t->uuid);
len = t->length + smbios_string_table_len(t->eos); len = t->length + smbios_string_table_len(t->eos);
*current += len; *current += len;
return len; return len;
@ -526,7 +536,7 @@ static int smbios_write_type3(unsigned long *current, int handle)
t->handle = handle; t->handle = handle;
t->length = len - 2; t->length = len - 2;
t->manufacturer = smbios_add_string(t->eos, t->manufacturer = smbios_add_string(t->eos,
smbios_mainboard_manufacturer()); smbios_system_manufacturer());
t->bootup_state = SMBIOS_STATE_SAFE; t->bootup_state = SMBIOS_STATE_SAFE;
t->power_supply_state = SMBIOS_STATE_SAFE; t->power_supply_state = SMBIOS_STATE_SAFE;
t->thermal_state = SMBIOS_STATE_SAFE; t->thermal_state = SMBIOS_STATE_SAFE;

View File

@ -115,7 +115,7 @@ const char *smbios_mainboard_product_name(void)
return lenovo_mainboard_partnumber(); return lenovo_mainboard_partnumber();
} }
void smbios_mainboard_set_uuid(u8 *uuid) void smbios_system_set_uuid(u8 *uuid)
{ {
static char result[16]; static char result[16];
unsigned i; unsigned i;

View File

@ -35,22 +35,23 @@ int smbios_write_type41(unsigned long *current, int *handle,
const char *name, u8 instance, u16 segment, const char *name, u8 instance, u16 segment,
u8 bus, u8 device, u8 function); u8 bus, u8 device, u8 function);
const char *smbios_system_manufacturer(void);
const char *smbios_system_product_name(void);
const char *smbios_system_serial_number(void);
const char *smbios_system_version(void);
void smbios_system_set_uuid(u8 *uuid);
const char *smbios_system_sku(void);
const char *smbios_mainboard_manufacturer(void); const char *smbios_mainboard_manufacturer(void);
const char *smbios_mainboard_product_name(void); const char *smbios_mainboard_product_name(void);
const char *smbios_mainboard_serial_number(void); const char *smbios_mainboard_serial_number(void);
const char *smbios_mainboard_version(void); const char *smbios_mainboard_version(void);
void smbios_mainboard_set_uuid(u8 *uuid);
const char *smbios_mainboard_bios_version(void); const char *smbios_mainboard_bios_version(void);
const char *smbios_mainboard_asset_tag(void); const char *smbios_mainboard_asset_tag(void);
u8 smbios_mainboard_feature_flags(void); u8 smbios_mainboard_feature_flags(void);
const char *smbios_mainboard_location_in_chassis(void); const char *smbios_mainboard_location_in_chassis(void);
const char *smbios_mainboard_sku(void);
u8 smbios_mainboard_enclosure_type(void); u8 smbios_mainboard_enclosure_type(void);
#ifdef CONFIG_MAINBOARD_FAMILY
const char *smbios_mainboard_family(void);
#endif
#define BIOS_CHARACTERISTICS_PCI_SUPPORTED (1 << 7) #define BIOS_CHARACTERISTICS_PCI_SUPPORTED (1 << 7)
#define BIOS_CHARACTERISTICS_PC_CARD (1 << 8) #define BIOS_CHARACTERISTICS_PC_CARD (1 << 8)

View File

@ -495,7 +495,7 @@ const char *smbios_mainboard_serial_number(void)
return type1_serial_number ?: CONFIG_MAINBOARD_SERIAL_NUMBER; return type1_serial_number ?: CONFIG_MAINBOARD_SERIAL_NUMBER;
} }
void smbios_mainboard_set_uuid(u8 *uuid) void smbios_system_set_uuid(u8 *uuid)
{ {
fw_cfg_smbios_init(); fw_cfg_smbios_init();
memcpy(uuid, type1_uuid, 16); memcpy(uuid, type1_uuid, 16);

View File

@ -177,7 +177,7 @@ static uint8_t board_oem_id(void)
return oem_id; return oem_id;
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[5]; /* sku{0..7} */ static char sku_str[5]; /* sku{0..7} */

View File

@ -36,7 +36,7 @@ static uint32_t get_board_sku(void)
return sku_id; return sku_id;
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[7]; /* sku{0..255} */ static char sku_str[7]; /* sku{0..255} */
uint32_t sku_id = get_board_sku(); uint32_t sku_id = get_board_sku();

View File

@ -216,7 +216,7 @@ void __weak variant_mainboard_suspend_resume(void)
{ {
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[7]; /* sku{0..255} */ static char sku_str[7]; /* sku{0..255} */

View File

@ -131,7 +131,7 @@ static uint32_t get_board_sku(void)
return sku_id; return sku_id;
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[7]; /* sku{0..255} */ static char sku_str[7]; /* sku{0..255} */
uint32_t sku_id = get_board_sku(); uint32_t sku_id = get_board_sku();

View File

@ -104,7 +104,7 @@ uint32_t variant_board_sku(void)
return sku_id; return sku_id;
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[14]; /* sku{0..4294967295} */ static char sku_str[14]; /* sku{0..4294967295} */

View File

@ -28,7 +28,7 @@
#define B_PCH_OC_WDT_CTL_EN BIT14 #define B_PCH_OC_WDT_CTL_EN BIT14
#define B_PCH_OC_WDT_CTL_UNXP_RESET_STS BIT22 #define B_PCH_OC_WDT_CTL_UNXP_RESET_STS BIT22
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[5]; /* sku{0-1} */ static char sku_str[5]; /* sku{0-1} */

View File

@ -34,7 +34,7 @@ uint32_t variant_board_sku(void)
return sku_id; return sku_id;
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[14]; /* sku{0..4294967295} */ static char sku_str[14]; /* sku{0..4294967295} */

View File

@ -88,7 +88,7 @@ void __weak variant_board_ec_set_skuid(void)
{ {
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku_str[7]; /* sku{0..255} */ static char sku_str[7]; /* sku{0..255} */

View File

@ -22,7 +22,7 @@ uint32_t sku_id(void)
return VARIANT_SKU_ID; return VARIANT_SKU_ID;
} }
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
return VARIANT_SKU_NAME; return VARIANT_SKU_NAME;
} }

View File

@ -263,7 +263,7 @@ static void usb_oc_setup(void)
/* /*
* We will stuff the memory size into the smbios sku location. * We will stuff the memory size into the smbios sku location.
*/ */
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku[5]; static char sku[5];
if (sku[0] != 0) if (sku[0] != 0)

View File

@ -235,7 +235,7 @@ const char *smbios_mainboard_serial_number(void)
/* /*
* We will stuff the memory size into the smbios sku location. * We will stuff the memory size into the smbios sku location.
*/ */
const char *smbios_mainboard_sku(void) const char *smbios_system_sku(void)
{ {
static char sku[5]; static char sku[5];
if (sku[0] != 0) if (sku[0] != 0)

View File

@ -41,8 +41,8 @@ const char *smbios_mainboard_serial_number(void)
return CONFIG_MAINBOARD_SERIAL_NUMBER; return CONFIG_MAINBOARD_SERIAL_NUMBER;
} }
/* Override smbios_mainboard_set_uuid */ /* Override smbios_system_set_uuid */
void smbios_mainboard_set_uuid(u8 *uuid) void smbios_system_set_uuid(u8 *uuid)
{ {
const u8 *bmc_uuid = bmcinfo_uuid(); const u8 *bmc_uuid = bmcinfo_uuid();
if (bmc_uuid) if (bmc_uuid)