[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 00/24] ACPI reorganization for hardware-reduced API addition
This patch set provides an ACPI code reorganization in preparation for adding a shared hardware-reduced ACPI API to QEMU. The changes are coming from the NEMU [1] project where we're defining a new x86 machine type: i386/virt. This is an EFI only, ACPI hardware-reduced platform that is built on top of a generic hardware-reduced ACPI API [2]. This API was initially based off the generic parts of the arm/virt-acpi-build.c implementation, and the goal is for both i386/virt and arm/virt to duplicate as little code as possible by using this new, shared API. As a preliminary for adding this hardware-reduced ACPI API to QEMU, we did some ACPI code reorganization with the following goals: * Share as much as possible of the current ACPI build APIs between legacy and hardware-reduced ACPI. * Share the ACPI build code across machine types and architectures and remove the typical PC machine type dependency. The patches are also available in their own git branch [3]. [1] https://github.com/intel/nemu [2] https://github.com/intel/nemu/blob/topic/virt-x86/hw/acpi/reduced.c [3] https://github.com/intel/nemu/tree/topic/upstream/acpi v1 -> v2: * Drop the hardware-reduced implementation for now. Our next patch * set will add hardware-reduced and convert arm/virt to it. * Implement the ACPI build methods as a QOM Interface Class and * convert the PC machine type to it. * acpi_conf_pc_init() uses a PCMachineState pointer and not a MachineState one as its argument. v2 -> v3: * Cc all relevant maintainers, no functional changes. v3 -> v4: * Renamed all AcpiConfiguration pointers from conf to acpi_conf. * Removed the ACPI_BUILD_ALIGN_SIZE export. * Temporarily updated the arm virt build_rsdp() prototype for bisectability purposes. * Removed unneeded pci headers from acpi-build.c. * Refactor the acpi PCI host getter so that it truly is architecture agnostic, by carrying the PCI host pointer through the AcpiConfiguration structure. * Splitted the PCI host AML builder API export patch from the PCI host and holes getter one. * Reduced the build_srat() export scope to hw/i386 instead of the broader hw/acpi. SRAT builders are truly architecture specific and can hardly be generalized. * Completed the ACPI builder documentation. v4 -> v5: * Reorganize the ACPI RSDP export and XSDT implementation into 3 patches. * Fix the hw/i386/acpi header inclusions. Samuel Ortiz (16): hw: i386: Decouple the ACPI build from the PC machine type hw: acpi: Export ACPI build alignment API hw: acpi: The RSDP build API can return void hw: acpi: Export the RSDP build API hw: acpi: Implement XSDT support for RSDP hw: acpi: Factorize the RSDP build API implementation hw: i386: Move PCI host definitions to pci_host.h hw: acpi: Export the PCI host and holes getters hw: acpi: Do not create hotplug method when handler is not defined hw: i386: Make the hotpluggable memory size property more generic hw: i386: Export the i386 ACPI SRAT build method hw: i386: Export the MADT build method hw: acpi: Define ACPI tables builder interface hw: i386: Implement the ACPI builder interface for PC hw: pci-host: piix: Return PCI host pointer instead of PCI bus hw: i386: Set ACPI configuration PCI host pointer Sebastien Boeuf (2): hw: acpi: Export the PCI hotplug API hw: acpi: Retrieve the PCI bus from AcpiPciHpState Yang Zhong (6): hw: acpi: Generalize AML build routines hw: acpi: Factorize _OSC AML across architectures hw: acpi: Export and generalize the PCI host AML API hw: acpi: Export the MCFG getter hw: acpi: Fix memory hotplug AML generation error hw: i386: Refactor PCI host getter hw/i386/acpi-build.h | 9 +- include/hw/acpi/acpi-defs.h | 14 + include/hw/acpi/acpi.h | 44 ++ include/hw/acpi/aml-build.h | 47 ++ include/hw/acpi/builder.h | 100 +++ include/hw/i386/acpi.h | 28 + include/hw/i386/pc.h | 49 +- include/hw/mem/memory-device.h | 2 + include/hw/pci/pci_host.h | 6 + hw/acpi/aml-build.c | 981 +++++++++++++++++++++++++++++ hw/acpi/builder.c | 97 +++ hw/acpi/cpu.c | 8 +- hw/acpi/cpu_hotplug.c | 9 +- hw/acpi/memory_hotplug.c | 21 +- hw/acpi/pcihp.c | 10 +- hw/arm/virt-acpi-build.c | 93 +-- hw/i386/acpi-build.c | 1072 +++----------------------------- hw/i386/pc.c | 198 +++--- hw/i386/pc_piix.c | 36 +- hw/i386/pc_q35.c | 22 +- hw/i386/xen/xen-hvm.c | 19 +- hw/pci-host/piix.c | 32 +- stubs/pci-host-piix.c | 6 - hw/acpi/Makefile.objs | 1 + stubs/Makefile.objs | 1 - 25 files changed, 1644 insertions(+), 1261 deletions(-) create mode 100644 include/hw/acpi/builder.h create mode 100644 include/hw/i386/acpi.h create mode 100644 hw/acpi/builder.c delete mode 100644 stubs/pci-host-piix.c -- 2.19.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |