diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c index 3856acf0d2..87714c0abe 100644 --- a/src/arch/x86/smbios.c +++ b/src/arch/x86/smbios.c @@ -327,8 +327,22 @@ static int create_smbios_type17_for_dimm(struct dimm_info *dimm, t->minimum_voltage = dimm->vdd_voltage; t->maximum_voltage = dimm->vdd_voltage; + /* Fill in type detail */ + switch (dimm->mod_type) { + case SPD_RDIMM: + case SPD_MINI_RDIMM: + t->type_detail = MEMORY_TYPE_DETAIL_REGISTERED; + break; + case SPD_UDIMM: + case SPD_MINI_UDIMM: + t->type_detail = MEMORY_TYPE_DETAIL_UNBUFFERED; + break; + default: + t->type_detail = MEMORY_TYPE_DETAIL_UNKNOWN; + break; + } /* Synchronous = 1 */ - t->type_detail = MEMORY_TYPE_DETAIL_SYNCHRONOUS; + t->type_detail |= MEMORY_TYPE_DETAIL_SYNCHRONOUS; /* no handle for error information */ t->memory_error_information_handle = 0xFFFE; t->attributes = dimm->rank_per_dimm;