SMBIOS tables missing on 2025.04-rc5 on qemu-x86
Simon Glass
sjg at chromium.org
Sat Apr 5 22:46:02 CEST 2025
+Heinrich Schuchardt
Hi,
On Sat, 5 Apr 2025 at 05:33, Tom Rini <trini at konsulko.com> wrote:
>
> On Fri, Apr 04, 2025 at 03:10:29PM +0200, Niklas Sombert wrote:
>
> > Hi all,
> >
> > I've written a small EFI bootloader and I'm testing it on QEMU with OVMF and
> > with u-boot (with the qemu-x86_defconfig as -bios in QEMU).
> >
> > On upgrading from 2025.01 to 2025.04-rc5, I've noticed that the SMBIOS
> > tables that are passed via the SMBIOS EFI config table are completely blank
> > (just zeroes instead of starting with SM3).
> >
> > This is pretty easy to reproduce:
> >
> > git checkout v2025.01
> > make clean
> > git clean -xf
> > make qemu-x86_defconfig
> > # edit .config: CONFIG_CMD_SMBIOS=y
> > make -j4
> > qemu-system-i386 -bios u-boot.rom
> > # type "smbios" in the prompt and see information about the system
> >
> > versus:
> > git checkout v2025.04-rc5
> > make clean
> > git clean -xf
> > make qemu-x86_defconfig
> > # edit .config: CONFIG_CMD_SMBIOS=y
> > make -j4
> > qemu-system-i386 -bios u-boot.rom
> > # type "smbios" and get the following error:
> > # do_smbios() Unknown SMBIOS anchor format
> >
> > This is on QEMU version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.25), the one
> > Ubuntu 22.04 currently ships, but I also get the same results on Ubuntu
> > 24.04.
> >
> > Bisecting leads me to the following commit:
> >
> > commit d5bc5c6cb0291203fe848a8532a7ecbcd44cfe9e
> > Author: Simon Glass <sjg at chromium.org>
> > Date: Fri Jan 10 17:00:26 2025 -0700
> >
> > x86: emulation: Enable bloblist
> >
> > Add bloblist support so that tables can be generated and placed in a
> > bloblist, then passed to a payload using UPL
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> >
> > diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
> > index 2771a4b9e19..792ba06c2b8 100644
> > --- a/configs/qemu-x86_64_defconfig
> > +++ b/configs/qemu-x86_64_defconfig
> > @@ -1,6 +1,7 @@
> > CONFIG_X86=y
> > CONFIG_TEXT_BASE=0x1110000
> > CONFIG_SYS_MALLOC_F_LEN=0x1000
> > +CONFIG_BLOBLIST_SIZE_RELOC=0x20000
> > CONFIG_NR_DRAM_BANKS=8
> > CONFIG_ENV_SIZE=0x40000
> > CONFIG_MAX_CPUS=2
> > @@ -33,6 +34,7 @@ CONFIG_LOGF_FUNC=y
> > CONFIG_SPL_LOG=y
> > CONFIG_DISPLAY_BOARDINFO_LATE=y
> > CONFIG_PCI_INIT_R=y
> > +CONFIG_BLOBLIST=y
> > CONFIG_BLOBLIST_FIXED=y
> > CONFIG_BLOBLIST_ADDR=0x10000
> > CONFIG_SPL_NO_BSS_LIMIT=y
> > diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
> > index 947d15cd727..0b0e10c795f 100644
> > --- a/configs/qemu-x86_defconfig
> > +++ b/configs/qemu-x86_defconfig
> > @@ -1,6 +1,7 @@
> > CONFIG_X86=y
> > CONFIG_TEXT_BASE=0xFFF00000
> > CONFIG_SYS_MALLOC_F_LEN=0x1000
> > +CONFIG_BLOBLIST_SIZE_RELOC=0x20000
> > CONFIG_NR_DRAM_BANKS=8
> > CONFIG_ENV_SIZE=0x40000
> > CONFIG_MAX_CPUS=2
> > @@ -23,6 +24,9 @@ CONFIG_LOG=y
> > CONFIG_LOGF_FUNC=y
> > CONFIG_DISPLAY_BOARDINFO_LATE=y
> > CONFIG_PCI_INIT_R=y
> > +CONFIG_BLOBLIST=y
> > +CONFIG_BLOBLIST_FIXED=y
> > +CONFIG_BLOBLIST_ADDR=0x10000
> > CONFIG_CMD_CPU=y
> > CONFIG_CMD_BOOTEFI_SELFTEST=y
> > CONFIG_CMD_NVEDIT_EFI=y
> >
> > Just setting CONFIG_BLOBLIST=n solves this problem for me.
> >
> > I'm not sure how to debug this further, because v2025.01 doesn't build with
> > the config from v2025.04-rc5:
> > ld.bfd: arch/x86/lib/tables.o: in function `write_tables':
> > /home/niklas/Build/u-boot/arch/x86/lib/tables.c:171: undefined reference to
> > `acpi_write_rsdp'
>
> I think for the v2025.04 release we should just put BLOBLIST=n (so long
> as CI passes still), and file an issue to sort this out for the next
> release. Can you please file something at
> https://source.denx.de/u-boot/custodians/u-boot-dm/-/issues ? Thanks!
Heinrich wrote an smbios test[1] so I wonder why it is not catching
this problem?
(looks)
CMD_SMBIOS is not enable for qemu-x86. When enabled, I see:
=> smbios
do_smbios() Unknown SMBIOS anchor format
The test should really be written in C, not Python, though.
The root cause is my patch which switches to using bloblist, as the
EFI code still uses the SMBIOS address in global_data, which is now
not set.
I'll send a patch to fix this. As I mentioned to Heinrich in another
email, at some point we should drop these table points and always use
bloblist.
Regards,
Simon
[1] test/py/tests/test_smbios.py
More information about the U-Boot
mailing list