Currently, the virt machine model generates Device Tree information dynamically based on the existing devices in the system. This patch series extends the same concept but for ACPI information instead. A total of seven tables have been implemented in this patch series, which is the minimum for a basic ARM support.
The set of generated tables are: - RSDP - XSDT - MADT - GTDT - FADT - FACS - DSDT The tables are created in standalone buffers, taking into account the needed information passed from the virt machine model. When the generation is finalized, the individual buffers are compacted to a single ACPI binary blob, where it is injected on the guest memory space in a fixed location. The guest kernel can find the ACPI tables by providing to it the physical address of the ACPI blob (e.g. acpi_rsdp=0x47000000 boot argument). This series has been tested on the Foundation Model 0.8 build 5206 and the Juno development board. For kernel and driver support it is based on the "Introduce ACPI for ARM64 based on ACPI 5.1" and "Drivers for Juno to boot from ACPI" patch series from Hanjun Guo. Alexander Spyridakis (7): hw/i386: Move ACPI header definitions in an arch-independent location hw/arm/virt-acpi: Basic skeleton for dynamic generation of ACPI tables hw/arm/virt-acpi: Generate RSDP and XSDT, add helper functions hw/arm/virt-acpi: Generate FACS and FADT, update ACPI headers hw/arm/virt-acpi: GIC and Arch Timer definitions in MADT and GTDT hw/arm/virt-acpi: Generation of DSDT including virt devices hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables hw/arm/Makefile.objs | 2 +- hw/arm/boot.c | 26 +++ hw/arm/virt-acpi.c | 555 ++++++++++++++++++++++++++++++++++++++++++++ hw/arm/virt.c | 54 ++++- hw/i386/acpi-build.c | 2 +- hw/i386/acpi-defs.h | 368 ----------------------------- include/hw/acpi/acpi-defs.h | 535 ++++++++++++++++++++++++++++++++++++++++++ include/hw/arm/arm.h | 2 + include/hw/arm/virt-acpi.h | 73 ++++++ tests/bios-tables-test.c | 2 +- 10 files changed, 1244 insertions(+), 375 deletions(-) create mode 100644 hw/arm/virt-acpi.c delete mode 100644 hw/i386/acpi-defs.h create mode 100644 include/hw/acpi/acpi-defs.h create mode 100644 include/hw/arm/virt-acpi.h -- 1.9.1