RISC-V UEFI/ACPI on QEMU regression?

Björn Töpel bjorn at kernel.org
Wed Apr 2 15:22:37 CEST 2025


Hi,

I think I got a regression from commit 53d5a221632e ("emulation: Use
bloblist to hold tables"), and v2024.10 for
qemu-riscv64_smode_defconfig + acpi.config booting Linux with UEFI.

TL;DR: It seems like the RSDP is placed in the wrong EFI memory map
type (it should be "ACPI Reclaim").

I might also be misunderstanding what config fragments should be
used -- I'm out in the weeds here! ;-)

When I was using v2024.10, ACPI RSDP was in ACPI Reclaim memory. All
good, and e.g. a kexec would properly work. However, when using u-boot
with commit 53d5a221632e ("emulation: Use bloblist to hold tables") I
get the following when booting, and then kexec:

First kernel:
[    0.000000] ACPI: Early table checksum verification disabled
                                                  [    0.000000] ACPI:
RSDP 0x000000047EED3000 000024 (v02 BOCHS )
Kexec kernel:
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI:      0x000000047EED3000 000000 (v00
  00000000      00000000)
[    0.000000] Oops - load access fault [#1]

RSDP reside in:
[    0.000000] efi:   0x00047ded1000-0x00047eee3fff [Boot Code   |   |
 |  |  |  |  |  |  |  |  |   |WB|  |  |  ]

(Boot Code vs ACPI Reclaimed)

Now to get qemu-riscv64_smode_defconfig + acpi.config to build
post-2024.10, I needed to add the following fragments:

  CONFIG_BLOBLIST=y
  CONFIG_BLOBLIST_ALLOC=y
  CONFIG_BLOBLIST_SIZE_RELOC=0x20000

which is really just a "make the build not complain", guessing game
from my side.

My guess would be that it's related to the change in
evt_write_acpi_tables(), where:

-    ptr = memalign(SZ_4K, SZ_64K);
+    ptr = bloblist_add(BLOBLISTT_ACPI_TABLES, SZ_64K, 12);

is done.

Is my config fragment broken, or is this a proper regression?


Thanks!
Björn


More information about the U-Boot mailing list