[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 0/7] hw/arm/virt: Dynamic ACPI v5.1 table genera
From: |
Alexander Spyridakis |
Subject: |
[Qemu-devel] [RFC PATCH 0/7] hw/arm/virt: Dynamic ACPI v5.1 table generation |
Date: |
Thu, 30 Oct 2014 18:43:58 +0100 |
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
- [Qemu-devel] [RFC PATCH 0/7] hw/arm/virt: Dynamic ACPI v5.1 table generation,
Alexander Spyridakis <=