From 993f68ab5a265fcad818973054bbc446e9faca2f Mon Sep 17 00:00:00 2001 From: Francois Toguo Date: Mon, 4 Feb 2019 17:05:51 -0800 Subject: soc/intel: Add mem_rank info in SMBIOS "mosys memory spd print all" returns incorrect memory ranks info. This patch and 2 upcomming ones (one in FSP) will address the issue. BUG=b:122329046 TEST=Boot to OS on Bobba variant of Octopus BRANCH=octopus Change-Id: I212215040e4786c258a9c604cc5c2bb62867c842 Signed-off-by: Francois Toguo Reviewed-on: https://review.coreboot.org/c/31235 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh --- src/soc/intel/apollolake/meminit_util_apl.c | 1 + src/soc/intel/apollolake/meminit_util_glk.c | 1 + src/soc/intel/cannonlake/romstage/romstage.c | 1 + src/soc/intel/common/smbios.c | 3 ++- src/soc/intel/common/smbios.h | 2 +- src/soc/intel/icelake/romstage/romstage.c | 1 + src/soc/intel/skylake/romstage/romstage_fsp20.c | 1 + 7 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/soc/intel/apollolake/meminit_util_apl.c b/src/soc/intel/apollolake/meminit_util_apl.c index 755d708abe..a11c5d8031 100644 --- a/src/soc/intel/apollolake/meminit_util_apl.c +++ b/src/soc/intel/apollolake/meminit_util_apl.c @@ -85,6 +85,7 @@ void save_lpddr4_dimm_info_part_num(const char *dram_part_num) src_dimm->SizeInMb, memory_info_hob->MemoryType, memory_info_hob->MemoryFrequencyInMHz, + 0, channel_info->ChannelId, src_dimm->DimmId, dram_part_num, diff --git a/src/soc/intel/apollolake/meminit_util_glk.c b/src/soc/intel/apollolake/meminit_util_glk.c index db69f5184b..9bfdf0b8a5 100644 --- a/src/soc/intel/apollolake/meminit_util_glk.c +++ b/src/soc/intel/apollolake/meminit_util_glk.c @@ -91,6 +91,7 @@ void save_lpddr4_dimm_info_part_num(const char *dram_part_num) src_dimm->DimmCapacity, memory_info_hob->MemoryType, memory_info_hob->ConfiguredMemoryClockSpeed, + src_dimm->RankInDimm, channel_info->ChannelId, src_dimm->DimmId, dram_part_num, diff --git a/src/soc/intel/cannonlake/romstage/romstage.c b/src/soc/intel/cannonlake/romstage/romstage.c index 9e25e551e8..3755c83ef0 100644 --- a/src/soc/intel/cannonlake/romstage/romstage.c +++ b/src/soc/intel/cannonlake/romstage/romstage.c @@ -92,6 +92,7 @@ static void save_dimm_info(void) src_dimm->DimmCapacity, memory_info_hob->MemoryType, memory_info_hob->ConfiguredMemoryClockSpeed, + src_dimm->RankInDimm, channel_info->ChannelId, src_dimm->DimmId, (const char *)src_dimm->ModulePartNum, diff --git a/src/soc/intel/common/smbios.c b/src/soc/intel/common/smbios.c index bcddb78596..0b1be8817e 100644 --- a/src/soc/intel/common/smbios.c +++ b/src/soc/intel/common/smbios.c @@ -20,13 +20,14 @@ /* Fill the SMBIOS memory information from FSP MEM_INFO_DATA_HOB in CBMEM.*/ void dimm_info_fill(struct dimm_info *dimm, u32 dimm_capacity, u8 ddr_type, - u32 frequency, u8 channel_id, u8 dimm_id, + u32 frequency, u8 rank_per_dimm, u8 channel_id, u8 dimm_id, const char *module_part_num, size_t module_part_number_size, u16 data_width) { dimm->dimm_size = dimm_capacity; dimm->ddr_type = ddr_type; dimm->ddr_frequency = frequency; + dimm->rank_per_dimm = rank_per_dimm; dimm->channel_num = channel_id; dimm->dimm_num = dimm_id; strncpy((char *)dimm->module_part_number, diff --git a/src/soc/intel/common/smbios.h b/src/soc/intel/common/smbios.h index 4750d3cd7d..33b5d0df04 100644 --- a/src/soc/intel/common/smbios.h +++ b/src/soc/intel/common/smbios.h @@ -21,7 +21,7 @@ /* Fill the SMBIOS memory information from FSP MEM_INFO_DATA_HOB in CBMEM.*/ void dimm_info_fill(struct dimm_info *dimm, u32 dimm_capacity, u8 ddr_type, - u32 frequency, u8 channel_id, u8 dimm_id, + u32 frequency, u8 rank_per_dimm, u8 channel_id, u8 dimm_id, const char *module_part_num, size_t module_part_number_size, u16 data_width); diff --git a/src/soc/intel/icelake/romstage/romstage.c b/src/soc/intel/icelake/romstage/romstage.c index 3df4f4f8c5..9a611bb9db 100644 --- a/src/soc/intel/icelake/romstage/romstage.c +++ b/src/soc/intel/icelake/romstage/romstage.c @@ -94,6 +94,7 @@ static void save_dimm_info(void) src_dimm->DimmCapacity, memory_info_hob->MemoryType, memory_info_hob->ConfiguredMemoryClockSpeed, + src_dimm->RankInDimm, channel_info->ChannelId, src_dimm->DimmId, (const char *)src_dimm->ModulePartNum, diff --git a/src/soc/intel/skylake/romstage/romstage_fsp20.c b/src/soc/intel/skylake/romstage/romstage_fsp20.c index 6fe79f66f6..f92ddca25b 100644 --- a/src/soc/intel/skylake/romstage/romstage_fsp20.c +++ b/src/soc/intel/skylake/romstage/romstage_fsp20.c @@ -121,6 +121,7 @@ static void save_dimm_info(void) src_dimm->DimmCapacity, ddr_type, memory_info_hob->ConfiguredMemoryClockSpeed, + src_dimm->RankInDimm, channel_info->ChannelId, src_dimm->DimmId, (const char *)src_dimm->ModulePartNum, -- cgit v1.2.3