All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM
@ 2015-05-14  9:19 Shannon Zhao
  2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 01/23] hw/arm/virt: Move common definitions to virt.h Shannon Zhao
                   ` (23 more replies)
  0 siblings, 24 replies; 52+ messages in thread
From: Shannon Zhao @ 2015-05-14  9:19 UTC (permalink / raw)
  To: qemu-devel, peter.maydell, pbonzini, christoffer.dall,
	a.spyridakis, claudio.fontana, imammedo, hanjun.guo, mst, lersek,
	alex.bennee
  Cc: hangaohuai, zhaoshenglong, peter.huangpeng, shannon.zhao

From: Shannon Zhao <shannon.zhao@linaro.org>

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

^ permalink raw reply	[flat|nested] 52+ messages in thread

end of thread, other threads:[~2015-05-21 14:39 UTC | newest]

Thread overview: 52+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-14  9:19 [Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 01/23] hw/arm/virt: Move common definitions to virt.h Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 02/23] hw/arm/virt: Record PCIe ranges in MemMapEntry array Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 03/23] hw/arm/virt-acpi-build: Basic framework for building ACPI tables on ARM Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 04/23] hw/acpi/aml-build: Add aml_memory32_fixed() term Shannon Zhao
2015-05-18 16:06   ` Michael S. Tsirkin
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 05/23] hw/acpi/aml-build: Add aml_interrupt() term Shannon Zhao
2015-05-18 16:07   ` Michael S. Tsirkin
2015-05-20  4:23   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-20 11:05     ` Igor Mammedov
2015-05-20 11:28       ` Shannon Zhao
2015-05-20 13:49         ` Igor Mammedov
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 06/23] hw/arm/virt-acpi-build: Generation of DSDT table for virt devices Shannon Zhao
2015-05-21 14:30   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 07/23] hw/arm/virt-acpi-build: Generate FADT table and update ACPI headers Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 08/23] hw/arm/virt-acpi-build: Generate MADT table Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 09/23] hw/arm/virt-acpi-build: Generate GTDT table Shannon Zhao
2015-05-21 14:31   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 10/23] hw/arm/virt-acpi-build: Generate RSDT table Shannon Zhao
2015-05-21 14:38   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 11/23] hw/arm/virt-acpi-build: Generate RSDP table Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 12/23] hw/arm/virt-acpi-build: Generate MCFG table Shannon Zhao
2015-05-21 14:38   ` Alex Bennée
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 13/23] hw/acpi/aml-build: Make aml_buffer() definition consistent with the spec Shannon Zhao
2015-05-18 16:08   ` Michael S. Tsirkin
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 14/23] hw/acpi/aml-build: Add ToUUID macro Shannon Zhao
2015-05-18 16:17   ` Michael S. Tsirkin
2015-05-18 18:34     ` Laszlo Ersek
2015-05-19  0:41     ` Shannon Zhao
2015-05-19  8:37       ` Michael S. Tsirkin
2015-05-20  4:19   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-20 10:57     ` Igor Mammedov
2015-05-20 11:02       ` Shannon Zhao
2015-05-20 13:41         ` Igor Mammedov
2015-05-20 13:46           ` Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 15/23] hw/acpi/aml-build: Add aml_or() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 16/23] hw/acpi/aml-build: Add aml_lnot() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 17/23] hw/acpi/aml-build: Add aml_else() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 18/23] hw/acpi/aml-build: Add aml_create_dword_field() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 19/23] hw/acpi/aml-build: Add aml_dword_io() term Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 20/23] hw/acpi/aml-build: Add Unicode macro Shannon Zhao
2015-05-18 16:18   ` Michael S. Tsirkin
2015-05-20  5:00   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-20 11:01     ` Igor Mammedov
2015-05-20 11:12       ` Shannon Zhao
2015-05-20 13:47         ` Igor Mammedov
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 21/23] hw/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 22/23] ACPI: split CONFIG_ACPI into 4 pieces Shannon Zhao
2015-05-18 16:19   ` Michael S. Tsirkin
2015-05-20  5:02   ` [Qemu-devel] [RESEND PATCH " Shannon Zhao
2015-05-14  9:19 ` [Qemu-devel] [PATCH v7 23/23] hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables Shannon Zhao
2015-05-18 15:59 ` [Qemu-devel] [PATCH v7 00/23] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.