lib/smbios: Create SMBIOS type 4 entry
One smbios type 4 should be provided for each CPU instance. Create SMBIOS type 4 entry according to socket number, with a default value of 1. TEST=Boot on intel/archercity CRB No changes in boot log and 'dmidecode' result under centos Change-Id: Ia47fb7c458f9e89ae63ca64c0d6678b55c9d9d37 Signed-off-by: Jincheng Li <jincheng.li@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83331 Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
aa6865291a
commit
9b2d995bdb
@ -74,6 +74,8 @@ void smbios_cpu_get_core_counts(u16 *core_count, u16 *thread_count);
|
||||
unsigned int smbios_cpu_get_max_speed_mhz(void);
|
||||
unsigned int smbios_cpu_get_current_speed_mhz(void);
|
||||
unsigned int smbios_cpu_get_voltage(void);
|
||||
unsigned int smbios_get_max_sockets(void);
|
||||
unsigned int smbios_soc_get_max_sockets(void);
|
||||
|
||||
const char *smbios_mainboard_manufacturer(void);
|
||||
const char *smbios_mainboard_product_name(void);
|
||||
|
@ -49,6 +49,10 @@ config DIMM_MAX
|
||||
It is multiplication of number of channel to number of DIMMs per
|
||||
channel
|
||||
|
||||
config MAX_SOCKET
|
||||
int
|
||||
default 1
|
||||
|
||||
config DIMM_SPD_SIZE
|
||||
int
|
||||
default 256
|
||||
|
@ -443,6 +443,14 @@ unsigned int __weak smbios_cpu_get_voltage(void)
|
||||
return 0; /* Unknown */
|
||||
}
|
||||
|
||||
unsigned int smbios_get_max_sockets(void)
|
||||
{
|
||||
if (CONFIG_MAX_SOCKET == 1)
|
||||
return 1;
|
||||
else
|
||||
return smbios_soc_get_max_sockets();
|
||||
}
|
||||
|
||||
static int smbios_write_type1(unsigned long *current, int handle)
|
||||
{
|
||||
struct smbios_type1 *t = smbios_carve_table(*current, SMBIOS_SYSTEM_INFORMATION,
|
||||
@ -1233,9 +1241,11 @@ unsigned long smbios_write_tables(unsigned long current)
|
||||
handle++;
|
||||
update_max(len, max_struct_size, smbios_write_type3(¤t, handle++));
|
||||
|
||||
struct smbios_type4 *type4 = (struct smbios_type4 *)current;
|
||||
update_max(len, max_struct_size, smbios_write_type4(¤t, handle++));
|
||||
len += smbios_write_type7_cache_parameters(¤t, &handle, &max_struct_size, type4);
|
||||
for (unsigned int s = 0; s < smbios_get_max_sockets(); s++) {
|
||||
struct smbios_type4 *type4 = (struct smbios_type4 *)current;
|
||||
update_max(len, max_struct_size, smbios_write_type4(¤t, handle++));
|
||||
len += smbios_write_type7_cache_parameters(¤t, &handle, &max_struct_size, type4);
|
||||
}
|
||||
update_max(len, max_struct_size, smbios_write_type11(¤t, &handle));
|
||||
if (CONFIG(ELOG))
|
||||
update_max(len, max_struct_size,
|
||||
|
@ -90,6 +90,11 @@ unsigned int soc_get_num_cpus(void)
|
||||
return get_iio_uds()->SystemStatus.numCpus;
|
||||
}
|
||||
|
||||
unsigned int smbios_soc_get_max_sockets(void)
|
||||
{
|
||||
return soc_get_num_cpus();
|
||||
}
|
||||
|
||||
union p2sb_bdf soc_get_hpet_bdf(void)
|
||||
{
|
||||
if (CONFIG(SOC_INTEL_COMMON_IBL_BASE)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user