Hi Niklas,

On Tue, 29 Apr 2025 at 05:30, Niklas Sombert
<niklas.somb...@uni-duesseldorf.de> wrote:
>
> Hi Simon,
>
> this solves my problem, thanks!
>
> Since SMBIOS is broken again in v2025.07-rc1 (and disabling bloblist
> doesn't work anymore), I applied this patch and it worked.
> I probably should have tried this sooner.

Thanks for testing this. Can you please reply with a 'Tested-by' tag?

Regards,
Simon


>
> Greetings,
> Niklas
>
> Simon Glass wrote:
> > The EFI-loader code has not been fully converted to use bloblist, so
> > relies on the SMBIOS-table address being set in global_data.
> >
> > Set this up in write_tables() so that the SMBIOS tables are actually
> > available.
> >
> > Enable the command for x86 QEMU so that the SMBIOS tests actually run.
> >
> > Signed-off-by: Simon Glass <s...@chromium.org>
> > Fixes: 83ce35d6ebb ("emulation: Use bloblist to hold tables")
> > Reported-by: Niklas Sombert <niklas.somb...@uni-duesseldorf.de>
> > ---
> >
> >   arch/x86/lib/tables.c            | 2 ++
> >   board/emulation/qemu-x86/Kconfig | 1 +
> >   lib/efi_loader/efi_smbios.c      | 1 +
> >   3 files changed, 4 insertions(+)
> >
> > diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
> > index ec52992209f..d7f183f95dc 100644
> > --- a/arch/x86/lib/tables.c
> > +++ b/arch/x86/lib/tables.c
> > @@ -126,6 +126,8 @@ int write_tables(void)
> >                       use_high = true;
> >                       if (!gd->arch.table_start_high)
> >                               gd->arch.table_start_high = rom_addr;
> > +                     if (table->tag == BLOBLISTT_SMBIOS_TABLES)
> > +                             gd_set_smbios_start(rom_addr);
> >               }
> >               rom_table_end = table->write(rom_addr);
> >               if (!rom_table_end) {
> > diff --git a/board/emulation/qemu-x86/Kconfig 
> > b/board/emulation/qemu-x86/Kconfig
> > index b2a4e0891a4..c1564fba7cd 100644
> > --- a/board/emulation/qemu-x86/Kconfig
> > +++ b/board/emulation/qemu-x86/Kconfig
> > @@ -23,5 +23,6 @@ config BOARD_SPECIFIC_OPTIONS # dummy
> >       imply VIRTIO_PCI
> >       imply VIRTIO_NET
> >       imply VIRTIO_BLK
> > +     imply CMD_SMBIOS
> >
> >   endif
> > diff --git a/lib/efi_loader/efi_smbios.c b/lib/efi_loader/efi_smbios.c
> > index 8d2ef6deb51..5275e966dfe 100644
> > --- a/lib/efi_loader/efi_smbios.c
> > +++ b/lib/efi_loader/efi_smbios.c
> > @@ -35,6 +35,7 @@ efi_status_t efi_smbios_register(void)
> >       void *buf;
> >
> >       addr = gd_smbios_start();
> > +     printf("register %lx\n", addr);
> >       if (!addr) {
> >               log_err("No SMBIOS tables to install\n");
> >               return EFI_NOT_FOUND;
>

Reply via email to