On Tue, Apr 28, 2015 at 02:13:29PM +0800, Shannon Zhao wrote: > On 2015/4/28 13:20, Michael S. Tsirkin wrote: > > On Tue, Apr 28, 2015 at 10:49:42AM +0800, Shannon Zhao wrote: > >> On 2015/4/15 21:24, Shannon Zhao wrote: > >>> From: Shannon Zhao <shannon.z...@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_v5 > >>> > >>> 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. I have done following > >>> vm > >>> startup test and attach virtio-net-pci, e1000: > >>> > >>> xp, windows2008, sles11 on X86 > >>> Fedora Linux kernel on ARM64 > >>> > >>> Note: > >>> As upstream kernel doesn't support ACPI PCI host bridge on ARM64, so I > >>> use the > >>> Fedora Linux kernel from following address: > >>> https://git.fedorahosted.org/cgit/kernel-arm64.git/log/?h=devel > >>> > >>> 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 (20): > >>> hw/i386: Move ACPI header definitions in an arch-independent location > >>> hw/i386/acpi-build: move generic acpi building helpers into dedictated > >>> file > >>> 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: Add PCIe info and generate MCFG table > >>> hw/acpi/aml-build: Add ToUUID macro > >>> hw/acpi/aml-build: Add aml_or() term > >>> hw/acpi/aml-build: Add aml_not() 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/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table > >>> 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 | 234 ++++++++++++- > >>> hw/arm/Makefile.objs | 1 + > >>> hw/arm/virt-acpi-build.c | 650 > >>> +++++++++++++++++++++++++++++++++++ > >>> hw/arm/virt.c | 78 ++++- > >>> hw/i2c/Makefile.objs | 2 +- > >>> hw/i386/acpi-build.c | 103 +----- > >>> hw/i386/acpi-defs.h | 368 -------------------- > >>> include/hw/acpi/acpi-defs.h | 482 ++++++++++++++++++++++++++ > >>> include/hw/acpi/aml-build.h | 94 +++++ > >>> include/hw/arm/virt-acpi-build.h | 81 +++++ > >>> qemu-options.hx | 2 +- > >>> tests/bios-tables-test.c | 2 +- > >>> trace-events | 3 + > >>> 21 files changed, 1641 insertions(+), 483 deletions(-) > >>> create mode 100644 hw/arm/virt-acpi-build.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-build.h > >>> > >> > >> Ping? > > > > I merged first 2 patches in my tree, plan to send pull request soon. > > > > Michael, Thanks. > BTW, in your opinion whoes tree could the other patches be merged through?
Peter's ARM tree. > -- > Thanks, > Shannon