firmware: dmi_scan: Look for SMBIOS 3 entry point first
commitc9aba14362a6eec583819ec8f4b872c1816f5cbe
authorJean Delvare <jdelvare@suse.de>
Thu, 15 Jun 2017 11:46:00 +0000 (15 13:46 +0200)
committerJean Delvare <jdelvare@suse.de>
Thu, 15 Jun 2017 11:46:00 +0000 (15 13:46 +0200)
tree980a76f0254ae4740ee568b58241443e8957207f
parent3c2993b8c6143d8a5793746a54eba8f86f95240f
firmware: dmi_scan: Look for SMBIOS 3 entry point first

Since version 3.0.0 of the SMBIOS specification, there can be
multiple entry points in memory, pointing to one or two DMI tables.
If both a 32-bit ("_SM_") entry point and a 64-bit ("_SM3_") entry
point are present, the specification requires that the latter points
to a table which is a super-set of the table pointed to by the
former. Therefore we should give preference to the 64-bit ("_SM3_")
entry point.

However, currently the code is picking the first valid entry point
it finds. Per specification, we should look for a 64-bit ("_SM3_")
entry point first, and if we can't find any, look for a 32-bit
("_SM_" or "_DMI_") entry point. Modify the code to do that.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
drivers/firmware/dmi_scan.c