[PATCH 1/2] smbios: Simplify reporting of unknown values

Sean Anderson seanga2 at gmail.com
Sat Sep 17 18:55:47 CEST 2022


On 9/16/22 16:30, Ilias Apalodimas wrote:
> Hi Simon,
> 
> [...]
> 
>>> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
>>> ---
>>>   lib/smbios.c | 17 +++--------------
>>>   1 file changed, 3 insertions(+), 14 deletions(-)
>>
>> Perhaps a better fix is to drop the smbios info?
> 
> Unfortunately there's a ton of userspace tools still using it.  So I think
> we still need it
> 
>>
>> 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.
>>
> 
> What's fake here?  The model and compatible are taken directly from the DT
> and that should be accurate.  I'd rather fix the DT if that's problematic.
> What would make sense for me to change is take the first token of the
> compatible node instead of the entire string as it's format is expected to
> be <manufacturer, model> anyway.

>         Manufacturer: socionext,developer-box
>         Product Name: Socionext Developer Box

Well, firstly, the manufacturer is "Socionext", not
"socionext,developer-box". Compatibles are not suitable for
user-visible identifiers. The product name should also be something like
"Socionext Developerbox" or maybe "SynQuacer E-series", but this more of
a "bug" in the devicetree model property.

Second, these identifiers are not suitable for all structures you want
to use it for. For example, the chassis is really a "INWIN industrial PC
case: MicroATX mini-tower case IW-BK623/300-H E USB 3.0 Black with 300W
SFX power supply" [1]. I would describe this as something like

Handle 0x0003, DMI type 3, 21 bytes
Chassis Information
         Manufacturer: INWIN
         Type: Mini Tower
         Lock: Not Present
         Version: Unknown
         Serial Number: Not Specified
         Asset Tag: Not Specified
         Boot-up State: Safe
         Power Supply State: Safe
         Thermal State: Safe
         Security Status: None
         OEM Information: 0x00000000
         Height: Unspecified
         Number Of Power Cords: 1
         Contained Elements: 0

The exact values are not particularly important, but I would certainly
classify a manufacturer of "socionext,developer-box" as fake. We might
not even know what the chassis is; what's to stop a user from using a
different case?

[1] https://www.96boards.org/documentation/enterprise/developerbox/hardware-docs/MN04-00002-3E.pdf

>> 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.
> 
> That's the exact opposite of the patch description.  Most of these info are
> already included in the DT in it's standard properties.  So if U-Boot ends
> up with a DT without these we get a usable smbios table.  For example a DT
> handed over by the previous stage bootloader would not include these nodes.

I agree. I think a better example would fill in these fields with
descriptive values.

> As far as sysinfo-smbios node is concerned,  it's only present in 13
> boards, so it's not like  it's used by the majority of boards.  Yes we
> could fix them, but imho we are better off re-using what's already there
> and defined on the DT spec at least for the simplistic values.

IMO SYS_VENDOR and SYS_BOARD are more descriptive than the devicetree
values, but neither is good...

How many boards do we have which actually use the SMBIOS tables? There
are a lot of boards with EFI_LOADER enabled by default, but I suspect
most never boot anything EFI.

--Sean


More information about the U-Boot mailing list