From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: drjones@redhat.com, mst@redhat.com, zhaoshenglong@huawei.com,
marcel.a@redhat.com
Subject: [Qemu-devel] [PATCH v4 00/42] ACPI refactoring: replace template patching with C AML API
Date: Wed, 18 Feb 2015 19:14:13 +0000 [thread overview]
Message-ID: <1424286895-21611-1-git-send-email-imammedo@redhat.com> (raw)
changes since v3:
* drop acpi_def_block() for now
* exclude PCI refactoring
* minor ammends as requested on list
* not much tested, but XP boots.
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_v4
Igor Mammedov (42):
acpi: introduce AML composer aml_append()
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: 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
acpi: add aml_package() term
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
acpi: add acpi_irq_no_flags() term
pc: export applesmc IO port/len
pc: acpi-build: drop template patching and create Device(SMC)
dynamically
hw/acpi/aml-build.c | 681 ++++++++++++++++++++++++++++++++++++--
hw/acpi/pcihp.c | 18 +-
hw/acpi/piix4.c | 2 +-
hw/i386/Makefile.objs | 5 +-
hw/i386/acpi-build.c | 503 ++++++++++++++++++----------
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/q35-acpi-dsdt.dsl | 19 --
hw/i386/ssdt-mem.dsl | 77 -----
hw/i386/ssdt-misc.dsl | 122 -------
hw/i386/ssdt-proc.dsl | 63 ----
hw/misc/applesmc.c | 5 +-
include/hw/acpi/aml-build.h | 190 ++++++++++-
include/hw/acpi/pc-hotplug.h | 1 +
include/hw/acpi/pcihp.h | 7 +-
include/hw/isa/isa.h | 11 +-
19 files changed, 1205 insertions(+), 701 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-misc.dsl
delete mode 100644 hw/i386/ssdt-proc.dsl
--
1.8.3.1
next reply other threads:[~2015-02-18 19:15 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-18 19:14 Igor Mammedov [this message]
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 01/42] acpi: introduce AML composer aml_append() Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 02/42] acpi: add aml_scope() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 03/42] pc: acpi-build: use aml_scope() for \_SB scope Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 04/42] acpi: add aml_device() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 05/42] acpi: add aml_method() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 06/42] acpi: add aml_if() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 07/42] acpi: add aml_name() & aml_name_decl() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 08/42] acpi: add aml_int() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 09/42] acpi: add aml_return() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 10/42] acpi: add aml_arg() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 11/42] acpi: add aml_store() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 12/42] acpi: add aml_and() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 13/42] acpi: add aml_notify() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 14/42] acpi: add aml_call1(), aml_call2(), aml_call3(), aml_call4() helpers Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 15/42] acpi: add aml_package() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 16/42] pc: acpi-build: generate _S[345] packages dynamically Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 17/42] acpi: add aml_buffer() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 18/42] acpi: add aml_resource_template() helper Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 19/42] acpi: add aml_io() helper Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 20/42] acpi: include PkgLength size only when requested Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 21/42] acpi: add aml_operation_region() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 22/42] acpi: add aml_field() & aml_named_field() terms Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 23/42] acpi: add aml_local() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 24/42] acpi: add aml_string() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 25/42] pc: acpi-build: generate pvpanic device description dynamically Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 26/42] acpi: add aml_varpackage() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 27/42] acpi: add aml_equal() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 28/42] acpi: add aml_processor() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 29/42] acpi: add aml_eisaid() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 30/42] pc: acpi-build: drop template patching and CPU hotplug objects dynamically Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 31/42] pc: acpi-build: create CPU hotplug IO region dynamically Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 32/42] acpi: add aml_reserved_field() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 33/42] pc: acpi-build: drop template patching and memory hotplug objects dynamically Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 34/42] pc: acpi-build: create memory hotplug IO region dynamically Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 35/42] acpi: add aml_word_bus_number(), aml_word_io(), aml_dword_memory(), aml_qword_memory() terms Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 36/42] pc: pcihp: expose MMIO base and len as properties Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 37/42] pc: acpi-build: reserve PCIHP MMIO resources Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 38/42] pc: acpi-build: create PCI0._CRS dynamically Igor Mammedov
2015-02-18 20:25 ` Michael S. Tsirkin
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 39/42] pc: acpi-build: drop remaining ssdt_misc template Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 40/42] acpi: add acpi_irq_no_flags() term Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 41/42] pc: export applesmc IO port/len Igor Mammedov
2015-02-18 19:14 ` [Qemu-devel] [PATCH v4 42/42] pc: acpi-build: drop template patching and create Device(SMC) dynamically Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1424286895-21611-1-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=drjones@redhat.com \
--cc=marcel.a@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=zhaoshenglong@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).