Iru Cai (mytbk920423@gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14008
-gerrit
commit 14a932f75e1eb04fcf09278430e6b42468a78cd5 Author: Iru Cai mytbk920423@gmail.com Date: Wed Mar 9 23:22:58 2016 +0800
src/arch/x86/smbios: fix length calculation for SMBIOS type 17
Different DIMM module gives different SMBIOS type 17 length, so we can't use `meminfo->dimm_cnt * len' for entry struct size, otherwise it'll give a wrong SMBIOS size when two or more different DIMMs are installed on the machine.
Change-Id: I0e33853f6aa4b30da547eb433839a397d451a8cf Signed-off-by: Iru Cai mytbk920423@gmail.com --- src/arch/x86/smbios.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c index 8c87635..f380057 100644 --- a/src/arch/x86/smbios.c +++ b/src/arch/x86/smbios.c @@ -473,6 +473,7 @@ static int smbios_write_type11(unsigned long *current, int *handle) static int smbios_write_type17(unsigned long *current, int *handle) { int len = sizeof(struct smbios_type17); + int totallen = 0; int i;
struct memory_info *meminfo; @@ -486,8 +487,9 @@ static int smbios_write_type17(unsigned long *current, int *handle) dimm = &meminfo->dimm[i]; len = create_smbios_type17_for_dimm(dimm, current, handle); *current += len; + totallen += len; } - return meminfo->dimm_cnt * len; + return totallen; }
static int smbios_write_type32(unsigned long *current, int handle)