[PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots

Igor Mammedov posted 33 patches 1 year, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230224153812.4176226-1-imammedo@redhat.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <ani@anisinha.ca>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Aurelien Jarno <aurelien@aurel32.net>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, "Daniel P. Berrangé" <berrange@redhat.com>
There is a newer version of this series
include/hw/acpi/ich9.h                        |   1 +
include/hw/acpi/pcihp.h                       |  11 +-
include/hw/acpi/piix4.h                       |   2 -
include/hw/hotplug.h                          |   2 +
include/hw/qdev-core.h                        |  13 +-
hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
hw/acpi/ich9.c                                |  21 +-
hw/acpi/pci-bridge.c                          |  14 +-
hw/acpi/pcihp.c                               | 112 +++--------
hw/acpi/piix4.c                               |  33 ++--
hw/i386/acpi-build.c                          | 179 +++++++++++++-----
hw/isa/lpc_ich9.c                             |   1 +
hw/pci/pci.c                                  |  57 ++++++
hw/pci/pcie_port.c                            |   8 +
tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
tests/qtest/bios-tables-test.c                |  50 ++++-
52 files changed, 341 insertions(+), 172 deletions(-)
create mode 100644 tests/data/acpi/q35/DSDT.noacpihp
[PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots
Posted by Igor Mammedov 1 year, 2 months ago
Series extends acpi-index support to host-bridge(s) and bridges
with disabled hotplug (either explicitly or implicitly).
Whats new (it is still limited to 'pc' and 'q35' machines),
acpi-index now works for non-hotpluggable slots/nics:
 * q35: host-bridge
 * pc: host-bridge with disabled hotplug
       'PIIX4_PM.acpi-root-pci-hotplug=off'
 * non-hotpluggable multifunction nics
 * on non-hotpluggable slots with native hotplug (i.e. without ACPI PCI hotplug)
       PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off
       ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
     + pcie-root-port,hotplug=off | pci-bridge,shpc=off

where it doesn't work (and never will):
 * on hotplugged ports/bridges
 * on hotpluggable ports/bridges with native hotplug

1-11/33:  fixes for bugs or odd behavior
13-23/33: non-hotplug/multifunction acpi-index enabling
28-33/33: cleanups 
all of that is peppered by extra acpi tests or extensions to existing ones

Somewhat tested with RHEL9.0 and WS2022.

What's in queue:
 * PXB support 
 * microvm and arm/virt support
all of above only for non-hotpluggable slots as I don't really want to
pull there complicated APCI PCI hotplug.

gitlab tree: https://gitlab.com/imammedo/qemu/-/tree/acpi_index_non_hotplug
CI: https://gitlab.com/imammedo/qemu/-/pipelines/787263630
 it's red but only due to unrelated curl breakage in msys* targets,
 the rest is green

Igor Mammedov (33):
  tests: acpi: whitelist new q35.noacpihp test and pc.hpbrroot
  tests: acpi: add test_acpi_q35_tcg_no_acpi_hotplug test and extend
    test_acpi_piix4_no_acpi_pci_hotplug
  tests: acpi: update expected blobs
  tests: acpi: whitelist q35/DSDT.multi-bridge before extending testcase
  tests: acpi: extend multi-bridge case with case
    'root-port,id=HOHP,hotplug=off root-port,bus=NOHP'
  x86: pcihp: fix missing PCNT callchain when intermediate root-port has
    'hotplug=off' set
  tests: acpi: whitelist pc/DSDT.hpbrroot and pc/DSDT.hpbridge tests
  x86: pcihp: fix missing bridge AML when intermediate root-port has
    'hotplug=off' set
  tests: acpi: update expected blobs
  pcihp: piix4: do not redirect hotplug controller to piix4 when ACPI
    hotplug is disabled
  pci: fix 'hotplugglable' property behavior
  tests: acpi: whitelist DSDT blobs before isolating PCI _DSM func 0
    prolog
  pcihp: move PCI _DSM function 0 prolog into separate function
  tests: acpi: update expected blobs
  tests: acpi: whitelist DSDT before adding EDSM method
  acpi: pci: add EDSM method to DSDT
  tests: acpi: update expected blobs
  tests: acpi: whitelist DSDT before adding device with acpi-index to
    testcases
  tests: acpi: add device with acpi-index on non-hotpluggble bus
  acpi: pci: support acpi-index for non-hotpluggable devices
  tests: acpi: update expected blobs
  tests: acpi: whitelist DSDT before exposing non zero functions
  acpi: pci: describe all functions on populated slots
  tests: acpi: update expected blobs
  tests: acpi: whitelist DSDT before adding non-0 function device with
    acpi-index to testcases
  tests: acpi: add non zero function device with acpi-index on
    non-hotpluggble bus
  tests: acpi: update expected blobs
  pci: move acpi-index uniqueness check to generic PCI device code
  acpi: pci: drop BSEL usage when deciding that device isn't
    hotpluggable
  acpi: pci: move BSEL into build_append_pcihp_slots()
  acpi: pci: move out ACPI PCI hotplug generator from generic slot
    generator build_append_pci_bus_devices()
  pcihp: move fields enabling hotplug into AcpiPciHpState
  pcihp: add ACPI PCI hotplug specific is_hotpluggable_bus() callback

 include/hw/acpi/ich9.h                        |   1 +
 include/hw/acpi/pcihp.h                       |  11 +-
 include/hw/acpi/piix4.h                       |   2 -
 include/hw/hotplug.h                          |   2 +
 include/hw/qdev-core.h                        |  13 +-
 hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
 hw/acpi/ich9.c                                |  21 +-
 hw/acpi/pci-bridge.c                          |  14 +-
 hw/acpi/pcihp.c                               | 112 +++--------
 hw/acpi/piix4.c                               |  33 ++--
 hw/i386/acpi-build.c                          | 179 +++++++++++++-----
 hw/isa/lpc_ich9.c                             |   1 +
 hw/pci/pci.c                                  |  57 ++++++
 hw/pci/pcie_port.c                            |   8 +
 tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
 tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
 tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
 tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
 tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
 tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
 tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
 tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
 tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
 tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
 tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
 tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
 tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
 tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
 tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
 tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
 tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
 tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
 tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
 tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
 tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
 tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
 tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
 tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
 tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
 tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
 tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
 tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
 tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
 tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
 tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
 tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
 tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
 tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
 tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
 tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
 tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
 tests/qtest/bios-tables-test.c                |  50 ++++-
 52 files changed, 341 insertions(+), 172 deletions(-)
 create mode 100644 tests/data/acpi/q35/DSDT.noacpihp

-- 
2.39.1
Re: [PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots
Posted by Michael S. Tsirkin 1 year, 1 month ago
On Fri, Feb 24, 2023 at 04:37:39PM +0100, Igor Mammedov wrote:
> Series extends acpi-index support to host-bridge(s) and bridges
> with disabled hotplug (either explicitly or implicitly).
> Whats new (it is still limited to 'pc' and 'q35' machines),
> acpi-index now works for non-hotpluggable slots/nics:
>  * q35: host-bridge
>  * pc: host-bridge with disabled hotplug
>        'PIIX4_PM.acpi-root-pci-hotplug=off'
>  * non-hotpluggable multifunction nics
>  * on non-hotpluggable slots with native hotplug (i.e. without ACPI PCI hotplug)
>        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off
>        ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
>      + pcie-root-port,hotplug=off | pci-bridge,shpc=off
> 
> where it doesn't work (and never will):
>  * on hotplugged ports/bridges
>  * on hotpluggable ports/bridges with native hotplug
> 
> 1-11/33:  fixes for bugs or odd behavior
> 13-23/33: non-hotplug/multifunction acpi-index enabling
> 28-33/33: cleanups 
> all of that is peppered by extra acpi tests or extensions to existing ones

dropped because viot was wrong.
Pls rebase fix up and repost.


Apropos I still think we should split up DSDT to several
SSDTs, in a way that multiple tests share some SSDTs.
This way it will be more common than a change only affects one table
and it's easier to merge things.

For example, how about moving CXL things to an SSDT?


> Somewhat tested with RHEL9.0 and WS2022.
> 
> What's in queue:
>  * PXB support 
>  * microvm and arm/virt support
> all of above only for non-hotpluggable slots as I don't really want to
> pull there complicated APCI PCI hotplug.
> 
> gitlab tree: https://gitlab.com/imammedo/qemu/-/tree/acpi_index_non_hotplug
> CI: https://gitlab.com/imammedo/qemu/-/pipelines/787263630
>  it's red but only due to unrelated curl breakage in msys* targets,
>  the rest is green
> 
> Igor Mammedov (33):
>   tests: acpi: whitelist new q35.noacpihp test and pc.hpbrroot
>   tests: acpi: add test_acpi_q35_tcg_no_acpi_hotplug test and extend
>     test_acpi_piix4_no_acpi_pci_hotplug
>   tests: acpi: update expected blobs
>   tests: acpi: whitelist q35/DSDT.multi-bridge before extending testcase
>   tests: acpi: extend multi-bridge case with case
>     'root-port,id=HOHP,hotplug=off root-port,bus=NOHP'
>   x86: pcihp: fix missing PCNT callchain when intermediate root-port has
>     'hotplug=off' set
>   tests: acpi: whitelist pc/DSDT.hpbrroot and pc/DSDT.hpbridge tests
>   x86: pcihp: fix missing bridge AML when intermediate root-port has
>     'hotplug=off' set
>   tests: acpi: update expected blobs
>   pcihp: piix4: do not redirect hotplug controller to piix4 when ACPI
>     hotplug is disabled
>   pci: fix 'hotplugglable' property behavior
>   tests: acpi: whitelist DSDT blobs before isolating PCI _DSM func 0
>     prolog
>   pcihp: move PCI _DSM function 0 prolog into separate function
>   tests: acpi: update expected blobs
>   tests: acpi: whitelist DSDT before adding EDSM method
>   acpi: pci: add EDSM method to DSDT
>   tests: acpi: update expected blobs
>   tests: acpi: whitelist DSDT before adding device with acpi-index to
>     testcases
>   tests: acpi: add device with acpi-index on non-hotpluggble bus
>   acpi: pci: support acpi-index for non-hotpluggable devices
>   tests: acpi: update expected blobs
>   tests: acpi: whitelist DSDT before exposing non zero functions
>   acpi: pci: describe all functions on populated slots
>   tests: acpi: update expected blobs
>   tests: acpi: whitelist DSDT before adding non-0 function device with
>     acpi-index to testcases
>   tests: acpi: add non zero function device with acpi-index on
>     non-hotpluggble bus
>   tests: acpi: update expected blobs
>   pci: move acpi-index uniqueness check to generic PCI device code
>   acpi: pci: drop BSEL usage when deciding that device isn't
>     hotpluggable
>   acpi: pci: move BSEL into build_append_pcihp_slots()
>   acpi: pci: move out ACPI PCI hotplug generator from generic slot
>     generator build_append_pci_bus_devices()
>   pcihp: move fields enabling hotplug into AcpiPciHpState
>   pcihp: add ACPI PCI hotplug specific is_hotpluggable_bus() callback
> 
>  include/hw/acpi/ich9.h                        |   1 +
>  include/hw/acpi/pcihp.h                       |  11 +-
>  include/hw/acpi/piix4.h                       |   2 -
>  include/hw/hotplug.h                          |   2 +
>  include/hw/qdev-core.h                        |  13 +-
>  hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
>  hw/acpi/ich9.c                                |  21 +-
>  hw/acpi/pci-bridge.c                          |  14 +-
>  hw/acpi/pcihp.c                               | 112 +++--------
>  hw/acpi/piix4.c                               |  33 ++--
>  hw/i386/acpi-build.c                          | 179 +++++++++++++-----
>  hw/isa/lpc_ich9.c                             |   1 +
>  hw/pci/pci.c                                  |  57 ++++++
>  hw/pci/pcie_port.c                            |   8 +
>  tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
>  tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
>  tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
>  tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
>  tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
>  tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
>  tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
>  tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
>  tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
>  tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
>  tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
>  tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
>  tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
>  tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
>  tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
>  tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
>  tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
>  tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
>  tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
>  tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
>  tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
>  tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
>  tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
>  tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
>  tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
>  tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
>  tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
>  tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
>  tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
>  tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
>  tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
>  tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
>  tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
>  tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
>  tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
>  tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
>  tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
>  tests/qtest/bios-tables-test.c                |  50 ++++-
>  52 files changed, 341 insertions(+), 172 deletions(-)
>  create mode 100644 tests/data/acpi/q35/DSDT.noacpihp
> 
> -- 
> 2.39.1
Re: [PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots
Posted by Igor Mammedov 1 year, 1 month ago
On Thu, 2 Mar 2023 05:59:16 -0500
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Fri, Feb 24, 2023 at 04:37:39PM +0100, Igor Mammedov wrote:
> > Series extends acpi-index support to host-bridge(s) and bridges
> > with disabled hotplug (either explicitly or implicitly).
> > Whats new (it is still limited to 'pc' and 'q35' machines),
> > acpi-index now works for non-hotpluggable slots/nics:
> >  * q35: host-bridge
> >  * pc: host-bridge with disabled hotplug
> >        'PIIX4_PM.acpi-root-pci-hotplug=off'
> >  * non-hotpluggable multifunction nics
> >  * on non-hotpluggable slots with native hotplug (i.e. without ACPI PCI hotplug)
> >        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off
> >        ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
> >      + pcie-root-port,hotplug=off | pci-bridge,shpc=off
> > 
> > where it doesn't work (and never will):
> >  * on hotplugged ports/bridges
> >  * on hotpluggable ports/bridges with native hotplug
> > 
> > 1-11/33:  fixes for bugs or odd behavior
> > 13-23/33: non-hotplug/multifunction acpi-index enabling
> > 28-33/33: cleanups 
> > all of that is peppered by extra acpi tests or extensions to existing ones  
> 
> dropped because viot was wrong.
> Pls rebase fix up and repost.

I'll rebase on top of your recent pull req with c471eb4f4044 commit reverted
to get properly updated tables.
Partial table rebuilds are fragile anyways, should we make rebuild ignore
checks the commit introduced?

PS:
Does the rest of the series look fine to you?


> 
> 
> Apropos I still think we should split up DSDT to several
> SSDTs, in a way that multiple tests share some SSDTs.
> This way it will be more common than a change only affects one table
> and it's easier to merge things.
> 
> For example, how about moving CXL things to an SSDT?
> 
> 
> > Somewhat tested with RHEL9.0 and WS2022.
> > 
> > What's in queue:
> >  * PXB support 
> >  * microvm and arm/virt support
> > all of above only for non-hotpluggable slots as I don't really want to
> > pull there complicated APCI PCI hotplug.
> > 
> > gitlab tree: https://gitlab.com/imammedo/qemu/-/tree/acpi_index_non_hotplug
> > CI: https://gitlab.com/imammedo/qemu/-/pipelines/787263630
> >  it's red but only due to unrelated curl breakage in msys* targets,
> >  the rest is green
> > 
> > Igor Mammedov (33):
> >   tests: acpi: whitelist new q35.noacpihp test and pc.hpbrroot
> >   tests: acpi: add test_acpi_q35_tcg_no_acpi_hotplug test and extend
> >     test_acpi_piix4_no_acpi_pci_hotplug
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist q35/DSDT.multi-bridge before extending testcase
> >   tests: acpi: extend multi-bridge case with case
> >     'root-port,id=HOHP,hotplug=off root-port,bus=NOHP'
> >   x86: pcihp: fix missing PCNT callchain when intermediate root-port has
> >     'hotplug=off' set
> >   tests: acpi: whitelist pc/DSDT.hpbrroot and pc/DSDT.hpbridge tests
> >   x86: pcihp: fix missing bridge AML when intermediate root-port has
> >     'hotplug=off' set
> >   tests: acpi: update expected blobs
> >   pcihp: piix4: do not redirect hotplug controller to piix4 when ACPI
> >     hotplug is disabled
> >   pci: fix 'hotplugglable' property behavior
> >   tests: acpi: whitelist DSDT blobs before isolating PCI _DSM func 0
> >     prolog
> >   pcihp: move PCI _DSM function 0 prolog into separate function
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before adding EDSM method
> >   acpi: pci: add EDSM method to DSDT
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before adding device with acpi-index to
> >     testcases
> >   tests: acpi: add device with acpi-index on non-hotpluggble bus
> >   acpi: pci: support acpi-index for non-hotpluggable devices
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before exposing non zero functions
> >   acpi: pci: describe all functions on populated slots
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before adding non-0 function device with
> >     acpi-index to testcases
> >   tests: acpi: add non zero function device with acpi-index on
> >     non-hotpluggble bus
> >   tests: acpi: update expected blobs
> >   pci: move acpi-index uniqueness check to generic PCI device code
> >   acpi: pci: drop BSEL usage when deciding that device isn't
> >     hotpluggable
> >   acpi: pci: move BSEL into build_append_pcihp_slots()
> >   acpi: pci: move out ACPI PCI hotplug generator from generic slot
> >     generator build_append_pci_bus_devices()
> >   pcihp: move fields enabling hotplug into AcpiPciHpState
> >   pcihp: add ACPI PCI hotplug specific is_hotpluggable_bus() callback
> > 
> >  include/hw/acpi/ich9.h                        |   1 +
> >  include/hw/acpi/pcihp.h                       |  11 +-
> >  include/hw/acpi/piix4.h                       |   2 -
> >  include/hw/hotplug.h                          |   2 +
> >  include/hw/qdev-core.h                        |  13 +-
> >  hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
> >  hw/acpi/ich9.c                                |  21 +-
> >  hw/acpi/pci-bridge.c                          |  14 +-
> >  hw/acpi/pcihp.c                               | 112 +++--------
> >  hw/acpi/piix4.c                               |  33 ++--
> >  hw/i386/acpi-build.c                          | 179 +++++++++++++-----
> >  hw/isa/lpc_ich9.c                             |   1 +
> >  hw/pci/pci.c                                  |  57 ++++++
> >  hw/pci/pcie_port.c                            |   8 +
> >  tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
> >  tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
> >  tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
> >  tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
> >  tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
> >  tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
> >  tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
> >  tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
> >  tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
> >  tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
> >  tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
> >  tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
> >  tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
> >  tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
> >  tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
> >  tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
> >  tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
> >  tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
> >  tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
> >  tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
> >  tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
> >  tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
> >  tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
> >  tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
> >  tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
> >  tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
> >  tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
> >  tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
> >  tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
> >  tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
> >  tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
> >  tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
> >  tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
> >  tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
> >  tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
> >  tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
> >  tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
> >  tests/qtest/bios-tables-test.c                |  50 ++++-
> >  52 files changed, 341 insertions(+), 172 deletions(-)
> >  create mode 100644 tests/data/acpi/q35/DSDT.noacpihp
> > 
> > -- 
> > 2.39.1  
>
Re: [PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots
Posted by Michael S. Tsirkin 1 year, 1 month ago
On Thu, Mar 02, 2023 at 01:07:16PM +0100, Igor Mammedov wrote:
> On Thu, 2 Mar 2023 05:59:16 -0500
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Fri, Feb 24, 2023 at 04:37:39PM +0100, Igor Mammedov wrote:
> > > Series extends acpi-index support to host-bridge(s) and bridges
> > > with disabled hotplug (either explicitly or implicitly).
> > > Whats new (it is still limited to 'pc' and 'q35' machines),
> > > acpi-index now works for non-hotpluggable slots/nics:
> > >  * q35: host-bridge
> > >  * pc: host-bridge with disabled hotplug
> > >        'PIIX4_PM.acpi-root-pci-hotplug=off'
> > >  * non-hotpluggable multifunction nics
> > >  * on non-hotpluggable slots with native hotplug (i.e. without ACPI PCI hotplug)
> > >        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off
> > >        ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
> > >      + pcie-root-port,hotplug=off | pci-bridge,shpc=off
> > > 
> > > where it doesn't work (and never will):
> > >  * on hotplugged ports/bridges
> > >  * on hotpluggable ports/bridges with native hotplug
> > > 
> > > 1-11/33:  fixes for bugs or odd behavior
> > > 13-23/33: non-hotplug/multifunction acpi-index enabling
> > > 28-33/33: cleanups 
> > > all of that is peppered by extra acpi tests or extensions to existing ones  
> > 
> > dropped because viot was wrong.
> > Pls rebase fix up and repost.
> 
> I'll rebase on top of your recent pull req with c471eb4f4044 commit reverted
> to get properly updated tables.
> Partial table rebuilds are fragile anyways, should we make rebuild ignore
> checks the commit introduced?

Not sure how you mean.

> PS:
> Does the rest of the series look fine to you?

It does, was going to merge.

> 
> > 
> > 
> > Apropos I still think we should split up DSDT to several
> > SSDTs, in a way that multiple tests share some SSDTs.
> > This way it will be more common than a change only affects one table
> > and it's easier to merge things.
> > 
> > For example, how about moving CXL things to an SSDT?
> > 
> > 
> > > Somewhat tested with RHEL9.0 and WS2022.
> > > 
> > > What's in queue:
> > >  * PXB support 
> > >  * microvm and arm/virt support
> > > all of above only for non-hotpluggable slots as I don't really want to
> > > pull there complicated APCI PCI hotplug.
> > > 
> > > gitlab tree: https://gitlab.com/imammedo/qemu/-/tree/acpi_index_non_hotplug
> > > CI: https://gitlab.com/imammedo/qemu/-/pipelines/787263630
> > >  it's red but only due to unrelated curl breakage in msys* targets,
> > >  the rest is green
> > > 
> > > Igor Mammedov (33):
> > >   tests: acpi: whitelist new q35.noacpihp test and pc.hpbrroot
> > >   tests: acpi: add test_acpi_q35_tcg_no_acpi_hotplug test and extend
> > >     test_acpi_piix4_no_acpi_pci_hotplug
> > >   tests: acpi: update expected blobs
> > >   tests: acpi: whitelist q35/DSDT.multi-bridge before extending testcase
> > >   tests: acpi: extend multi-bridge case with case
> > >     'root-port,id=HOHP,hotplug=off root-port,bus=NOHP'
> > >   x86: pcihp: fix missing PCNT callchain when intermediate root-port has
> > >     'hotplug=off' set
> > >   tests: acpi: whitelist pc/DSDT.hpbrroot and pc/DSDT.hpbridge tests
> > >   x86: pcihp: fix missing bridge AML when intermediate root-port has
> > >     'hotplug=off' set
> > >   tests: acpi: update expected blobs
> > >   pcihp: piix4: do not redirect hotplug controller to piix4 when ACPI
> > >     hotplug is disabled
> > >   pci: fix 'hotplugglable' property behavior
> > >   tests: acpi: whitelist DSDT blobs before isolating PCI _DSM func 0
> > >     prolog
> > >   pcihp: move PCI _DSM function 0 prolog into separate function
> > >   tests: acpi: update expected blobs
> > >   tests: acpi: whitelist DSDT before adding EDSM method
> > >   acpi: pci: add EDSM method to DSDT
> > >   tests: acpi: update expected blobs
> > >   tests: acpi: whitelist DSDT before adding device with acpi-index to
> > >     testcases
> > >   tests: acpi: add device with acpi-index on non-hotpluggble bus
> > >   acpi: pci: support acpi-index for non-hotpluggable devices
> > >   tests: acpi: update expected blobs
> > >   tests: acpi: whitelist DSDT before exposing non zero functions
> > >   acpi: pci: describe all functions on populated slots
> > >   tests: acpi: update expected blobs
> > >   tests: acpi: whitelist DSDT before adding non-0 function device with
> > >     acpi-index to testcases
> > >   tests: acpi: add non zero function device with acpi-index on
> > >     non-hotpluggble bus
> > >   tests: acpi: update expected blobs
> > >   pci: move acpi-index uniqueness check to generic PCI device code
> > >   acpi: pci: drop BSEL usage when deciding that device isn't
> > >     hotpluggable
> > >   acpi: pci: move BSEL into build_append_pcihp_slots()
> > >   acpi: pci: move out ACPI PCI hotplug generator from generic slot
> > >     generator build_append_pci_bus_devices()
> > >   pcihp: move fields enabling hotplug into AcpiPciHpState
> > >   pcihp: add ACPI PCI hotplug specific is_hotpluggable_bus() callback
> > > 
> > >  include/hw/acpi/ich9.h                        |   1 +
> > >  include/hw/acpi/pcihp.h                       |  11 +-
> > >  include/hw/acpi/piix4.h                       |   2 -
> > >  include/hw/hotplug.h                          |   2 +
> > >  include/hw/qdev-core.h                        |  13 +-
> > >  hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
> > >  hw/acpi/ich9.c                                |  21 +-
> > >  hw/acpi/pci-bridge.c                          |  14 +-
> > >  hw/acpi/pcihp.c                               | 112 +++--------
> > >  hw/acpi/piix4.c                               |  33 ++--
> > >  hw/i386/acpi-build.c                          | 179 +++++++++++++-----
> > >  hw/isa/lpc_ich9.c                             |   1 +
> > >  hw/pci/pci.c                                  |  57 ++++++
> > >  hw/pci/pcie_port.c                            |   8 +
> > >  tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
> > >  tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
> > >  tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
> > >  tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
> > >  tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
> > >  tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
> > >  tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
> > >  tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
> > >  tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
> > >  tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
> > >  tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
> > >  tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
> > >  tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
> > >  tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
> > >  tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
> > >  tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
> > >  tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
> > >  tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
> > >  tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
> > >  tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
> > >  tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
> > >  tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
> > >  tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
> > >  tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
> > >  tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
> > >  tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
> > >  tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
> > >  tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
> > >  tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
> > >  tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
> > >  tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
> > >  tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
> > >  tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
> > >  tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
> > >  tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
> > >  tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
> > >  tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
> > >  tests/qtest/bios-tables-test.c                |  50 ++++-
> > >  52 files changed, 341 insertions(+), 172 deletions(-)
> > >  create mode 100644 tests/data/acpi/q35/DSDT.noacpihp
> > > 
> > > -- 
> > > 2.39.1  
> >
Re: [PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots
Posted by Igor Mammedov 1 year, 1 month ago
On Thu, 2 Mar 2023 18:21:28 -0500
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Mar 02, 2023 at 01:07:16PM +0100, Igor Mammedov wrote:
> > On Thu, 2 Mar 2023 05:59:16 -0500
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Fri, Feb 24, 2023 at 04:37:39PM +0100, Igor Mammedov wrote:  
> > > > Series extends acpi-index support to host-bridge(s) and bridges
> > > > with disabled hotplug (either explicitly or implicitly).
> > > > Whats new (it is still limited to 'pc' and 'q35' machines),
> > > > acpi-index now works for non-hotpluggable slots/nics:
> > > >  * q35: host-bridge
> > > >  * pc: host-bridge with disabled hotplug
> > > >        'PIIX4_PM.acpi-root-pci-hotplug=off'
> > > >  * non-hotpluggable multifunction nics
> > > >  * on non-hotpluggable slots with native hotplug (i.e. without ACPI PCI hotplug)
> > > >        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off
> > > >        ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
> > > >      + pcie-root-port,hotplug=off | pci-bridge,shpc=off
> > > > 
> > > > where it doesn't work (and never will):
> > > >  * on hotplugged ports/bridges
> > > >  * on hotpluggable ports/bridges with native hotplug
> > > > 
> > > > 1-11/33:  fixes for bugs or odd behavior
> > > > 13-23/33: non-hotplug/multifunction acpi-index enabling
> > > > 28-33/33: cleanups 
> > > > all of that is peppered by extra acpi tests or extensions to existing ones    
> > > 
> > > dropped because viot was wrong.
> > > Pls rebase fix up and repost.  
> > 
> > I'll rebase on top of your recent pull req with c471eb4f4044 commit reverted
> > to get properly updated tables.
> > Partial table rebuilds are fragile anyways, should we make rebuild ignore
> > checks the commit introduced?  
> 
> Not sure how you mean.

I'm not sure either, but I ended up reverting offending commit
as Fabiano suggested for now and rebasing on top your tree + revert.

Later on if we are to reintroduce selective testcases, we need to
think about how to make tables rebuild force all tests regardless
of it.

> 
> > PS:
> > Does the rest of the series look fine to you?  
> 
> It does, was going to merge.
> 
> >   
> > > 
> > > 
> > > Apropos I still think we should split up DSDT to several
> > > SSDTs, in a way that multiple tests share some SSDTs.
> > > This way it will be more common than a change only affects one table
> > > and it's easier to merge things.
> > > 
> > > For example, how about moving CXL things to an SSDT?
> > > 
> > >   
> > > > Somewhat tested with RHEL9.0 and WS2022.
> > > > 
> > > > What's in queue:
> > > >  * PXB support 
> > > >  * microvm and arm/virt support
> > > > all of above only for non-hotpluggable slots as I don't really want to
> > > > pull there complicated APCI PCI hotplug.
> > > > 
> > > > gitlab tree: https://gitlab.com/imammedo/qemu/-/tree/acpi_index_non_hotplug
> > > > CI: https://gitlab.com/imammedo/qemu/-/pipelines/787263630
> > > >  it's red but only due to unrelated curl breakage in msys* targets,
> > > >  the rest is green
> > > > 
> > > > Igor Mammedov (33):
> > > >   tests: acpi: whitelist new q35.noacpihp test and pc.hpbrroot
> > > >   tests: acpi: add test_acpi_q35_tcg_no_acpi_hotplug test and extend
> > > >     test_acpi_piix4_no_acpi_pci_hotplug
> > > >   tests: acpi: update expected blobs
> > > >   tests: acpi: whitelist q35/DSDT.multi-bridge before extending testcase
> > > >   tests: acpi: extend multi-bridge case with case
> > > >     'root-port,id=HOHP,hotplug=off root-port,bus=NOHP'
> > > >   x86: pcihp: fix missing PCNT callchain when intermediate root-port has
> > > >     'hotplug=off' set
> > > >   tests: acpi: whitelist pc/DSDT.hpbrroot and pc/DSDT.hpbridge tests
> > > >   x86: pcihp: fix missing bridge AML when intermediate root-port has
> > > >     'hotplug=off' set
> > > >   tests: acpi: update expected blobs
> > > >   pcihp: piix4: do not redirect hotplug controller to piix4 when ACPI
> > > >     hotplug is disabled
> > > >   pci: fix 'hotplugglable' property behavior
> > > >   tests: acpi: whitelist DSDT blobs before isolating PCI _DSM func 0
> > > >     prolog
> > > >   pcihp: move PCI _DSM function 0 prolog into separate function
> > > >   tests: acpi: update expected blobs
> > > >   tests: acpi: whitelist DSDT before adding EDSM method
> > > >   acpi: pci: add EDSM method to DSDT
> > > >   tests: acpi: update expected blobs
> > > >   tests: acpi: whitelist DSDT before adding device with acpi-index to
> > > >     testcases
> > > >   tests: acpi: add device with acpi-index on non-hotpluggble bus
> > > >   acpi: pci: support acpi-index for non-hotpluggable devices
> > > >   tests: acpi: update expected blobs
> > > >   tests: acpi: whitelist DSDT before exposing non zero functions
> > > >   acpi: pci: describe all functions on populated slots
> > > >   tests: acpi: update expected blobs
> > > >   tests: acpi: whitelist DSDT before adding non-0 function device with
> > > >     acpi-index to testcases
> > > >   tests: acpi: add non zero function device with acpi-index on
> > > >     non-hotpluggble bus
> > > >   tests: acpi: update expected blobs
> > > >   pci: move acpi-index uniqueness check to generic PCI device code
> > > >   acpi: pci: drop BSEL usage when deciding that device isn't
> > > >     hotpluggable
> > > >   acpi: pci: move BSEL into build_append_pcihp_slots()
> > > >   acpi: pci: move out ACPI PCI hotplug generator from generic slot
> > > >     generator build_append_pci_bus_devices()
> > > >   pcihp: move fields enabling hotplug into AcpiPciHpState
> > > >   pcihp: add ACPI PCI hotplug specific is_hotpluggable_bus() callback
> > > > 
> > > >  include/hw/acpi/ich9.h                        |   1 +
> > > >  include/hw/acpi/pcihp.h                       |  11 +-
> > > >  include/hw/acpi/piix4.h                       |   2 -
> > > >  include/hw/hotplug.h                          |   2 +
> > > >  include/hw/qdev-core.h                        |  13 +-
> > > >  hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
> > > >  hw/acpi/ich9.c                                |  21 +-
> > > >  hw/acpi/pci-bridge.c                          |  14 +-
> > > >  hw/acpi/pcihp.c                               | 112 +++--------
> > > >  hw/acpi/piix4.c                               |  33 ++--
> > > >  hw/i386/acpi-build.c                          | 179 +++++++++++++-----
> > > >  hw/isa/lpc_ich9.c                             |   1 +
> > > >  hw/pci/pci.c                                  |  57 ++++++
> > > >  hw/pci/pcie_port.c                            |   8 +
> > > >  tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
> > > >  tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
> > > >  tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
> > > >  tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
> > > >  tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
> > > >  tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
> > > >  tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
> > > >  tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
> > > >  tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
> > > >  tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
> > > >  tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
> > > >  tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
> > > >  tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
> > > >  tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
> > > >  tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
> > > >  tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
> > > >  tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
> > > >  tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
> > > >  tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
> > > >  tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
> > > >  tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
> > > >  tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
> > > >  tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
> > > >  tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
> > > >  tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
> > > >  tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
> > > >  tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
> > > >  tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
> > > >  tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
> > > >  tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
> > > >  tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
> > > >  tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
> > > >  tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
> > > >  tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
> > > >  tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
> > > >  tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
> > > >  tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
> > > >  tests/qtest/bios-tables-test.c                |  50 ++++-
> > > >  52 files changed, 341 insertions(+), 172 deletions(-)
> > > >  create mode 100644 tests/data/acpi/q35/DSDT.noacpihp
> > > > 
> > > > -- 
> > > > 2.39.1    
> > >   
>
Re: [PATCH 00/33] pci(pc/q35): acpi-index support on non-hotpluggable slots
Posted by Jonathan Cameron via 1 year, 1 month ago
On Thu, 2 Mar 2023 05:59:16 -0500
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Fri, Feb 24, 2023 at 04:37:39PM +0100, Igor Mammedov wrote:
> > Series extends acpi-index support to host-bridge(s) and bridges
> > with disabled hotplug (either explicitly or implicitly).
> > Whats new (it is still limited to 'pc' and 'q35' machines),
> > acpi-index now works for non-hotpluggable slots/nics:
> >  * q35: host-bridge
> >  * pc: host-bridge with disabled hotplug
> >        'PIIX4_PM.acpi-root-pci-hotplug=off'
> >  * non-hotpluggable multifunction nics
> >  * on non-hotpluggable slots with native hotplug (i.e. without ACPI PCI hotplug)
> >        PIIX4_PM.acpi-pci-hotplug-with-bridge-support=off
> >        ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
> >      + pcie-root-port,hotplug=off | pci-bridge,shpc=off
> > 
> > where it doesn't work (and never will):
> >  * on hotplugged ports/bridges
> >  * on hotpluggable ports/bridges with native hotplug
> > 
> > 1-11/33:  fixes for bugs or odd behavior
> > 13-23/33: non-hotplug/multifunction acpi-index enabling
> > 28-33/33: cleanups 
> > all of that is peppered by extra acpi tests or extensions to existing ones  
> 
> dropped because viot was wrong.
> Pls rebase fix up and repost.
> 
> 
> Apropos I still think we should split up DSDT to several
> SSDTs, in a way that multiple tests share some SSDTs.
> This way it will be more common than a change only affects one table
> and it's easier to merge things.
> 
> For example, how about moving CXL things to an SSDT?

I'll take a look at that, though given CXL doesn't have that much in DSDT that
is different from pxb-pcie (it is set to grow a bit, but just by one _DSM)
and the code is currently mixed up, it may make more sense to pull out both CXL
and PXB into a single SSDT.

I'm definitely keen on less churn in these files given it's not the
easiest thing to sort out if you care carrying a lot of patches out of
tree as we currently are for CXL.

Jonathan 

> 
> 
> > Somewhat tested with RHEL9.0 and WS2022.
> > 
> > What's in queue:
> >  * PXB support 
> >  * microvm and arm/virt support
> > all of above only for non-hotpluggable slots as I don't really want to
> > pull there complicated APCI PCI hotplug.
> > 
> > gitlab tree: https://gitlab.com/imammedo/qemu/-/tree/acpi_index_non_hotplug
> > CI: https://gitlab.com/imammedo/qemu/-/pipelines/787263630
> >  it's red but only due to unrelated curl breakage in msys* targets,
> >  the rest is green
> > 
> > Igor Mammedov (33):
> >   tests: acpi: whitelist new q35.noacpihp test and pc.hpbrroot
> >   tests: acpi: add test_acpi_q35_tcg_no_acpi_hotplug test and extend
> >     test_acpi_piix4_no_acpi_pci_hotplug
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist q35/DSDT.multi-bridge before extending testcase
> >   tests: acpi: extend multi-bridge case with case
> >     'root-port,id=HOHP,hotplug=off root-port,bus=NOHP'
> >   x86: pcihp: fix missing PCNT callchain when intermediate root-port has
> >     'hotplug=off' set
> >   tests: acpi: whitelist pc/DSDT.hpbrroot and pc/DSDT.hpbridge tests
> >   x86: pcihp: fix missing bridge AML when intermediate root-port has
> >     'hotplug=off' set
> >   tests: acpi: update expected blobs
> >   pcihp: piix4: do not redirect hotplug controller to piix4 when ACPI
> >     hotplug is disabled
> >   pci: fix 'hotplugglable' property behavior
> >   tests: acpi: whitelist DSDT blobs before isolating PCI _DSM func 0
> >     prolog
> >   pcihp: move PCI _DSM function 0 prolog into separate function
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before adding EDSM method
> >   acpi: pci: add EDSM method to DSDT
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before adding device with acpi-index to
> >     testcases
> >   tests: acpi: add device with acpi-index on non-hotpluggble bus
> >   acpi: pci: support acpi-index for non-hotpluggable devices
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before exposing non zero functions
> >   acpi: pci: describe all functions on populated slots
> >   tests: acpi: update expected blobs
> >   tests: acpi: whitelist DSDT before adding non-0 function device with
> >     acpi-index to testcases
> >   tests: acpi: add non zero function device with acpi-index on
> >     non-hotpluggble bus
> >   tests: acpi: update expected blobs
> >   pci: move acpi-index uniqueness check to generic PCI device code
> >   acpi: pci: drop BSEL usage when deciding that device isn't
> >     hotpluggable
> >   acpi: pci: move BSEL into build_append_pcihp_slots()
> >   acpi: pci: move out ACPI PCI hotplug generator from generic slot
> >     generator build_append_pci_bus_devices()
> >   pcihp: move fields enabling hotplug into AcpiPciHpState
> >   pcihp: add ACPI PCI hotplug specific is_hotpluggable_bus() callback
> > 
> >  include/hw/acpi/ich9.h                        |   1 +
> >  include/hw/acpi/pcihp.h                       |  11 +-
> >  include/hw/acpi/piix4.h                       |   2 -
> >  include/hw/hotplug.h                          |   2 +
> >  include/hw/qdev-core.h                        |  13 +-
> >  hw/acpi/acpi-pci-hotplug-stub.c               |   9 +-
> >  hw/acpi/ich9.c                                |  21 +-
> >  hw/acpi/pci-bridge.c                          |  14 +-
> >  hw/acpi/pcihp.c                               | 112 +++--------
> >  hw/acpi/piix4.c                               |  33 ++--
> >  hw/i386/acpi-build.c                          | 179 +++++++++++++-----
> >  hw/isa/lpc_ich9.c                             |   1 +
> >  hw/pci/pci.c                                  |  57 ++++++
> >  hw/pci/pcie_port.c                            |   8 +
> >  tests/data/acpi/pc/DSDT                       | Bin 6360 -> 6488 bytes
> >  tests/data/acpi/pc/DSDT.acpierst              | Bin 6283 -> 6411 bytes
> >  tests/data/acpi/pc/DSDT.acpihmat              | Bin 7685 -> 7813 bytes
> >  tests/data/acpi/pc/DSDT.bridge                | Bin 12487 -> 12615 bytes
> >  tests/data/acpi/pc/DSDT.cphp                  | Bin 6824 -> 6952 bytes
> >  tests/data/acpi/pc/DSDT.dimmpxm               | Bin 8014 -> 8142 bytes
> >  tests/data/acpi/pc/DSDT.hpbridge              | Bin 6289 -> 6451 bytes
> >  tests/data/acpi/pc/DSDT.hpbrroot              | Bin 3081 -> 3343 bytes
> >  tests/data/acpi/pc/DSDT.ipmikcs               | Bin 6432 -> 6560 bytes
> >  tests/data/acpi/pc/DSDT.memhp                 | Bin 7719 -> 7847 bytes
> >  tests/data/acpi/pc/DSDT.nohpet                | Bin 6218 -> 6346 bytes
> >  tests/data/acpi/pc/DSDT.numamem               | Bin 6366 -> 6494 bytes
> >  tests/data/acpi/pc/DSDT.roothp                | Bin 9745 -> 9873 bytes
> >  tests/data/acpi/q35/DSDT                      | Bin 8252 -> 8361 bytes
> >  tests/data/acpi/q35/DSDT.acpierst             | Bin 8269 -> 8378 bytes
> >  tests/data/acpi/q35/DSDT.acpihmat             | Bin 9577 -> 9686 bytes
> >  tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8531 -> 8640 bytes
> >  tests/data/acpi/q35/DSDT.applesmc             | Bin 8298 -> 8407 bytes
> >  tests/data/acpi/q35/DSDT.bridge               | Bin 11481 -> 11590 bytes
> >  tests/data/acpi/q35/DSDT.core-count2          | Bin 32392 -> 32501 bytes
> >  tests/data/acpi/q35/DSDT.cphp                 | Bin 8716 -> 8825 bytes
> >  tests/data/acpi/q35/DSDT.cxl                  | Bin 9578 -> 9687 bytes
> >  tests/data/acpi/q35/DSDT.dimmpxm              | Bin 9906 -> 10015 bytes
> >  tests/data/acpi/q35/DSDT.ipmibt               | Bin 8327 -> 8436 bytes
> >  tests/data/acpi/q35/DSDT.ipmismbus            | Bin 8340 -> 8449 bytes
> >  tests/data/acpi/q35/DSDT.ivrs                 | Bin 8269 -> 8378 bytes
> >  tests/data/acpi/q35/DSDT.memhp                | Bin 9611 -> 9720 bytes
> >  tests/data/acpi/q35/DSDT.mmio64               | Bin 9382 -> 9491 bytes
> >  tests/data/acpi/q35/DSDT.multi-bridge         | Bin 12337 -> 12770 bytes
> >  tests/data/acpi/q35/DSDT.noacpihp             | Bin 0 -> 8248 bytes
> >  tests/data/acpi/q35/DSDT.nohpet               | Bin 8110 -> 8219 bytes
> >  tests/data/acpi/q35/DSDT.numamem              | Bin 8258 -> 8367 bytes
> >  tests/data/acpi/q35/DSDT.pvpanic-isa          | Bin 8353 -> 8462 bytes
> >  tests/data/acpi/q35/DSDT.tis.tpm12            | Bin 8858 -> 8967 bytes
> >  tests/data/acpi/q35/DSDT.tis.tpm2             | Bin 8884 -> 8993 bytes
> >  tests/data/acpi/q35/DSDT.viot                 | Bin 9361 -> 9486 bytes
> >  tests/data/acpi/q35/DSDT.xapic                | Bin 35615 -> 35724 bytes
> >  tests/qtest/bios-tables-test.c                |  50 ++++-
> >  52 files changed, 341 insertions(+), 172 deletions(-)
> >  create mode 100644 tests/data/acpi/q35/DSDT.noacpihp
> > 
> > -- 
> > 2.39.1  
> 
>