
On Tue, 21 Nov 2023 at 08:28, Heinrich Schuchardt heinrich.schuchardt@canonical.com wrote:
If CONFIG_GENERATE_ACPI_TABLES=y, read the ACPI tables provided by QEMU and make them available to U-Boot.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
v2: no change
board/emulation/qemu-riscv/qemu-riscv.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
Reviewed-by: Simon Glass sjg@chromium.org
Can we not use common code to do this? What is different about ARM and x86?
diff --git a/board/emulation/qemu-riscv/qemu-riscv.c b/board/emulation/qemu-riscv/qemu-riscv.c index 181abbbf97..2cebce2128 100644 --- a/board/emulation/qemu-riscv/qemu-riscv.c +++ b/board/emulation/qemu-riscv/qemu-riscv.c @@ -4,17 +4,20 @@ */
#include <common.h> +#include <acpi/acpi_table.h> #include <dm.h> #include <dm/ofnode.h> #include <env.h> #include <fdtdec.h> #include <image.h> #include <log.h> +#include <malloc.h> #include <spl.h> #include <init.h> #include <usb.h> #include <virtio_types.h> #include <virtio.h> +#include <linux/sizes.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -46,6 +49,20 @@ int board_late_init(void) if (CONFIG_IS_ENABLED(USB_KEYBOARD)) usb_init();
if (IS_ENABLED(CONFIG_GENERATE_ACPI_TABLE)) {
uintptr_t addr;
void *ptr;
/* Reserve 64K for ACPI tables, aligned to a 4K boundary */
ptr = memalign(SZ_4K, SZ_64K);
addr = (uintptr_t)ptr;
/* Generate ACPI tables */
write_acpi_tables(addr);
gd->arch.table_start = addr;
gd->arch.table_end = addr;
}
return 0;
}
-- 2.40.1