[PATCH v3 00/10] SMBIOS improvements

Simon Glass sjg at chromium.org
Thu Dec 19 16:08:11 CET 2024


Hi Ilias,

On Mon, 16 Dec 2024 at 08:43, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi Simon,
>
> On Mon, 16 Dec 2024 at 17:16, Simon Glass <sjg at chromium.org> wrote:
> >
> > Hi Raymond,
> >
> > On Fri, 6 Dec 2024 at 15:54, 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 (processor and cache).
> > > 3. Create a sysinfo driver to poppulate platform SMBIOS private data.
> > > 4. Add generic SMBIOS DTS file for arm64 platforms for those common strings
> > >    and values which cannot be retrieved from the system registers.
> > >    Vendors can create their own SMBIOS node using this as an example.
> > >    For those boards without SMBIOS nodes, this DTS file can be included to
> > >    have a generic SMBIOS information of the system.
> > > 5. Add support for Type #7 (Cache Information) and link its handles to
> > >    Type #4.
> > > 6. To minimize size-growth for those platforms which have not sufficient
> > >    ROM spaces or the platforms which don't need detailed SMBIOS
> > >    information, new added fields are only being built when kconfig
> > >    GENERATE_SMBIOS_TABLE_VERBOSE is selected.
> > >
> > > Once this patch is acceptted, subsequent patch sets will add other missing
> > > types (#9, #16, #17, #19).
> > >
> > > Tests:
> > > To test this with QEMU arm64, please follow the guide on dt_qemu.rst to
> > > get a merged DT to run with.
> > > ```
> > > qemu-system-aarch64 -machine virt -machine dumpdtb=qemu.dtb
> > > cat  <(dtc -I dtb qemu.dtb) <(dtc -I dtb ./dts/dt.dtb | grep -v /dts-v1/) \
> > >   | dtc - -o merged.dtb
> > > qemu-system-aarch64 -machine virt -nographic -bios u-boot.bin \
> > >   -dtb merged.dtb
> > > ```
> > >
> > > Raymond Mao (10):
> > >   smbios: Refactor the smbios headfile
> > >   sysinfo: Add sysinfo API for accessing data area
> > >   test/dm: add sandbox test for sysinfo_get_data
> > >   sysinfo: Add sysinfo driver and data structure for smbios
> > >   smbios: Refactor smbios library
> > >   smbios: add detailed smbios information
> > >   armv8: Add arch-specific sysinfo platform driver
> > >   armv8: Add generic smbios information into the device tree
> > >   cmd: update smbios cmd
> > >   configs: Enable sysinfo for QEMU Arm64
> > >
> > >  arch/arm/cpu/armv8/Makefile      |   2 +
> > >  arch/arm/cpu/armv8/sysinfo.c     | 292 ++++++++++++++++++++
> > >  arch/arm/dts/qemu-arm64.dts      |   4 +
> > >  arch/arm/dts/smbios_generic.dtsi |  82 ++++++
> > >  cmd/smbios.c                     | 348 +++++++++++++++++++++---
> > >  configs/qemu_arm64_defconfig     |   3 +
> > >  drivers/misc/Kconfig             |   2 +-
> > >  drivers/sysinfo/sandbox.c        |  19 ++
> > >  drivers/sysinfo/sandbox.h        |   1 +
> > >  drivers/sysinfo/smbios.c         | 228 ++++++++++++++++
> > >  drivers/sysinfo/sysinfo-uclass.c |  20 ++
> > >  include/smbios.h                 | 158 ++++++-----
> > >  include/smbios_def.h             | 194 ++++++++++++++
> > >  include/smbios_plat.h            |  79 ++++++
> > >  include/sysinfo.h                | 125 ++++++++-
> > >  lib/Kconfig                      |   6 +
> > >  lib/smbios.c                     | 445 ++++++++++++++++++++++++++-----
> > >  test/dm/sysinfo.c                |   6 +
> > >  test/py/tests/test_smbios.py     |  18 +-
> > >  19 files changed, 1863 insertions(+), 169 deletions(-)
> > >  create mode 100644 arch/arm/cpu/armv8/sysinfo.c
> > >  create mode 100644 arch/arm/dts/smbios_generic.dtsi
> > >  create mode 100644 include/smbios_def.h
> > >  create mode 100644 include/smbios_plat.h
> > >
> > > --
> > > 2.25.1
> > >
> >
> > I'm going to leave this series to you and Ilias as I don't really
> > support bringing all this SMBIOS info in, just so we can run ACPI on
> > ARM.
>
> I don't think the current patchset has anything to do with ACPI. I do
> not like revising SMBIOS any more than you do but....
> With systemready etc, we are now easily booting distros. Distros rely
> on smbios tooling for some of their bug reports, so we are just trying
> to make their lives easier. I hope that we can completely disable it
> when distros move forward
>
> Since Peter used to work for a distro, he can fill up anything I've missed

If you would like to move on from legacy stuff, I advise you to do it
in baby steps. A good time to break free is when you find yourself
implementing something to 'just make things easier for the existing
programs, etc.' Failing that, $10 says SMBIOS becomes entrenched on
ARM.

> > Please just avoid code-size increase and breaking any x86
> > platforms.

Regards,
Simon


More information about the U-Boot mailing list