From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35203) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZkgFI-0006jl-8A for qemu-devel@nongnu.org; Fri, 09 Oct 2015 18:34:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZkgFD-0000Ub-Il for qemu-devel@nongnu.org; Fri, 09 Oct 2015 18:34:36 -0400 Received: from g2t4618.austin.hp.com ([15.73.212.83]:57660) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZkgFD-0000Mo-Af for qemu-devel@nongnu.org; Fri, 09 Oct 2015 18:34:31 -0400 References: 1432522520-8068-1-git-send-email-zhaoshenglong@huawei.com From: liang yan Message-ID: <561840EE.2070008@hpe.com> Date: Fri, 9 Oct 2015 16:34:22 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v9 00/24] Generate ACPI v5.1 tables and expose them to guest over fw_cfg on ARM List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: zhaoshenglong@huawei.com, shannon.zhao@linaro.org Cc: qemu-devel@nongnu.org Hello, Shannon, > From: Shannon Zhao > > 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_v9 > > 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 drivers, UEFI binary from [5] and Qemu command > line example from [6]. I tested with your kernel and bios, all runs well. But when I try to build a new debian(upstream) with your qemu patch and bios, it always told me could find the right driver, or could not enable ACPI from kernel command line. Do you have a full vm for fedora or you just use the kernel there? Could you tell me more about your detail? Thanks. Also, we have our own EDK-II, and it could not work now, so I need to do patches too. Do you mind to tell me how you build your QMEU.fd? Where can I access those source code? Thanks. Best, Liang > [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 v8: > * remove empty _CRS in processor device node and use a define macro > for SPI base (Igor) > * Add some reviewd-bys from Igor and Alex > > changes since v7: > * replace build_append_uint32 with 4 build_append_byte (Igor) > * Fix byte order of aml_unicode() (Igor) > * Use upper case for enum values and fix enums in aml-build.h (Michael) > * implement aml_interrupt() based on ACPI 5.0 (Igor) > * use separate assert (Laszlo) > * some doc comments fix (Igor & Michael) > > 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 (24): > hw/acpi/aml-build: Make enum values to be upper case to match coding > style > 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 | 231 ++++++++++++- > hw/arm/Makefile.objs | 1 + > hw/arm/virt-acpi-build.c | 644 +++++++++++++++++++++++++++++++++++ > hw/arm/virt.c | 85 ++--- > hw/i2c/Makefile.objs | 2 +- > hw/i386/acpi-build.c | 82 ++--- > include/hw/acpi/acpi-defs.h | 210 +++++++++--- > include/hw/acpi/aml-build.h | 127 +++++-- > include/hw/arm/virt-acpi-build.h | 44 +++ > include/hw/arm/virt.h | 64 ++++ > qemu-options.hx | 2 +- > trace-events | 3 + > 20 files changed, 1333 insertions(+), 186 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.0.4