All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 00/47] ACPI refactoring: replace template patching with C ASL API
@ 2015-01-22 14:49 Igor Mammedov
  2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append() Igor Mammedov
                   ` (47 more replies)
  0 siblings, 48 replies; 128+ messages in thread
From: Igor Mammedov @ 2015-01-22 14:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, drjones, marcel.a, claudio.fontana, mst

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 ~1800LOC 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_v2

Igor Mammedov (47):
  acpi: introduce AML composer aml_append()
  acpi: add acpi_scope() term
  acpi: add acpi_device() term
  acpi: add acpi_method() term
  acpi: add acpi_if() term
  acpi: add acpi_name() & acpi_name_decl() term
  acpi: factor out ACPI const int packing out build_append_value()
  acpi: extend build_append_{value|int}() to support 64-bit values
  acpi: add acpi_int() term
  acpi: add acpi_return() term
  acpi: add acpi_arg0(), acpi_arg1(), acpi_arg2(), acpi_arg3() terms
  acpi: add acpi_store() term
  acpi: add acpi_and() term
  acpi: add acpi_notify() term
  acpi: add acpi_call1(), acpi_call2(), acpi_call3(), acpi_call4()
    helpers
  pc: acpi-build: drop template patching and create PCI bus tree
    dynamically
  acpi: add acpi_package() term
  pc: acpi-build: drop unsupported PM1b_CNT.SLP_TYP
  pc: acpi-build: generate _S[345] packages dynamically
  acpi: add acpi_buffer() term
  acpi: add acpi_resource_template() helper
  acpi: add acpi_io() helper
  acpi: include PkgLength size only when requested
  acpi: add acpi_operation_region() term
  acpi: add acpi_field() & acpi_named_field() terms
  acpi: add acpi_local0() term
  acpi: add acpi_string() term
  pc: acpi-build: generate pvpanic device description dynamically
  acpi: add acpi_varpackage() term
  acpi: add acpi_equal() term
  acpi: add acpi_processor() term
  acpi: add acpi_eisaid() term
  pc: acpi-build: drop template patching and CPU hotplug objects
    dynamically
  pc: acpi-build: create CPU hotplug IO region dynamically
  acpi: add acpi_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 acpi_word_bus_number(), acpi_word_io(), acpi_dword_memory(),
    acpi_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
  acpi: add acpi_def_block() term
  pc: acpi-build: prepare to make ACPI tables blob opaque for table
    building functions
  pc: acpi-build: drop remaining ssdt_misc template and use
    acpi_def_block()
  acpi: add acpi_iqr_no_flags() term
  pc: export applesmc IO port/len
  pc: acpi-build: drop template patching and create Device(SMC)
    dynamically

 hw/acpi/acpi-build-utils.c         | 689 +++++++++++++++++++++++++++++--
 hw/acpi/pcihp.c                    |  18 +-
 hw/acpi/piix4.c                    |   2 +-
 hw/i386/Makefile.objs              |   4 +-
 hw/i386/acpi-build.c               | 824 +++++++++++++++++++------------------
 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              |  45 --
 hw/i386/q35-acpi-dsdt.dsl          |  18 -
 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/acpi-build-utils.h | 168 +++++++-
 include/hw/acpi/pc-hotplug.h       |   1 +
 include/hw/acpi/pcihp.h            |   7 +-
 include/hw/isa/isa.h               |  11 +-
 24 files changed, 1304 insertions(+), 2003 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] 128+ messages in thread

end of thread, other threads:[~2015-02-05 17:59 UTC | newest]

Thread overview: 128+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-22 14:49 [Qemu-devel] [PATCH v2 00/47] ACPI refactoring: replace template patching with C ASL API Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append() Igor Mammedov
2015-01-23  8:03   ` Michael S. Tsirkin
2015-01-23 10:03     ` Igor Mammedov
2015-01-23 13:26       ` Michael S. Tsirkin
2015-01-23  8:11   ` Michael S. Tsirkin
2015-01-23 10:35     ` Igor Mammedov
2015-01-23 13:24       ` Michael S. Tsirkin
2015-01-23 13:40         ` Igor Mammedov
2015-01-23 13:55           ` Michael S. Tsirkin
2015-01-23 17:56             ` Igor Mammedov
2015-01-24 16:33               ` Michael S. Tsirkin
2015-01-26  9:57                 ` Igor Mammedov
2015-01-26 10:37                   ` Michael S. Tsirkin
2015-01-26 15:09                   ` Igor Mammedov
2015-01-26 15:34                     ` Andrew Jones
2015-01-26 16:17                       ` Michael S. Tsirkin
2015-01-27 22:29                         ` Igor Mammedov
2015-01-28  7:27                           ` Michael S. Tsirkin
2015-01-28 10:03                             ` [Qemu-devel] [PATCH 00/13] convert AML API to QOM Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 01/13] convert to passing AcpiAml by pointers Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 02/13] make toplevel ACPI tables blob a pointer Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 03/13] qom: add support for weak referenced object: aka UnownedObject Igor Mammedov
2015-01-28 10:09                                 ` Paolo Bonzini
2015-01-28 12:55                                   ` Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 04/13] acpi: make AcpiAml an OQM object Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 05/13] acpi: use TYPE_AML_OBJECT inside of AML API Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 06/13] acpi: use TYPE_AML_OBJECT for toplevel ACPI tables blob Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 07/13] acpi: make toplevel ACPI tables blob a dedicated object Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 08/13] i386: acpi: hack not yet converted tables calls to deal with table_data being a pointer Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 09/13] acpi: add aml_blob() helper Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 10/13] i386: acpi: add DSDT table using AML API Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 11/13] acpi: acpi_add_table() to common cross target file Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 12/13] acpi: prepare for API internal collection of RSDT entries Igor Mammedov
2015-01-28 10:03                               ` [Qemu-devel] [PATCH 13/13] i386: acpi: mark SSDT as RSDT entry so API would add entry to RSDT automatically Igor Mammedov
2015-01-28 12:44                               ` [Qemu-devel] [PATCH 00/13] convert AML API to QOM Andrew Jones
2015-02-05 14:28                                 ` Marcel Apfelbaum
2015-02-05 17:36                                   ` Igor Mammedov
2015-01-28  7:56                           ` [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append() Michael S. Tsirkin
2015-01-28 10:00                             ` Igor Mammedov
2015-01-28 10:24                               ` Michael S. Tsirkin
2015-01-28 10:50                                 ` Igor Mammedov
2015-01-28 13:12                                   ` Michael S. Tsirkin
2015-01-28 10:32                               ` Claudio Fontana
2015-01-29  7:46                               ` Shannon Zhao
2015-01-29  8:42                                 ` Igor Mammedov
2015-02-05 14:35                               ` Marcel Apfelbaum
2015-01-28 10:45                             ` Andrew Jones
2015-02-05 14:30                             ` Marcel Apfelbaum
2015-02-05 14:09                           ` Marcel Apfelbaum
2015-01-23  9:14   ` Michael S. Tsirkin
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 02/47] acpi: add acpi_scope() term Igor Mammedov
2015-01-23  8:02   ` Michael S. Tsirkin
2015-01-23 10:36     ` Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 03/47] acpi: add acpi_device() term Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 04/47] acpi: add acpi_method() term Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 05/47] acpi: add acpi_if() term Igor Mammedov
2015-02-05 15:01   ` Marcel Apfelbaum
2015-02-05 17:54     ` Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 06/47] acpi: add acpi_name() & acpi_name_decl() term Igor Mammedov
2015-01-23  8:59   ` Michael S. Tsirkin
2015-01-23 13:32     ` Igor Mammedov
2015-01-23 13:42       ` Michael S. Tsirkin
2015-02-02 16:04         ` Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 07/47] acpi: factor out ACPI const int packing out build_append_value() Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 08/47] acpi: extend build_append_{value|int}() to support 64-bit values Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 09/47] acpi: add acpi_int() term Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 10/47] acpi: add acpi_return() term Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 11/47] acpi: add acpi_arg0(), acpi_arg1(), acpi_arg2(), acpi_arg3() terms Igor Mammedov
2015-01-23  8:32   ` Marcel Apfelbaum
2015-01-23  9:35     ` Michael S. Tsirkin
2015-01-23 13:34     ` Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 12/47] acpi: add acpi_store() term Igor Mammedov
2015-02-05 15:06   ` Marcel Apfelbaum
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 13/47] acpi: add acpi_and() term Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 14/47] acpi: add acpi_notify() term Igor Mammedov
2015-01-22 14:49 ` [Qemu-devel] [PATCH v2 15/47] acpi: add acpi_call1(), acpi_call2(), acpi_call3(), acpi_call4() helpers Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 16/47] pc: acpi-build: drop template patching and create PCI bus tree dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 17/47] acpi: add acpi_package() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 18/47] pc: acpi-build: drop unsupported PM1b_CNT.SLP_TYP Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 19/47] pc: acpi-build: generate _S[345] packages dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 20/47] acpi: add acpi_buffer() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 21/47] acpi: add acpi_resource_template() helper Igor Mammedov
2015-01-27 13:26   ` Claudio Fontana
2015-01-27 13:41     ` Michael S. Tsirkin
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 22/47] acpi: add acpi_io() helper Igor Mammedov
2015-02-05 15:19   ` Marcel Apfelbaum
2015-02-05 17:56     ` Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 23/47] acpi: include PkgLength size only when requested Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 24/47] acpi: add acpi_operation_region() term Igor Mammedov
2015-02-05 15:28   ` Marcel Apfelbaum
2015-02-05 17:57     ` Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 25/47] acpi: add acpi_field() & acpi_named_field() terms Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 26/47] acpi: add acpi_local0() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 27/47] acpi: add acpi_string() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 28/47] pc: acpi-build: generate pvpanic device description dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 29/47] acpi: add acpi_varpackage() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 30/47] acpi: add acpi_equal() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 31/47] acpi: add acpi_processor() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 32/47] acpi: add acpi_eisaid() term Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 33/47] pc: acpi-build: drop template patching and CPU hotplug objects dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 34/47] pc: acpi-build: create CPU hotplug IO region dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 35/47] acpi: add acpi_reserved_field() term Igor Mammedov
2015-02-05 15:36   ` Marcel Apfelbaum
2015-02-05 17:57     ` Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 36/47] pc: acpi-build: drop template patching and memory hotplug objects dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 37/47] pc: acpi-build: create memory hotplug IO region dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 38/47] acpi: add acpi_word_bus_number(), acpi_word_io(), acpi_dword_memory(), acpi_qword_memory() terms Igor Mammedov
2015-02-05 15:38   ` Marcel Apfelbaum
2015-02-05 17:58     ` Igor Mammedov
2015-02-05 17:59     ` Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 39/47] pc: pcihp: expose MMIO base and len as properties Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 40/47] pc: acpi-build: reserve PCIHP MMIO resources Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 41/47] pc: acpi-build: create PCI0._CRS dynamically Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 42/47] acpi: add acpi_def_block() term Igor Mammedov
2015-01-29  8:02   ` Shannon Zhao
2015-01-29  8:45     ` Igor Mammedov
2015-01-29  9:01       ` Shannon Zhao
2015-01-29  9:21         ` Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 43/47] pc: acpi-build: prepare to make ACPI tables blob opaque for table building functions Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 44/47] pc: acpi-build: drop remaining ssdt_misc template and use acpi_def_block() Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 45/47] acpi: add acpi_iqr_no_flags() term Igor Mammedov
2015-01-27 15:37   ` Claudio Fontana
2015-01-28 12:15     ` Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 46/47] pc: export applesmc IO port/len Igor Mammedov
2015-01-22 14:50 ` [Qemu-devel] [PATCH v2 47/47] pc: acpi-build: drop template patching and create Device(SMC) dynamically Igor Mammedov
2015-01-28  7:38 ` [Qemu-devel] [PATCH v2 00/47] ACPI refactoring: replace template patching with C ASL API Michael S. Tsirkin
2015-01-28 10:07   ` 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.