arch/x86/smbios: fix length calculation for SMBIOS type 17

Different DIMM modules give different SMBIOS type 17 lengths, 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>
Reviewed-on: https://review.coreboot.org/14008
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
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_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 @@
 		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)