
Hi Ilias,
On Tue, 6 Sept 2022 at 07:44, Ilias Apalodimas ilias.apalodimas@linaro.org wrote:
If a value is not valid during the DT or SYSINFO parsing, we explicitly set that to "Unknown Product" and "Unknown" for the product and manufacturer respectively. It's cleaner if we move the checks insisde smbios_add_string() and always report "Unknown" regardless of the missing field.
pre-patch dmidecode
<snip> Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Unknown Product Name: Unknown Product Version: Not Specified Serial Number: Not Specified UUID: Not Settable Wake-up Type: Reserved SKU Number: Not Specified Family: Not Specified
Handle 0x0002, DMI type 2, 14 bytes Base Board Information Manufacturer: Unknown Product Name: Unknown Product Version: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Features: Board is a hosting board Location In Chassis: Not Specified Chassis Handle: 0x0000 Type: Motherboard
<snip>
post-patch dmidecode:
Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: Unknown Product Name: Unknown Version: Unknown Serial Number: Unknown UUID: Not Settable Wake-up Type: Reserved SKU Number: Unknown Family: Unknown
Handle 0x0002, DMI type 2, 14 bytes Base Board Information Manufacturer: Unknown Product Name: Unknown Version: Unknown Serial Number: Not Specified Asset Tag: Unknown Features: Board is a hosting board Location In Chassis: Not Specified Chassis Handle: 0x0000 Type: Motherboard
Signed-off-by: Ilias Apalodimas ilias.apalodimas@linaro.org
lib/smbios.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-)
Perhaps a better fix is to drop the smbios info?
What upstream projects use this information to show things to the user? You showed a screenshot of some sort of system-info app. We could teach it about falling back to the device tree. That way we are not adding fake information to SMBIOS.
Also, SMBIOS is a legacy thing and a PITA to work with. How about we use the device tree binding for the same info:
smbios { compatible = "u-boot,sysinfo-smbios";
smbios { system { manufacturer = "pine64"; product = "rock64_rk3328"; };
baseboard { manufacturer = "pine64"; product = "rock64_rk3328"; };
chassis { manufacturer = "pine64"; product = "rock64_rk3328"; }; }; };
This is easy to parse and gets us away from all this legacy junk that we don't need.
Regards, Simon