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