All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 00/52] ACPI refactoring: replace template patching with C AML API
@ 2015-02-09 10:53 Igor Mammedov
  2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 01/52] acpi: introduce AML composer aml_append() Igor Mammedov
                   ` (52 more replies)
  0 siblings, 53 replies; 89+ messages in thread
From: Igor Mammedov @ 2015-02-09 10:53 UTC (permalink / raw)
  To: qemu-devel; +Cc: drjones, marcel.a, claudio.fontana, mst, zhaoshenglong

changes since v2:
  * rename acpi prefixes in API to aml
  * reverse conversion order from bottom->top to top->bottom
  * introduce internal Aml garbage collector and 2 API functions
    to initialize and cleanup it up
  * replace acpi_argX() helpers with a single aml_arg(X) helper
    do the same for acpi_localX() helpers.
  * add 3 internal allocators, for allocating dummy Aml struct
    for helpers aml_alloc(), aml_opcode(OPCODE) for simple Aml
    elements and aml_bundle(opcode, kind) for complex elements
    that require post-processing after element has been composed
  * amend spec references to ACPI 1.0b and later if AML element
    was introduced later
  * various codestyle fixes
  * rebase on top of PCI tree

changes since RFC:
  * conflicts with vmgenid (broken) patches, so it's not based on PCI tree
  * rebased on top of today's master +
    [PATCH v5 0/5] pc: acpi: various fixes and cleanups +
    some patches from PCI tree that above series depends on
  * small cleanups
  * droped [42/47] acpi: make tables linker-loader available to other targets
    since Michael has a cleaner similar patch(es) in PCI tree,
    so reuse them (not included in here)
  * move SMC device from DSDT to SSDT and create it only when
    applesmc device is present.


This series refactors SSDT runtime composing and gets rid of:
    * patching AML templates, with related pointer arithmetic magic
    * manual AML composition, i.e. creating AML terms practically
      byte by byte
    * using AML templates for SSDT creation, reducing dependency on IASL.
      as result of above, QEMU source tree doesn't have to carry
      'binary' template blobs that used to be part of SSDT.
    * hand-crafted PCI0._CRSes for pc/q35 machines in DSDT with
      manual hole punching of reserved resources
and adds following:
    * introduces ASL like API for creating AML objects using ASL
      like constructs/terms. API: 
          * provides a necessary minimum set of terms/helpers to
            replace currently used SSDT templates.
          * simplifies AML composition and keeps track of AML
            object contexts, transparently managing their 
            (de)allocation and merging into parent context,
            making composition of SSDT 'almost' like writing
            native ASL definition of the table.
          * hides pointer arithmetic from user when composing
            SSDT.
    * dynamically creates unified PCI0._CRS in SSDT for pc/q35
      machines allowing to reserve resources at runtime vs
      current compile time
    * while adding new API, make it target independed CONFIG_ACPI
      and also make some other utilities for composing ACPI tables
      target independed (i.e. utils on which API depends) so that
      they could be reused for ARM target later without moving
      stuff around uncessarily.
    * trims SSDT by not creating objects that are not present
      (S[34] Package if disabled, pvpanic, applesmc)

As result of replacing AML templates with ASL API, codebase
reduces on ~1900LOC even with net addition of API 1050LOC counted in.


Tested with XPsp3, WS2012R2, RHEL6/7 guests. 

Git tree for playing with:
    https://github.com/imammedo/qemu/commits/ASL_API_v3


Igor Mammedov (52):
  acpi: introduce AML composer aml_append()
  pc: acpi: use local var for accessing ACPI tables blob in acpi_build()
  pc: acpi: make top level ACPI tables blob Aml*
  acpi: factor out ACPI const int packing out of build_append_value()
  acpi: add aml_def_block() term
  pc: acpi-build: use aml_def_block() for declaring SSDT table
  acpi: add aml_scope() term
  pc: acpi-build: use aml_scope() for \_SB scope
  acpi: add aml_device() term
  acpi: add aml_method() term
  acpi: add aml_if() term
  acpi: add aml_name() & aml_name_decl() term
  acpi: extend build_append_{value|int}() to support 64-bit values
  acpi: add aml_int() term
  acpi: add aml_return() term
  acpi: add aml_arg() term
  acpi: add aml_store() term
  acpi: add aml_and() term
  acpi: add aml_notify() term
  acpi: add aml_call1(), aml_call2(), aml_call3(), aml_call4() helpers
  pc: acpi-build: drop template patching and create PCI bus tree
    dynamically
  acpi: add aml_package() term
  pc: acpi-build: drop unsupported PM1b_CNT.SLP_TYP
  pc: acpi-build: generate _S[345] packages dynamically
  acpi: add aml_buffer() term
  acpi: add aml_resource_template() helper
  acpi: add aml_io() helper
  acpi: include PkgLength size only when requested
  acpi: add aml_operation_region() term
  acpi: add aml_field() & aml_named_field() terms
  acpi: add aml_local() term
  acpi: add aml_string() term
  pc: acpi-build: generate pvpanic device description dynamically
  acpi: add aml_varpackage() term
  acpi: add aml_equal() term
  acpi: add aml_processor() term
  acpi: add aml_eisaid() term
  pc: acpi-build: drop template patching and CPU hotplug objects
    dynamically
  pc: acpi-build: create CPU hotplug IO region dynamically
  acpi: add aml_reserved_field() term
  pc: acpi-build: drop template patching and memory hotplug objects
    dynamically
  pc: acpi-build: create memory hotplug IO region dynamically
  acpi: add aml_word_bus_number(), aml_word_io(), aml_dword_memory(),
    aml_qword_memory() terms
  pc: pcihp: expose MMIO base and len as properties
  pc: acpi-build: reserve PCIHP MMIO resources
  pc: acpi-build: create PCI0._CRS dynamically
  pc: acpi-build: drop remaining ssdt_misc template and use
    acpi_def_block()
  acpi: add acpi_irq_no_flags() term
  pc: export applesmc IO port/len
  pc: acpi-build: drop template patching and create Device(SMC)
    dynamically
  pc: acpi-build: update [q35-]acpi-dsdt.hex.generated due to moved SMC
  acpi: make build_*() routines static to aml-build.c

 hw/acpi/aml-build.c                 | 744 ++++++++++++++++++++++++++++++--
 hw/acpi/pcihp.c                     |  18 +-
 hw/acpi/piix4.c                     |   2 +-
 hw/i386/Makefile.objs               |   4 +-
 hw/i386/acpi-build.c                | 825 +++++++++++++++++++-----------------
 hw/i386/acpi-dsdt-cpu-hotplug.dsl   |  17 +-
 hw/i386/acpi-dsdt-isa.dsl           |  11 -
 hw/i386/acpi-dsdt-mem-hotplug.dsl   |  36 +-
 hw/i386/acpi-dsdt-pci-crs.dsl       |  92 ----
 hw/i386/acpi-dsdt.dsl               |  46 --
 hw/i386/acpi-dsdt.hex.generated     | 714 ++-----------------------------
 hw/i386/q35-acpi-dsdt.dsl           |  19 -
 hw/i386/q35-acpi-dsdt.hex.generated | 662 ++---------------------------
 hw/i386/ssdt-mem.dsl                |  77 ----
 hw/i386/ssdt-mem.hex.generated      | 213 ----------
 hw/i386/ssdt-misc.dsl               | 122 ------
 hw/i386/ssdt-misc.hex.generated     | 399 -----------------
 hw/i386/ssdt-pcihp.dsl              | 100 -----
 hw/i386/ssdt-pcihp.hex.generated    | 251 -----------
 hw/i386/ssdt-proc.dsl               |  63 ---
 hw/i386/ssdt-proc.hex.generated     | 134 ------
 hw/misc/applesmc.c                  |   5 +-
 include/hw/acpi/aml-build.h         | 210 ++++++++-
 include/hw/acpi/pc-hotplug.h        |   1 +
 include/hw/acpi/pcihp.h             |   7 +-
 include/hw/isa/isa.h                |  11 +-
 26 files changed, 1436 insertions(+), 3347 deletions(-)
 delete mode 100644 hw/i386/acpi-dsdt-pci-crs.dsl
 delete mode 100644 hw/i386/ssdt-mem.dsl
 delete mode 100644 hw/i386/ssdt-mem.hex.generated
 delete mode 100644 hw/i386/ssdt-misc.dsl
 delete mode 100644 hw/i386/ssdt-misc.hex.generated
 delete mode 100644 hw/i386/ssdt-pcihp.dsl
 delete mode 100644 hw/i386/ssdt-pcihp.hex.generated
 delete mode 100644 hw/i386/ssdt-proc.dsl
 delete mode 100644 hw/i386/ssdt-proc.hex.generated

-- 
1.8.3.1

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

end of thread, other threads:[~2015-02-18 13:51 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-09 10:53 [Qemu-devel] [PATCH v3 00/52] ACPI refactoring: replace template patching with C AML API Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 01/52] acpi: introduce AML composer aml_append() Igor Mammedov
2015-02-17 16:26   ` Michael S. Tsirkin
2015-02-17 17:50     ` Igor Mammedov
2015-02-17 19:12       ` Michael S. Tsirkin
2015-02-17 19:46   ` Michael S. Tsirkin
2015-02-18  8:50     ` Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 02/52] pc: acpi: use local var for accessing ACPI tables blob in acpi_build() Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 03/52] pc: acpi: make top level ACPI tables blob Aml* Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 04/52] acpi: factor out ACPI const int packing out of build_append_value() Igor Mammedov
2015-02-17 19:53   ` Michael S. Tsirkin
2015-02-18  9:41     ` Igor Mammedov
2015-02-18 13:51       ` Michael S. Tsirkin
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 05/52] acpi: add aml_def_block() term Igor Mammedov
2015-02-17 16:35   ` Michael S. Tsirkin
2015-02-17 16:47     ` Igor Mammedov
2015-02-17 19:03       ` Michael S. Tsirkin
2015-02-18 10:47         ` Igor Mammedov
2015-02-18 11:36           ` Michael S. Tsirkin
2015-02-17 19:15       ` Michael S. Tsirkin
2015-02-18  9:50         ` Igor Mammedov
2015-02-18 11:35           ` Michael S. Tsirkin
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 06/52] pc: acpi-build: use aml_def_block() for declaring SSDT table Igor Mammedov
2015-02-17 16:42   ` Michael S. Tsirkin
2015-02-18  9:57     ` Igor Mammedov
2015-02-18 11:39       ` Michael S. Tsirkin
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 07/52] acpi: add aml_scope() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 08/52] pc: acpi-build: use aml_scope() for \_SB scope Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 09/52] acpi: add aml_device() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 10/52] acpi: add aml_method() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 11/52] acpi: add aml_if() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 12/52] acpi: add aml_name() & aml_name_decl() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 13/52] acpi: extend build_append_{value|int}() to support 64-bit values Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 14/52] acpi: add aml_int() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 15/52] acpi: add aml_return() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 16/52] acpi: add aml_arg() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 17/52] acpi: add aml_store() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 18/52] acpi: add aml_and() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 19/52] acpi: add aml_notify() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 20/52] acpi: add aml_call1(), aml_call2(), aml_call3(), aml_call4() helpers Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 21/52] pc: acpi-build: drop template patching and create PCI bus tree dynamically Igor Mammedov
2015-02-17 19:39   ` Michael S. Tsirkin
2015-02-18 10:00     ` Igor Mammedov
2015-02-18 10:42     ` Igor Mammedov
2015-02-18 11:38       ` Michael S. Tsirkin
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 22/52] acpi: add aml_package() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 23/52] pc: acpi-build: drop unsupported PM1b_CNT.SLP_TYP Igor Mammedov
2015-02-17 16:41   ` Michael S. Tsirkin
2015-02-18 10:03     ` Igor Mammedov
2015-02-18 12:41       ` Michael S. Tsirkin
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 24/52] pc: acpi-build: generate _S[345] packages dynamically Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 25/52] acpi: add aml_buffer() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 26/52] acpi: add aml_resource_template() helper Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 27/52] acpi: add aml_io() helper Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 28/52] acpi: include PkgLength size only when requested Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 29/52] acpi: add aml_operation_region() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 30/52] acpi: add aml_field() & aml_named_field() terms Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 31/52] acpi: add aml_local() term Igor Mammedov
2015-02-17 12:18   ` Michael S. Tsirkin
2015-02-17 14:06     ` Igor Mammedov
2015-02-17 14:24   ` [Qemu-devel] [PATCH v3 31/52] fixup! " Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 32/52] acpi: add aml_string() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 33/52] pc: acpi-build: generate pvpanic device description dynamically Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 34/52] acpi: add aml_varpackage() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 35/52] acpi: add aml_equal() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 36/52] acpi: add aml_processor() term Igor Mammedov
2015-02-09 10:53 ` [Qemu-devel] [PATCH v3 37/52] acpi: add aml_eisaid() term Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 38/52] pc: acpi-build: drop template patching and CPU hotplug objects dynamically Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 39/52] pc: acpi-build: create CPU hotplug IO region dynamically Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 40/52] acpi: add aml_reserved_field() term Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 41/52] pc: acpi-build: drop template patching and memory hotplug objects dynamically Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 42/52] pc: acpi-build: create memory hotplug IO region dynamically Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 43/52] acpi: add aml_word_bus_number(), aml_word_io(), aml_dword_memory(), aml_qword_memory() terms Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 44/52] pc: pcihp: expose MMIO base and len as properties Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 45/52] pc: acpi-build: reserve PCIHP MMIO resources Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 46/52] pc: acpi-build: create PCI0._CRS dynamically Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 47/52] pc: acpi-build: drop remaining ssdt_misc template and use acpi_def_block() Igor Mammedov
2015-02-17 16:44   ` Michael S. Tsirkin
2015-02-18 10:09     ` Igor Mammedov
2015-02-18 13:13       ` Michael S. Tsirkin
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 48/52] acpi: add acpi_irq_no_flags() term Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 49/52] pc: export applesmc IO port/len Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 50/52] pc: acpi-build: drop template patching and create Device(SMC) dynamically Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 51/52] pc: acpi-build: update [q35-]acpi-dsdt.hex.generated due to moved SMC Igor Mammedov
2015-02-09 10:54 ` [Qemu-devel] [PATCH v3 52/52] acpi: make build_*() routines static to aml-build.c Igor Mammedov
2015-02-17 16:47 ` [Qemu-devel] [PATCH v3 00/52] ACPI refactoring: replace template patching with C AML API Michael S. Tsirkin
2015-02-17 17:51   ` Igor Mammedov
2015-02-17 19:14     ` Michael S. Tsirkin
2015-02-18 10:35       ` Igor Mammedov

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.