[PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation

Igor Mammedov posted 35 patches 1 year, 10 months ago
Failed in applying to current master (apply log)
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <ani@anisinha.ca>, John Snow <jsnow@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, Corey Minyard <minyard@acm.org>, Stefan Berger <stefanb@linux.vnet.ibm.com>
There is a newer version of this series
include/hw/acpi/acpi_aml_interface.h  |  40 ++++++
include/hw/acpi/ipmi.h                |   9 +-
include/hw/i386/pc.h                  |   1 -
include/hw/isa/isa.h                  |  15 ---
include/hw/misc/pvpanic.h             |   9 --
hw/acpi/acpi_interface.c              |   8 ++
hw/acpi/ipmi-stub.c                   |   2 +-
hw/acpi/ipmi.c                        |  53 +++-----
hw/acpi/meson.build                   |   2 +-
hw/block/fdc-isa.c                    |  16 ++-
hw/char/parallel.c                    |  14 ++-
hw/char/serial-isa.c                  |  14 ++-
hw/i2c/smbus_ich9.c                   |  15 +++
hw/i386/acpi-build.c                  | 171 ++++++--------------------
hw/i386/pc_piix.c                     |   1 -
hw/i386/pc_q35.c                      |   1 -
hw/input/pckbd.c                      |  14 ++-
hw/ipmi/isa_ipmi_bt.c                 |   4 +
hw/ipmi/isa_ipmi_kcs.c                |   4 +
hw/ipmi/smbus_ipmi.c                  |   4 +
hw/isa/isa-bus.c                      |   9 +-
hw/isa/lpc_ich9.c                     |  19 +++
hw/isa/piix3.c                        |  17 +++
hw/misc/applesmc.c                    |  29 +++++
hw/misc/pvpanic-isa.c                 |  42 +++++++
hw/rtc/mc146818rtc.c                  |  14 ++-
hw/tpm/tpm_tis_isa.c                  |  32 +++++
tests/data/acpi/pc/DSDT               | Bin 6002 -> 5987 bytes
tests/data/acpi/pc/DSDT.acpierst      | Bin 5969 -> 5954 bytes
tests/data/acpi/pc/DSDT.acpihmat      | Bin 7327 -> 7312 bytes
tests/data/acpi/pc/DSDT.bridge        | Bin 8668 -> 8653 bytes
tests/data/acpi/pc/DSDT.cphp          | Bin 6466 -> 6451 bytes
tests/data/acpi/pc/DSDT.dimmpxm       | Bin 7656 -> 7641 bytes
tests/data/acpi/pc/DSDT.hpbridge      | Bin 5969 -> 5954 bytes
tests/data/acpi/pc/DSDT.hpbrroot      | Bin 3084 -> 3069 bytes
tests/data/acpi/pc/DSDT.ipmikcs       | Bin 6074 -> 6059 bytes
tests/data/acpi/pc/DSDT.memhp         | Bin 7361 -> 7346 bytes
tests/data/acpi/pc/DSDT.nohpet        | Bin 5860 -> 5845 bytes
tests/data/acpi/pc/DSDT.numamem       | Bin 6008 -> 5993 bytes
tests/data/acpi/pc/DSDT.roothp        | Bin 6210 -> 6195 bytes
tests/data/acpi/q35/DSDT              | Bin 8289 -> 8274 bytes
tests/data/acpi/q35/DSDT.acpierst     | Bin 8306 -> 8291 bytes
tests/data/acpi/q35/DSDT.acpihmat     | Bin 9614 -> 9599 bytes
tests/data/acpi/q35/DSDT.applesmc     | Bin 0 -> 8320 bytes
tests/data/acpi/q35/DSDT.bridge       | Bin 11003 -> 10988 bytes
tests/data/acpi/q35/DSDT.cphp         | Bin 8753 -> 8738 bytes
tests/data/acpi/q35/DSDT.dimmpxm      | Bin 9943 -> 9928 bytes
tests/data/acpi/q35/DSDT.ipmibt       | Bin 8364 -> 8349 bytes
tests/data/acpi/q35/DSDT.ipmismbus    | Bin 0 -> 8363 bytes
tests/data/acpi/q35/DSDT.ivrs         | Bin 8306 -> 8291 bytes
tests/data/acpi/q35/DSDT.memhp        | Bin 9648 -> 9633 bytes
tests/data/acpi/q35/DSDT.mmio64       | Bin 9419 -> 9404 bytes
tests/data/acpi/q35/DSDT.multi-bridge | Bin 8583 -> 8568 bytes
tests/data/acpi/q35/DSDT.nohpet       | Bin 8147 -> 8132 bytes
tests/data/acpi/q35/DSDT.numamem      | Bin 8295 -> 8280 bytes
tests/data/acpi/q35/DSDT.pvpanic-isa  | Bin 0 -> 8375 bytes
tests/data/acpi/q35/DSDT.tis.tpm12    | Bin 8900 -> 8880 bytes
tests/data/acpi/q35/DSDT.tis.tpm2     | Bin 8921 -> 8906 bytes
tests/data/acpi/q35/DSDT.viot         | Bin 9398 -> 9383 bytes
tests/data/acpi/q35/DSDT.xapic        | Bin 35652 -> 35637 bytes
tests/qtest/bios-tables-test.c        |  40 ++++++
61 files changed, 360 insertions(+), 239 deletions(-)
create mode 100644 include/hw/acpi/acpi_aml_interface.h
create mode 100644 tests/data/acpi/q35/DSDT.applesmc
create mode 100644 tests/data/acpi/q35/DSDT.ipmismbus
create mode 100644 tests/data/acpi/q35/DSDT.pvpanic-isa
[PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
Posted by Igor Mammedov 1 year, 10 months ago
Series is excerpt form larger refactoring that does
the same for PCI devices, but it's too large at this
point, so I've split off a relatively self-contained
ISA/SMBUS patches into a smaller separate series, and
PCI refactoring will follow up on top of this series
using the same AcpiDevAmlIf interface.

Series consolidates and unifies how pc/q35 machine
generates AML for ISA and SMBUS devices. It adds
a new more generic interface 'AcpiDevAmlIf' that
replaces ISA specific ISADeviceClass::build_aml
hook and should allow to use the same approach
(i.e. ask a device to provide its own AML) but
not limited to ISA bus.
Series applies AcpiDevAmlIf interface to a few
ISA devices that were already using
ISADeviceClass::build_aml and to devices /tpm,
applesmc,pvpanic,ipmi/ that were generated in
custom way. The AML generation for the later
class is normalized to behave like any other
ISA device that were using ISADeviceClass::build_aml
and converted to interface 'AcpiDevAmlIf'.
It simplifies process of building DSDT and
eliminates custom probing/wiring for those devices
as AML for them is generated at the time ISA/SMBUS
is enumerated.

Changes to DSDT tables QEMU generates are mostly
contextual where devices scattered across DSDT
are consolidated under respective device that
hosts bus they are attached to.

PS:
 + series adds several ACPI tests for devices
   that were missing them.

Igor Mammedov (35):
  acpi: add interface to build device specific AML
  acpi: make isa_build_aml() support AcpiDevAmlIf interface
  acpi: fdc-isa: replace ISADeviceClass::build_aml with
    AcpiDevAmlIfClass:build_dev_aml
  acpi: parallel port: replace ISADeviceClass::build_aml with
    AcpiDevAmlIfClass:build_dev_aml
  acpi: serial-is: replace ISADeviceClass::build_aml with
    AcpiDevAmlIfClass:build_dev_aml
  acpi: mc146818rtc: replace ISADeviceClass::build_aml with
    AcpiDevAmlIfClass:build_dev_aml
  acpi: pckbd: replace ISADeviceClass::build_aml with
    AcpiDevAmlIfClass:build_dev_aml
  isa-bus: drop no longer used ISADeviceClass::build_aml
  tests: acpi: add and whitelist DSDT.ipmismbus expected blob
  tests: acpi: q35: add test for smbus-ipmi device
  tests: acpi: update expected blob DSDT.ipmismbus
  tests: acpi: whitelist DSDT.ipmismbus expected blob
  ipmi: acpi: use relative path to resource source
  tests: acpi: update expected DSDT.ipmismbus blob
  acpi: ich9-smb: add support for AcpiDevAmlIf interface
  acpi: ipmi: use AcpiDevAmlIf interface to build IPMI device
    descriptors
  q35: acpi: drop not needed PCMachineClass::do_not_add_smb_acpi
  tests: acpi: white-list to be re-factored pc/q35 DSDT
  acpi: pc: isa bridge: use AcpiDevAmlIf interface to build ISA device
    descriptors
  acpi: q35: isa bridge: use AcpiDevAmlIf interface to build ISA device
    descriptors
  tests: acpi: update expected blobs
  tests: acpi: add and white-list DSDT.applesmc expected blob
  tests: acpi: add applesmc testcase
  acpi: applesmc: use AcpiDevAmlIfClass:build_dev_aml to provide
    device's AML
  tests: acpi: update expected blobs
  tests: acpi: white-lists expected DSDT.pvpanic-isa blob
  tests: acpi: add pvpanic-isa: testcase
  acpi: pvpanic-isa: use AcpiDevAmlIfClass:build_dev_aml to provide
    device's AML
  tests: acpi: update expected DSDT.pvpanic-isa blob
  tests: acpi: white-list DSDT.tis.tpm2/DSDT.tis.tpm12 expected blobs
  acpi: pc/q35: tpm-tis: fix TPM device scope
  acpi: pc/q35: remove not needed 'if' condition on pci bus
  acpi: tpm-tis: use AcpiDevAmlIfClass:build_dev_aml to provide device's
    AML
  tests: acpi: update expected DSDT.tis.tpm2/DSDT.tis.tpm12 blobs
  x86: acpi-build: do not include hw/isa/isa.h directly

 include/hw/acpi/acpi_aml_interface.h  |  40 ++++++
 include/hw/acpi/ipmi.h                |   9 +-
 include/hw/i386/pc.h                  |   1 -
 include/hw/isa/isa.h                  |  15 ---
 include/hw/misc/pvpanic.h             |   9 --
 hw/acpi/acpi_interface.c              |   8 ++
 hw/acpi/ipmi-stub.c                   |   2 +-
 hw/acpi/ipmi.c                        |  53 +++-----
 hw/acpi/meson.build                   |   2 +-
 hw/block/fdc-isa.c                    |  16 ++-
 hw/char/parallel.c                    |  14 ++-
 hw/char/serial-isa.c                  |  14 ++-
 hw/i2c/smbus_ich9.c                   |  15 +++
 hw/i386/acpi-build.c                  | 171 ++++++--------------------
 hw/i386/pc_piix.c                     |   1 -
 hw/i386/pc_q35.c                      |   1 -
 hw/input/pckbd.c                      |  14 ++-
 hw/ipmi/isa_ipmi_bt.c                 |   4 +
 hw/ipmi/isa_ipmi_kcs.c                |   4 +
 hw/ipmi/smbus_ipmi.c                  |   4 +
 hw/isa/isa-bus.c                      |   9 +-
 hw/isa/lpc_ich9.c                     |  19 +++
 hw/isa/piix3.c                        |  17 +++
 hw/misc/applesmc.c                    |  29 +++++
 hw/misc/pvpanic-isa.c                 |  42 +++++++
 hw/rtc/mc146818rtc.c                  |  14 ++-
 hw/tpm/tpm_tis_isa.c                  |  32 +++++
 tests/data/acpi/pc/DSDT               | Bin 6002 -> 5987 bytes
 tests/data/acpi/pc/DSDT.acpierst      | Bin 5969 -> 5954 bytes
 tests/data/acpi/pc/DSDT.acpihmat      | Bin 7327 -> 7312 bytes
 tests/data/acpi/pc/DSDT.bridge        | Bin 8668 -> 8653 bytes
 tests/data/acpi/pc/DSDT.cphp          | Bin 6466 -> 6451 bytes
 tests/data/acpi/pc/DSDT.dimmpxm       | Bin 7656 -> 7641 bytes
 tests/data/acpi/pc/DSDT.hpbridge      | Bin 5969 -> 5954 bytes
 tests/data/acpi/pc/DSDT.hpbrroot      | Bin 3084 -> 3069 bytes
 tests/data/acpi/pc/DSDT.ipmikcs       | Bin 6074 -> 6059 bytes
 tests/data/acpi/pc/DSDT.memhp         | Bin 7361 -> 7346 bytes
 tests/data/acpi/pc/DSDT.nohpet        | Bin 5860 -> 5845 bytes
 tests/data/acpi/pc/DSDT.numamem       | Bin 6008 -> 5993 bytes
 tests/data/acpi/pc/DSDT.roothp        | Bin 6210 -> 6195 bytes
 tests/data/acpi/q35/DSDT              | Bin 8289 -> 8274 bytes
 tests/data/acpi/q35/DSDT.acpierst     | Bin 8306 -> 8291 bytes
 tests/data/acpi/q35/DSDT.acpihmat     | Bin 9614 -> 9599 bytes
 tests/data/acpi/q35/DSDT.applesmc     | Bin 0 -> 8320 bytes
 tests/data/acpi/q35/DSDT.bridge       | Bin 11003 -> 10988 bytes
 tests/data/acpi/q35/DSDT.cphp         | Bin 8753 -> 8738 bytes
 tests/data/acpi/q35/DSDT.dimmpxm      | Bin 9943 -> 9928 bytes
 tests/data/acpi/q35/DSDT.ipmibt       | Bin 8364 -> 8349 bytes
 tests/data/acpi/q35/DSDT.ipmismbus    | Bin 0 -> 8363 bytes
 tests/data/acpi/q35/DSDT.ivrs         | Bin 8306 -> 8291 bytes
 tests/data/acpi/q35/DSDT.memhp        | Bin 9648 -> 9633 bytes
 tests/data/acpi/q35/DSDT.mmio64       | Bin 9419 -> 9404 bytes
 tests/data/acpi/q35/DSDT.multi-bridge | Bin 8583 -> 8568 bytes
 tests/data/acpi/q35/DSDT.nohpet       | Bin 8147 -> 8132 bytes
 tests/data/acpi/q35/DSDT.numamem      | Bin 8295 -> 8280 bytes
 tests/data/acpi/q35/DSDT.pvpanic-isa  | Bin 0 -> 8375 bytes
 tests/data/acpi/q35/DSDT.tis.tpm12    | Bin 8900 -> 8880 bytes
 tests/data/acpi/q35/DSDT.tis.tpm2     | Bin 8921 -> 8906 bytes
 tests/data/acpi/q35/DSDT.viot         | Bin 9398 -> 9383 bytes
 tests/data/acpi/q35/DSDT.xapic        | Bin 35652 -> 35637 bytes
 tests/qtest/bios-tables-test.c        |  40 ++++++
 61 files changed, 360 insertions(+), 239 deletions(-)
 create mode 100644 include/hw/acpi/acpi_aml_interface.h
 create mode 100644 tests/data/acpi/q35/DSDT.applesmc
 create mode 100644 tests/data/acpi/q35/DSDT.ipmismbus
 create mode 100644 tests/data/acpi/q35/DSDT.pvpanic-isa

-- 
2.31.1
Re: [PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
Posted by Gerd Hoffmann 1 year, 10 months ago
On Mon, May 16, 2022 at 11:25:35AM -0400, Igor Mammedov wrote:
> 
> Series is excerpt form larger refactoring that does
> the same for PCI devices, but it's too large at this
> point, so I've split off a relatively self-contained
> ISA/SMBUS patches into a smaller separate series, and
> PCI refactoring will follow up on top of this series
> using the same AcpiDevAmlIf interface.
> 
> Series consolidates and unifies how pc/q35 machine
> generates AML for ISA and SMBUS devices. It adds
> a new more generic interface 'AcpiDevAmlIf' that
> replaces ISA specific ISADeviceClass::build_aml
> hook and should allow to use the same approach
> (i.e. ask a device to provide its own AML) but
> not limited to ISA bus.
> Series applies AcpiDevAmlIf interface to a few
> ISA devices that were already using
> ISADeviceClass::build_aml and to devices /tpm,
> applesmc,pvpanic,ipmi/ that were generated in
> custom way. The AML generation for the later
> class is normalized to behave like any other
> ISA device that were using ISADeviceClass::build_aml
> and converted to interface 'AcpiDevAmlIf'.
> It simplifies process of building DSDT and
> eliminates custom probing/wiring for those devices
> as AML for them is generated at the time ISA/SMBUS
> is enumerated.
> 
> Changes to DSDT tables QEMU generates are mostly
> contextual where devices scattered across DSDT
> are consolidated under respective device that
> hosts bus they are attached to.

Promoting the ISADeviceClass::build_aml idea to a more general approach
certainly makes sense.  ISA update is fine.  Skimmed the other updates
too, looks all sane to me.

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

take care,
  Gerd
Re: [PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
Posted by Michael S. Tsirkin 1 year, 10 months ago
On Mon, May 16, 2022 at 11:25:35AM -0400, Igor Mammedov wrote:
> 
> Series is excerpt form larger refactoring that does
> the same for PCI devices, but it's too large at this
> point, so I've split off a relatively self-contained
> ISA/SMBUS patches into a smaller separate series, and
> PCI refactoring will follow up on top of this series
> using the same AcpiDevAmlIf interface.
> 
> Series consolidates and unifies how pc/q35 machine
> generates AML for ISA and SMBUS devices. It adds
> a new more generic interface 'AcpiDevAmlIf' that
> replaces ISA specific ISADeviceClass::build_aml
> hook and should allow to use the same approach
> (i.e. ask a device to provide its own AML) but
> not limited to ISA bus.
> Series applies AcpiDevAmlIf interface to a few
> ISA devices that were already using
> ISADeviceClass::build_aml and to devices /tpm,
> applesmc,pvpanic,ipmi/ that were generated in
> custom way. The AML generation for the later
> class is normalized to behave like any other
> ISA device that were using ISADeviceClass::build_aml
> and converted to interface 'AcpiDevAmlIf'.
> It simplifies process of building DSDT and
> eliminates custom probing/wiring for those devices
> as AML for them is generated at the time ISA/SMBUS
> is enumerated.
> 
> Changes to DSDT tables QEMU generates are mostly
> contextual where devices scattered across DSDT
> are consolidated under respective device that
> hosts bus they are attached to.

I like this. Have one further enhancement idea before
applying this, sent on list.

> PS:
>  + series adds several ACPI tests for devices
>    that were missing them.
> 
> Igor Mammedov (35):
>   acpi: add interface to build device specific AML
>   acpi: make isa_build_aml() support AcpiDevAmlIf interface
>   acpi: fdc-isa: replace ISADeviceClass::build_aml with
>     AcpiDevAmlIfClass:build_dev_aml
>   acpi: parallel port: replace ISADeviceClass::build_aml with
>     AcpiDevAmlIfClass:build_dev_aml
>   acpi: serial-is: replace ISADeviceClass::build_aml with
>     AcpiDevAmlIfClass:build_dev_aml
>   acpi: mc146818rtc: replace ISADeviceClass::build_aml with
>     AcpiDevAmlIfClass:build_dev_aml
>   acpi: pckbd: replace ISADeviceClass::build_aml with
>     AcpiDevAmlIfClass:build_dev_aml
>   isa-bus: drop no longer used ISADeviceClass::build_aml
>   tests: acpi: add and whitelist DSDT.ipmismbus expected blob
>   tests: acpi: q35: add test for smbus-ipmi device
>   tests: acpi: update expected blob DSDT.ipmismbus
>   tests: acpi: whitelist DSDT.ipmismbus expected blob
>   ipmi: acpi: use relative path to resource source
>   tests: acpi: update expected DSDT.ipmismbus blob
>   acpi: ich9-smb: add support for AcpiDevAmlIf interface
>   acpi: ipmi: use AcpiDevAmlIf interface to build IPMI device
>     descriptors
>   q35: acpi: drop not needed PCMachineClass::do_not_add_smb_acpi
>   tests: acpi: white-list to be re-factored pc/q35 DSDT
>   acpi: pc: isa bridge: use AcpiDevAmlIf interface to build ISA device
>     descriptors
>   acpi: q35: isa bridge: use AcpiDevAmlIf interface to build ISA device
>     descriptors
>   tests: acpi: update expected blobs
>   tests: acpi: add and white-list DSDT.applesmc expected blob
>   tests: acpi: add applesmc testcase
>   acpi: applesmc: use AcpiDevAmlIfClass:build_dev_aml to provide
>     device's AML
>   tests: acpi: update expected blobs
>   tests: acpi: white-lists expected DSDT.pvpanic-isa blob
>   tests: acpi: add pvpanic-isa: testcase
>   acpi: pvpanic-isa: use AcpiDevAmlIfClass:build_dev_aml to provide
>     device's AML
>   tests: acpi: update expected DSDT.pvpanic-isa blob
>   tests: acpi: white-list DSDT.tis.tpm2/DSDT.tis.tpm12 expected blobs
>   acpi: pc/q35: tpm-tis: fix TPM device scope
>   acpi: pc/q35: remove not needed 'if' condition on pci bus
>   acpi: tpm-tis: use AcpiDevAmlIfClass:build_dev_aml to provide device's
>     AML
>   tests: acpi: update expected DSDT.tis.tpm2/DSDT.tis.tpm12 blobs
>   x86: acpi-build: do not include hw/isa/isa.h directly
> 
>  include/hw/acpi/acpi_aml_interface.h  |  40 ++++++
>  include/hw/acpi/ipmi.h                |   9 +-
>  include/hw/i386/pc.h                  |   1 -
>  include/hw/isa/isa.h                  |  15 ---
>  include/hw/misc/pvpanic.h             |   9 --
>  hw/acpi/acpi_interface.c              |   8 ++
>  hw/acpi/ipmi-stub.c                   |   2 +-
>  hw/acpi/ipmi.c                        |  53 +++-----
>  hw/acpi/meson.build                   |   2 +-
>  hw/block/fdc-isa.c                    |  16 ++-
>  hw/char/parallel.c                    |  14 ++-
>  hw/char/serial-isa.c                  |  14 ++-
>  hw/i2c/smbus_ich9.c                   |  15 +++
>  hw/i386/acpi-build.c                  | 171 ++++++--------------------
>  hw/i386/pc_piix.c                     |   1 -
>  hw/i386/pc_q35.c                      |   1 -
>  hw/input/pckbd.c                      |  14 ++-
>  hw/ipmi/isa_ipmi_bt.c                 |   4 +
>  hw/ipmi/isa_ipmi_kcs.c                |   4 +
>  hw/ipmi/smbus_ipmi.c                  |   4 +
>  hw/isa/isa-bus.c                      |   9 +-
>  hw/isa/lpc_ich9.c                     |  19 +++
>  hw/isa/piix3.c                        |  17 +++
>  hw/misc/applesmc.c                    |  29 +++++
>  hw/misc/pvpanic-isa.c                 |  42 +++++++
>  hw/rtc/mc146818rtc.c                  |  14 ++-
>  hw/tpm/tpm_tis_isa.c                  |  32 +++++
>  tests/data/acpi/pc/DSDT               | Bin 6002 -> 5987 bytes
>  tests/data/acpi/pc/DSDT.acpierst      | Bin 5969 -> 5954 bytes
>  tests/data/acpi/pc/DSDT.acpihmat      | Bin 7327 -> 7312 bytes
>  tests/data/acpi/pc/DSDT.bridge        | Bin 8668 -> 8653 bytes
>  tests/data/acpi/pc/DSDT.cphp          | Bin 6466 -> 6451 bytes
>  tests/data/acpi/pc/DSDT.dimmpxm       | Bin 7656 -> 7641 bytes
>  tests/data/acpi/pc/DSDT.hpbridge      | Bin 5969 -> 5954 bytes
>  tests/data/acpi/pc/DSDT.hpbrroot      | Bin 3084 -> 3069 bytes
>  tests/data/acpi/pc/DSDT.ipmikcs       | Bin 6074 -> 6059 bytes
>  tests/data/acpi/pc/DSDT.memhp         | Bin 7361 -> 7346 bytes
>  tests/data/acpi/pc/DSDT.nohpet        | Bin 5860 -> 5845 bytes
>  tests/data/acpi/pc/DSDT.numamem       | Bin 6008 -> 5993 bytes
>  tests/data/acpi/pc/DSDT.roothp        | Bin 6210 -> 6195 bytes
>  tests/data/acpi/q35/DSDT              | Bin 8289 -> 8274 bytes
>  tests/data/acpi/q35/DSDT.acpierst     | Bin 8306 -> 8291 bytes
>  tests/data/acpi/q35/DSDT.acpihmat     | Bin 9614 -> 9599 bytes
>  tests/data/acpi/q35/DSDT.applesmc     | Bin 0 -> 8320 bytes
>  tests/data/acpi/q35/DSDT.bridge       | Bin 11003 -> 10988 bytes
>  tests/data/acpi/q35/DSDT.cphp         | Bin 8753 -> 8738 bytes
>  tests/data/acpi/q35/DSDT.dimmpxm      | Bin 9943 -> 9928 bytes
>  tests/data/acpi/q35/DSDT.ipmibt       | Bin 8364 -> 8349 bytes
>  tests/data/acpi/q35/DSDT.ipmismbus    | Bin 0 -> 8363 bytes
>  tests/data/acpi/q35/DSDT.ivrs         | Bin 8306 -> 8291 bytes
>  tests/data/acpi/q35/DSDT.memhp        | Bin 9648 -> 9633 bytes
>  tests/data/acpi/q35/DSDT.mmio64       | Bin 9419 -> 9404 bytes
>  tests/data/acpi/q35/DSDT.multi-bridge | Bin 8583 -> 8568 bytes
>  tests/data/acpi/q35/DSDT.nohpet       | Bin 8147 -> 8132 bytes
>  tests/data/acpi/q35/DSDT.numamem      | Bin 8295 -> 8280 bytes
>  tests/data/acpi/q35/DSDT.pvpanic-isa  | Bin 0 -> 8375 bytes
>  tests/data/acpi/q35/DSDT.tis.tpm12    | Bin 8900 -> 8880 bytes
>  tests/data/acpi/q35/DSDT.tis.tpm2     | Bin 8921 -> 8906 bytes
>  tests/data/acpi/q35/DSDT.viot         | Bin 9398 -> 9383 bytes
>  tests/data/acpi/q35/DSDT.xapic        | Bin 35652 -> 35637 bytes
>  tests/qtest/bios-tables-test.c        |  40 ++++++
>  61 files changed, 360 insertions(+), 239 deletions(-)
>  create mode 100644 include/hw/acpi/acpi_aml_interface.h
>  create mode 100644 tests/data/acpi/q35/DSDT.applesmc
>  create mode 100644 tests/data/acpi/q35/DSDT.ipmismbus
>  create mode 100644 tests/data/acpi/q35/DSDT.pvpanic-isa
> 
> -- 
> 2.31.1
Re: [PATCH 00/35] pc/q35: refactor ISA and SMBUS AML generation
Posted by Igor Mammedov 1 year, 10 months ago
On Mon, 16 May 2022 16:47:20 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Mon, May 16, 2022 at 11:25:35AM -0400, Igor Mammedov wrote:
> > 
> > Series is excerpt form larger refactoring that does
> > the same for PCI devices, but it's too large at this
> > point, so I've split off a relatively self-contained
> > ISA/SMBUS patches into a smaller separate series, and
> > PCI refactoring will follow up on top of this series
> > using the same AcpiDevAmlIf interface.
> > 
> > Series consolidates and unifies how pc/q35 machine
> > generates AML for ISA and SMBUS devices. It adds
> > a new more generic interface 'AcpiDevAmlIf' that
> > replaces ISA specific ISADeviceClass::build_aml
> > hook and should allow to use the same approach
> > (i.e. ask a device to provide its own AML) but
> > not limited to ISA bus.
> > Series applies AcpiDevAmlIf interface to a few
> > ISA devices that were already using
> > ISADeviceClass::build_aml and to devices /tpm,
> > applesmc,pvpanic,ipmi/ that were generated in
> > custom way. The AML generation for the later
> > class is normalized to behave like any other
> > ISA device that were using ISADeviceClass::build_aml
> > and converted to interface 'AcpiDevAmlIf'.
> > It simplifies process of building DSDT and
> > eliminates custom probing/wiring for those devices
> > as AML for them is generated at the time ISA/SMBUS
> > is enumerated.
> > 
> > Changes to DSDT tables QEMU generates are mostly
> > contextual where devices scattered across DSDT
> > are consolidated under respective device that
> > hosts bus they are attached to.  
> 
> I like this. Have one further enhancement idea before
> applying this, sent on list.

I'd prefer to implement that enhancement on top of this
series (and may be on top of follow up PCI conversion)
if we have to do it (as the enhancement would be a bit
of off-topic churn, i.e. solving another issue that we
already have).

> > PS:
> >  + series adds several ACPI tests for devices
> >    that were missing them.
> > 
> > Igor Mammedov (35):
> >   acpi: add interface to build device specific AML
> >   acpi: make isa_build_aml() support AcpiDevAmlIf interface
> >   acpi: fdc-isa: replace ISADeviceClass::build_aml with
> >     AcpiDevAmlIfClass:build_dev_aml
> >   acpi: parallel port: replace ISADeviceClass::build_aml with
> >     AcpiDevAmlIfClass:build_dev_aml
> >   acpi: serial-is: replace ISADeviceClass::build_aml with
> >     AcpiDevAmlIfClass:build_dev_aml
> >   acpi: mc146818rtc: replace ISADeviceClass::build_aml with
> >     AcpiDevAmlIfClass:build_dev_aml
> >   acpi: pckbd: replace ISADeviceClass::build_aml with
> >     AcpiDevAmlIfClass:build_dev_aml
> >   isa-bus: drop no longer used ISADeviceClass::build_aml
> >   tests: acpi: add and whitelist DSDT.ipmismbus expected blob
> >   tests: acpi: q35: add test for smbus-ipmi device
> >   tests: acpi: update expected blob DSDT.ipmismbus
> >   tests: acpi: whitelist DSDT.ipmismbus expected blob
> >   ipmi: acpi: use relative path to resource source
> >   tests: acpi: update expected DSDT.ipmismbus blob
> >   acpi: ich9-smb: add support for AcpiDevAmlIf interface
> >   acpi: ipmi: use AcpiDevAmlIf interface to build IPMI device
> >     descriptors
> >   q35: acpi: drop not needed PCMachineClass::do_not_add_smb_acpi
> >   tests: acpi: white-list to be re-factored pc/q35 DSDT
> >   acpi: pc: isa bridge: use AcpiDevAmlIf interface to build ISA device
> >     descriptors
> >   acpi: q35: isa bridge: use AcpiDevAmlIf interface to build ISA device
> >     descriptors
> >   tests: acpi: update expected blobs
> >   tests: acpi: add and white-list DSDT.applesmc expected blob
> >   tests: acpi: add applesmc testcase
> >   acpi: applesmc: use AcpiDevAmlIfClass:build_dev_aml to provide
> >     device's AML
> >   tests: acpi: update expected blobs
> >   tests: acpi: white-lists expected DSDT.pvpanic-isa blob
> >   tests: acpi: add pvpanic-isa: testcase
> >   acpi: pvpanic-isa: use AcpiDevAmlIfClass:build_dev_aml to provide
> >     device's AML
> >   tests: acpi: update expected DSDT.pvpanic-isa blob
> >   tests: acpi: white-list DSDT.tis.tpm2/DSDT.tis.tpm12 expected blobs
> >   acpi: pc/q35: tpm-tis: fix TPM device scope
> >   acpi: pc/q35: remove not needed 'if' condition on pci bus
> >   acpi: tpm-tis: use AcpiDevAmlIfClass:build_dev_aml to provide device's
> >     AML
> >   tests: acpi: update expected DSDT.tis.tpm2/DSDT.tis.tpm12 blobs
> >   x86: acpi-build: do not include hw/isa/isa.h directly
> > 
> >  include/hw/acpi/acpi_aml_interface.h  |  40 ++++++
> >  include/hw/acpi/ipmi.h                |   9 +-
> >  include/hw/i386/pc.h                  |   1 -
> >  include/hw/isa/isa.h                  |  15 ---
> >  include/hw/misc/pvpanic.h             |   9 --
> >  hw/acpi/acpi_interface.c              |   8 ++
> >  hw/acpi/ipmi-stub.c                   |   2 +-
> >  hw/acpi/ipmi.c                        |  53 +++-----
> >  hw/acpi/meson.build                   |   2 +-
> >  hw/block/fdc-isa.c                    |  16 ++-
> >  hw/char/parallel.c                    |  14 ++-
> >  hw/char/serial-isa.c                  |  14 ++-
> >  hw/i2c/smbus_ich9.c                   |  15 +++
> >  hw/i386/acpi-build.c                  | 171 ++++++--------------------
> >  hw/i386/pc_piix.c                     |   1 -
> >  hw/i386/pc_q35.c                      |   1 -
> >  hw/input/pckbd.c                      |  14 ++-
> >  hw/ipmi/isa_ipmi_bt.c                 |   4 +
> >  hw/ipmi/isa_ipmi_kcs.c                |   4 +
> >  hw/ipmi/smbus_ipmi.c                  |   4 +
> >  hw/isa/isa-bus.c                      |   9 +-
> >  hw/isa/lpc_ich9.c                     |  19 +++
> >  hw/isa/piix3.c                        |  17 +++
> >  hw/misc/applesmc.c                    |  29 +++++
> >  hw/misc/pvpanic-isa.c                 |  42 +++++++
> >  hw/rtc/mc146818rtc.c                  |  14 ++-
> >  hw/tpm/tpm_tis_isa.c                  |  32 +++++
> >  tests/data/acpi/pc/DSDT               | Bin 6002 -> 5987 bytes
> >  tests/data/acpi/pc/DSDT.acpierst      | Bin 5969 -> 5954 bytes
> >  tests/data/acpi/pc/DSDT.acpihmat      | Bin 7327 -> 7312 bytes
> >  tests/data/acpi/pc/DSDT.bridge        | Bin 8668 -> 8653 bytes
> >  tests/data/acpi/pc/DSDT.cphp          | Bin 6466 -> 6451 bytes
> >  tests/data/acpi/pc/DSDT.dimmpxm       | Bin 7656 -> 7641 bytes
> >  tests/data/acpi/pc/DSDT.hpbridge      | Bin 5969 -> 5954 bytes
> >  tests/data/acpi/pc/DSDT.hpbrroot      | Bin 3084 -> 3069 bytes
> >  tests/data/acpi/pc/DSDT.ipmikcs       | Bin 6074 -> 6059 bytes
> >  tests/data/acpi/pc/DSDT.memhp         | Bin 7361 -> 7346 bytes
> >  tests/data/acpi/pc/DSDT.nohpet        | Bin 5860 -> 5845 bytes
> >  tests/data/acpi/pc/DSDT.numamem       | Bin 6008 -> 5993 bytes
> >  tests/data/acpi/pc/DSDT.roothp        | Bin 6210 -> 6195 bytes
> >  tests/data/acpi/q35/DSDT              | Bin 8289 -> 8274 bytes
> >  tests/data/acpi/q35/DSDT.acpierst     | Bin 8306 -> 8291 bytes
> >  tests/data/acpi/q35/DSDT.acpihmat     | Bin 9614 -> 9599 bytes
> >  tests/data/acpi/q35/DSDT.applesmc     | Bin 0 -> 8320 bytes
> >  tests/data/acpi/q35/DSDT.bridge       | Bin 11003 -> 10988 bytes
> >  tests/data/acpi/q35/DSDT.cphp         | Bin 8753 -> 8738 bytes
> >  tests/data/acpi/q35/DSDT.dimmpxm      | Bin 9943 -> 9928 bytes
> >  tests/data/acpi/q35/DSDT.ipmibt       | Bin 8364 -> 8349 bytes
> >  tests/data/acpi/q35/DSDT.ipmismbus    | Bin 0 -> 8363 bytes
> >  tests/data/acpi/q35/DSDT.ivrs         | Bin 8306 -> 8291 bytes
> >  tests/data/acpi/q35/DSDT.memhp        | Bin 9648 -> 9633 bytes
> >  tests/data/acpi/q35/DSDT.mmio64       | Bin 9419 -> 9404 bytes
> >  tests/data/acpi/q35/DSDT.multi-bridge | Bin 8583 -> 8568 bytes
> >  tests/data/acpi/q35/DSDT.nohpet       | Bin 8147 -> 8132 bytes
> >  tests/data/acpi/q35/DSDT.numamem      | Bin 8295 -> 8280 bytes
> >  tests/data/acpi/q35/DSDT.pvpanic-isa  | Bin 0 -> 8375 bytes
> >  tests/data/acpi/q35/DSDT.tis.tpm12    | Bin 8900 -> 8880 bytes
> >  tests/data/acpi/q35/DSDT.tis.tpm2     | Bin 8921 -> 8906 bytes
> >  tests/data/acpi/q35/DSDT.viot         | Bin 9398 -> 9383 bytes
> >  tests/data/acpi/q35/DSDT.xapic        | Bin 35652 -> 35637 bytes
> >  tests/qtest/bios-tables-test.c        |  40 ++++++
> >  61 files changed, 360 insertions(+), 239 deletions(-)
> >  create mode 100644 include/hw/acpi/acpi_aml_interface.h
> >  create mode 100644 tests/data/acpi/q35/DSDT.applesmc
> >  create mode 100644 tests/data/acpi/q35/DSDT.ipmismbus
> >  create mode 100644 tests/data/acpi/q35/DSDT.pvpanic-isa
> > 
> > -- 
> > 2.31.1  
>