From c1c83df3b5451bf15a677e546e5b4c644fc67089 Mon Sep 17 00:00:00 2001 From: Ziang Wang Date: Tue, 14 Oct 2025 16:45:10 +0800 Subject: [PATCH] mb/emulation/qemu-riscv: Enable ACPI by default Select HAVE_ACPI_TABLES & PCI for QEMU riscv virt machine mainboard. Add an empty dsdt.asl to fit current build process, but it will not actually be used since QEMU has its own method of providing DSDT blob. TEST=build and run successfully on QEMU rvvirt machine. Using command "qemu-system-riscv64 -machine virt,aia=aplic-imsic,acpi=on -bios build/coreboot.rom -nographic -pflash build/coreboot.rom". Change-Id: If8c9b5d86adb69afdcb4bf320d6353b2b2acfb31 Signed-off-by: Ziang Wang Signed-off-by: Dong Wei Reviewed-on: https://review.coreboot.org/c/coreboot/+/89562 Reviewed-by: Maximilian Brune Tested-by: build bot (Jenkins) --- src/mainboard/emulation/qemu-riscv/Kconfig | 8 ++++++++ .../emulation/qemu-riscv/Makefile.mk | 1 + src/mainboard/emulation/qemu-riscv/acpi.c | 18 ++++++++++++++++++ src/mainboard/emulation/qemu-riscv/dsdt.asl | 19 +++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 src/mainboard/emulation/qemu-riscv/acpi.c create mode 100644 src/mainboard/emulation/qemu-riscv/dsdt.asl diff --git a/src/mainboard/emulation/qemu-riscv/Kconfig b/src/mainboard/emulation/qemu-riscv/Kconfig index c6ff42bdb2..a8972260b5 100644 --- a/src/mainboard/emulation/qemu-riscv/Kconfig +++ b/src/mainboard/emulation/qemu-riscv/Kconfig @@ -38,6 +38,8 @@ config BOARD_SPECIFIC_OPTIONS select RISCV_USE_ARCH_TIMER select FLATTENED_DEVICE_TREE select DRIVERS_EMULATION_QEMU_FW_CFG + select PCI + select HAVE_ACPI_TABLES config MEMLAYOUT_LD_FILE string @@ -49,6 +51,12 @@ config MAINBOARD_DIR config MAINBOARD_PART_NUMBER default "QEMU RISCV" +config ECAM_MMCONF_BASE_ADDRESS + default 0x30000000 + +config ECAM_MMCONF_BUS_NUMBER + default 256 + config MAX_CPUS int default 512 # QEMUs current limit for the virt target diff --git a/src/mainboard/emulation/qemu-riscv/Makefile.mk b/src/mainboard/emulation/qemu-riscv/Makefile.mk index 90e5023feb..deaec5e44f 100644 --- a/src/mainboard/emulation/qemu-riscv/Makefile.mk +++ b/src/mainboard/emulation/qemu-riscv/Makefile.mk @@ -23,5 +23,6 @@ ramstage-y += cbmem.c ramstage-y += chip.c ramstage-y += smp.c ramstage-y += mmio.c +ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include diff --git a/src/mainboard/emulation/qemu-riscv/acpi.c b/src/mainboard/emulation/qemu-riscv/acpi.c new file mode 100644 index 0000000000..687fe20361 --- /dev/null +++ b/src/mainboard/emulation/qemu-riscv/acpi.c @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include + +smbios_enclosure_type smbios_mainboard_enclosure_type(void) +{ + return SMBIOS_ENCLOSURE_MAIN_SERVER_CHASSIS; +} + +void acpi_fill_fadt(acpi_fadt_t *fadt) +{ +} + +unsigned long acpi_fill_madt(unsigned long current) +{ + return current; +} diff --git a/src/mainboard/emulation/qemu-riscv/dsdt.asl b/src/mainboard/emulation/qemu-riscv/dsdt.asl new file mode 100644 index 0000000000..4e992f5ed3 --- /dev/null +++ b/src/mainboard/emulation/qemu-riscv/dsdt.asl @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This DSDT source is meant to be empty since riscv qemu has its own + * method to retrieve DSDT blob via fw_cfg. + */ + +#include + +DefinitionBlock( + "dsdt.aml", + "DSDT", + ACPI_DSDT_REV_2, + OEM_ID, + ACPI_TABLE_CREATOR, + 0x20110725 // OEM revision +) +{ +}