[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them
From: |
Shannon Zhao |
Subject: |
[Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM |
Date: |
Thu, 14 May 2015 17:19:19 +0800 |
From: Shannon Zhao <address@hidden>
This patch series generate seven ACPI tables for machine virt on ARM.
The set of generated tables are:
- RSDP
- RSDT
- MADT
- GTDT
- FADT
- DSDT
- MCFG (For PCIe host bridge)
These tables are created dynamically using the function of aml-build.c,
taking into account the needed information passed from the virt machine
model. When the generation is finalized, it use fw_cfg to expose the
tables to guest.
You can fetch this from following repo:
http://git.linaro.org/people/shannon.zhao/qemu.git ACPI_ARM_v7
And this patchset refers to Alexander Spyridakis's patches which are
sent to qemu-devel mailing list before.
http://lists.gnu.org/archive/html/qemu-devel/2014-10/msg03987.html
Thanks to Laszlo's work on UEFI (ArmVirtualizationQemu) supporting
downloading ACPI tables over fw_cfg, we now can use ACPI in VM.
Now upstream kernel applies ACPI patchset, so we can boot it with ACPI,
while we need to apply patches[1] to make tty work, patch[2] to make
virtio-mmio work and apply patch[3] and the relevant patches to make PCI
devices works, e.g. virtio-net-pci, e1000.
On the other hand, you can directly use the Fedora Linux kernel from
following address:
https://git.fedorahosted.org/cgit/kernel-arm64.git/log/?h=devel
I've done test with following VM:
xp, windows2008, sles11 on X86
upstream kernel and Fedora Linux kernel on ARM64
In addtion, dump all the acpi tables, use iasl -d *.dat to convert to
*.asl and use iasl -tc *.asl to compile them to *.hex. No error appears.
If you want to test, you could get kernel Image from [4] which contains
uart, virtio-mmio, pci ACPI drivers, UEFI binary from [5] and Qemu
command line example from [6].
[1] http://git.linaro.org/leg/acpi/acpi.git/shortlog/refs/heads/acpi-sbsa
[2]
http://git.linaro.org/leg/acpi/acpi.git/commit/57acba56d55e3fb521fd6ce767446459ef7a4943
[3]
https://git.fedorahosted.org/cgit/kernel-arm64.git/commit/?h=devel&id=8cf58cbe94b982b680229e5b164231eea0ca2d11
[4] http://people.linaro.org/~shannon.zhao/ACPI_ARM/Image.gz
[5] http://people.linaro.org/~shannon.zhao/ACPI_ARM/QEMU_EFI.fd
[6] http://people.linaro.org/~shannon.zhao/ACPI_ARM/acpi_test.sh
changes since v6:
* add build_append_uint32 (Peter)
* drop some unnecessary headers and adjust the order of headers (Peter)
* drop struct AcpiDsdtInfo, AcpiMadtInfo, AcpiGtdtInfo, AcpiPcieInfo
and reuse MemMapEntry[] and irqmap[] (Peter)
* record PCI ranges info in MemMapEntry[], not calculate those (Peter)
* add a separate patch for splitting CONFIG_ACPI (Peter)
* use VMSTATE_BOOL (Alex)
changes since v5:
* Fix table version (Igor)
* only create CPU device objects for present CPUs (Igor)
* drop madt->local_apic_address and madt->flags (Igor)
* adjust implementation of ToUUID macro (Igor)
* Fix aml_buffer() (Michael & Igor)
* Fix aml_not()
changes since v4:
* use trace_* instead of DPRINTF (Igor & Alex)
* use standard QEMU style for structs (Michael)
* add "-no-acpi" option support for arm
* use extractNN for bits operation (Alex)
* use AmlReadAndWrite enum for rw flags (Igor)
* s/uint64_t/uint32_t/ (Igor)
* use enum for interrupt flag (Igor)
* simplify aml_device use in DSDT (Alex)
* share RSDT table generating code with x86 (Igor)
* remove unnecessary 1 in MCFG table generating code (Alex & Peter)
* use string for ToUUID macro (Igor)
* aml_or and aml_and use two args (Igor)
* add comments on UUID (Michael)
* change PCI MMIO region non-cacheable (Peter)
* fix wrong io map (Peter)
* add several reviewed-by's from Alex, thanks
changes since v3:
* rebase on upstream qemu
* fix _HID of CPU (Heyi Guo)
* Add PCIe host bridge
changes since v2:
* rebase on Igor Mammedov's new branch ASL_API_v3
* use rsdt instead of xsdt according to Igor Mammedov's suggestion
changes since v1:
* fix bug found by Laszlo
* move common helpers into dedictated file and change generating
table order according to Igor's comments
* fix copyright and function name according to Michael's comments
Shannon Zhao (23):
hw/arm/virt: Move common definitions to virt.h
hw/arm/virt: Record PCIe ranges in MemMapEntry array
hw/arm/virt-acpi-build: Basic framework for building ACPI tables on
ARM
hw/acpi/aml-build: Add aml_memory32_fixed() term
hw/acpi/aml-build: Add aml_interrupt() term
hw/arm/virt-acpi-build: Generation of DSDT table for virt devices
hw/arm/virt-acpi-build: Generate FADT table and update ACPI headers
hw/arm/virt-acpi-build: Generate MADT table
hw/arm/virt-acpi-build: Generate GTDT table
hw/arm/virt-acpi-build: Generate RSDT table
hw/arm/virt-acpi-build: Generate RSDP table
hw/arm/virt-acpi-build: Generate MCFG table
hw/acpi/aml-build: Make aml_buffer() definition consistent with the
spec
hw/acpi/aml-build: Add ToUUID macro
hw/acpi/aml-build: Add aml_or() term
hw/acpi/aml-build: Add aml_lnot() term
hw/acpi/aml-build: Add aml_else() term
hw/acpi/aml-build: Add aml_create_dword_field() term
hw/acpi/aml-build: Add aml_dword_io() term
hw/acpi/aml-build: Add Unicode macro
hw/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table
ACPI: split CONFIG_ACPI into 4 pieces
hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables
default-configs/arm-softmmu.mak | 1 +
default-configs/i386-softmmu.mak | 3 +
default-configs/mips-softmmu.mak | 3 +
default-configs/mips64-softmmu.mak | 3 +
default-configs/mips64el-softmmu.mak | 3 +
default-configs/mipsel-softmmu.mak | 3 +
default-configs/x86_64-softmmu.mak | 3 +
hw/acpi/Makefile.objs | 5 +-
hw/acpi/aml-build.c | 205 ++++++++++-
hw/arm/Makefile.objs | 1 +
hw/arm/virt-acpi-build.c | 643 +++++++++++++++++++++++++++++++++++
hw/arm/virt.c | 85 ++---
hw/i2c/Makefile.objs | 2 +-
hw/i386/acpi-build.c | 24 --
include/hw/acpi/acpi-defs.h | 210 +++++++++---
include/hw/acpi/aml-build.h | 67 +++-
include/hw/arm/virt-acpi-build.h | 44 +++
include/hw/arm/virt.h | 64 ++++
qemu-options.hx | 2 +-
trace-events | 3 +
20 files changed, 1258 insertions(+), 116 deletions(-)
create mode 100644 hw/arm/virt-acpi-build.c
create mode 100644 include/hw/arm/virt-acpi-build.h
create mode 100644 include/hw/arm/virt.h
--
2.1.0
- [Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM,
Shannon Zhao <=
[Qemu-devel] [PATCH v7 18/23] hw/acpi/aml-build: Add aml_create_dword_field() term, Shannon Zhao, 2015/05/14