[PATCH 00/10] SMBIOS improvements
Simon Glass
sjg at chromium.org
Tue Sep 10 20:44:08 CEST 2024
Hi Raymond,
On Tue, 3 Sept 2024 at 10:07, Raymond Mao <raymond.mao at linaro.org> wrote:
>
> Hi Simon,
>
> On Sat, 17 Aug 2024 at 11:58, Simon Glass <sjg at chromium.org> wrote:
>>
>> Hi Raymond,
>>
>> On Fri, 16 Aug 2024 at 09:47, Raymond Mao <raymond.mao at linaro.org> wrote:
>> >
>> > Motivations for changes:
>> > Current SMBIOS library and command-line tool is not fully matching with
>> > the requirements:
>> > 1. Missing support for other mandatory types (#7, #9, #16, #17, #19).
>> > 2. Only a few platforms support SMBIOS node from the device tree.
>> > 3. Values of some fields are hardcoded in the library other than fetching
>> > from the device hardware.
>> > 4. Embedded data with dynamic length is not supported (E.g. Contained
>> > Object Handles in Type #2 and Contained Elements in Type #3)
>> >
>> > Changes:
>> > 1. Refactor the SMBIOS library and command-line tool to better align with
>> > the SMBIOS spec.
>> > 2. Create an arch-specific driver for all aarch64-based platforms to fetch
>> > SMBIOS private data from the device hardware.
>> > 3. Create a sysinfo driver to poppulate platform SMBIOS private data.
>> > 4. Put device tree SMBIOS node as a fallback solution when SMBIOS data is
>> > missing from sysinfo driver.
>> > 5. Add support for Type #7 (Cache Information) and link its handles to
>> > Type #4.
>> >
>> > Once this patch is acceptted, subsequent patch sets will add other missing
>> > types (#9, #16, #17, #19).
>> >
>> > Raymond Mao (10):
>> > sysinfo: Add sysinfo API for accessing data area
>> > sysinfo: Add sysinfo driver and data structure for SMBIOS
>> > smbios: Refactor SMBIOS library
>> > smbios: ignore the non-existence of platform sysinfo detect
>> > armv8: Add arch-specific sysinfo driver
>> > sysinfo: Add sysinfo driver for SMBIOS type 7
>> > smbios: Add support to SMBIOS type 7
>> > armv8: Add sysinfo driver for cache information
>> > configs: Enable sysinfo for QEMU Arm64
>> > tests: update smbios pytest
>> >
>> > arch/arm/cpu/armv8/Makefile | 5 +
>> > arch/arm/cpu/armv8/sysinfo.c | 391 ++++++++++++++++++++++++++
>> > cmd/smbios.c | 350 ++++++++++++++++++++++-
>> > configs/qemu_arm64_defconfig | 2 +
>> > drivers/misc/Kconfig | 2 +-
>> > drivers/sysinfo/Makefile | 1 +
>> > drivers/sysinfo/smbios_plat.c | 442 +++++++++++++++++++++++++++++
>> > drivers/sysinfo/smbios_plat.h | 131 +++++++++
>> > drivers/sysinfo/sysinfo-uclass.c | 20 ++
>> > include/smbios.h | 240 ++++++++++++++--
>> > include/sysinfo.h | 124 ++++++++-
>> > lib/Makefile | 2 +
>> > lib/smbios.c | 461 ++++++++++++++++++++++++++-----
>> > test/py/tests/test_smbios.py | 2 +-
>> > 14 files changed, 2058 insertions(+), 115 deletions(-)
>> > create mode 100644 arch/arm/cpu/armv8/sysinfo.c
>> > create mode 100644 drivers/sysinfo/smbios_plat.c
>> > create mode 100644 drivers/sysinfo/smbios_plat.h
>> >
>> > --
>> > 2.25.1
>> >
>>
>> As a general comment, this is adding a load of code which is used by a
>> lot of platforms. As more and more aarch64 platforms are created, this
>> data grows. Why not use the devicetree for this hardware information?
>> That is what it is for.
>>
>> Some of the information detected makes sense, such as cache setup, but
>> some of it seems like an approximation, or is missing, but suggests it
>> is authoritative.
>>
> The idea is that precise information can still come from dt (if the node exists,
> but as a fact, not many platforms have it up to now).
> When it does not exist, system drivers provides the information as much as
> it can (some comes from registers, some comes from generic strings/enums).
> So it is not assumed that each vendor to add their code but just uses the
> arch-specific code in this series - if vendors want precise information they can
> still add into the dt.
I fully understand what you are doing. I just don't think it is a
great idea. We should have a clear boundary between:
1. things which are part of the hardware (although not explicitly in
the devicetree) and can be probed
2. things which we can only guess at
3. grey area
I am very happy with 1). It is just 2) that I want to avoid.
The grey area is where your series adds lots of strings for different
hardware...that just seems like code-size bloat to me.
How about working on a devicetree binding for this stuff? Or perhaps
add the info to the boards you care about?
Regards,
Simon
More information about the U-Boot
mailing list