emulation: Use bloblist to hold tables
authorSimon Glass <sjg@chromium.org>
Sat, 11 Jan 2025 00:00:17 +0000 (17:00 -0700)
committerTom Rini <trini@konsulko.com>
Wed, 22 Jan 2025 23:08:23 +0000 (17:08 -0600)
commit53d5a221632eeef7483d250fdde09bde6cb54df9
tree8f1595ba3f340025a34b572fbd5b8c72d63407bb
parent24768a23a9b36fe2ae9814c166dc8912f981ff3b
emulation: Use bloblist to hold tables

QEMU can have its own internal ACPI and SMBIOS tables. At present U-Boot
copies out the SMBIOS tables but points directly to the ACPI ones.

The ACPI tables are not aligned on a 4KB boundary, which means that UPL
cannot use them directly, since it uses a reserved-memory node for the
tables and that it assumed (by EDK2) to be 4KB-aligned.

On x86, QEMU provides the tables in a mapped memory region and U-Boot
makes use of these directly, thus making it difficult to use any common
code.

Adjust the logic to fit within the existing table-generation code. Use a
bloblist always and ensure that the ACPI tables is placed in an aligned
region. Set a size of 8K for QEMU. This does not actually put all the
tables in one place, for QEMU, since it currently adds a pointer to the
tables in QFW.

On ARM, enable bloblist so that SMBIOS tables can be added to the
bloblist.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/x86/lib/tables.c
configs/qemu-x86_64_defconfig
configs/qemu_arm64_defconfig
configs/qemu_arm_defconfig
drivers/misc/qfw_acpi.c
drivers/misc/qfw_smbios.c
lib/Kconfig
lib/Makefile