[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/40] x86: fixing and cleaning up ACPI PCI code part 3
From: |
Igor Mammedov |
Subject: |
[PATCH 00/40] x86: fixing and cleaning up ACPI PCI code part 3 |
Date: |
Thu, 12 Jan 2023 15:02:32 +0100 |
Series continues refactoring on top of [1].
It focuses on isolating creation of non hotplug and
hotplug slot descriptions. In state it's posted, it's
not complete, but pretty close to it. The series contains
stable patches from refactoring and is already too large
to keep it to myself, hence I'm publishing it fro review.
It will be followed by separate series on top of this one,
that will finish concrete feature[s] in following order:
1 introduce acpi-index support for non-hotpluggable PCI
devices (i.e. NICs directly attached to Q35 host-bridge)
making acpi-index support complete within pc/q35 machines.
2 let guest OS to re-arrange bridge resources when ACPI PCI
hotplug is enabled. (should fix insuficient resources issue
during PCI hotplug)
3 finish isolating hotplug code from non-hotplug one,
which should allow to re-use non-hotplug parts in other
machines (arm/virt and microvm) and bring acpi-index
support there.
PS:
Refactoring also adds testing for various corner cases
and fixes (present/latent/imagined) bugs where they were
spotted.
1) "[PATCH 00/11] x86: clean up ACPI PCI code part 2"
https://www.mail-archive.com/qemu-devel@nongnu.org/msg915493.html
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Ani Sinha <ani@anisinha.ca>
Igor Mammedov (40):
tests: qtest: print device_add error before failing test
tests: acpi: cleanup arguments to make them more readable
tests: acpi: whitelist DSDT blobs for tests that use pci-bridges
tests: acpi: extend pcihp with nested bridges
tests: acpi: update expected blobs
tests: acpi: cleanup use_uefi argument usage
pci_bridge: remove whitespace
x86: acpi: pcihp: clean up duplicate bridge_in_acpi assignment
pci: acpi hotplug: rename x-native-hotplug to
x-do-not-expose-native-hotplug-cap
pcihp: piix4: do not call acpi_pcihp_reset() when ACPI PCI hotplug is
disabled
pci: acpihp: assign BSEL only to coldplugged bridges
x86: pcihp: fix invalid AML PCNT calls to hotplugged bridges
tests: boot_sector_test: avoid crashing if status is not available yet
tests: acpi: extend bridge tests with hotplugged bridges
tests: boot_sector_test(): make it multi-shot
tests: acpi: add reboot cycle to bridge test
tests: acpi: whitelist DSDT before refactoring acpi based PCI hotplug
machinery
pcihp: drop pcihp_bridge_en dependency when composing PCNT method
tests: acpi: update expected blobs
tests: acpi: whitelist DSDT before refactoring acpi based PCI hotplug
machinery
pcihp: compose PCNT callchain right before its user _GPE._E01
pcihp: do not put empty PCNT in DSDT
tests: acpi: update expected blobs
whitelist DSDT before adding endpoint devices to bridge testcases
tests: acpi: add endpoint devices to bridges
tests: acpi: update expected blobs
x86: pcihp: acpi: prepare slot ignore rule to work with self
describing bridges
pci: acpi: wire up AcpiDevAmlIf interface to generic bridge
pcihp: make bridge describe itself using
AcpiDevAmlIfClass:build_dev_aml
pci: make sure pci_bus_is_express() won't error out with "discards
‘const’ qualifier"
pcihp: isolate rule whether slot should be described in DSDT
tests: acpi: whitelist DSDT before decoupling PCI hotplug code from
basic slots description
pcihp: acpi: decouple hotplug and generic slots description
tests: acpi: update expected blobs
tests: acpi: whitelist DSDT blobs before removing dynamic _DSM on
coldplugged bridges
pcihp: acpi: ignore coldplugged bridges when composing hotpluggable
slots
tests: acpi: update expected blobs
tests: acpi: whitelist DSDT before moving non-hotpluggble slots
description from hotplug path
pcihp: generate populated non-hotpluggble slot descriptions on
non-hotplug path
tests: acpi: update expected blobs
include/hw/acpi/pci.h | 4 +
include/hw/pci/pci.h | 2 +-
include/hw/pci/pcie_port.h | 3 +-
hw/acpi/Kconfig | 4 +
hw/acpi/meson.build | 4 +-
hw/acpi/pci-bridge-stub.c | 20 ++
hw/acpi/pci-bridge.c | 27 ++
hw/acpi/pcihp.c | 35 ++-
hw/acpi/piix4.c | 4 +-
hw/i386/Kconfig | 1 +
hw/i386/acpi-build.c | 279 ++++++++++--------
hw/i386/pc_q35.c | 5 +-
hw/pci-bridge/gen_pcie_root_port.c | 7 +-
hw/pci-bridge/pci_bridge_dev.c | 1 -
hw/pci/pci.c | 2 +-
hw/pci/pci_bridge.c | 14 +
hw/pci/pcie.c | 6 +-
hw/pci/pcie_port.c | 3 +-
tests/data/acpi/pc/DSDT | Bin 6458 -> 6360 bytes
tests/data/acpi/pc/DSDT.acpierst | Bin 6418 -> 6283 bytes
tests/data/acpi/pc/DSDT.acpihmat | Bin 7783 -> 7685 bytes
tests/data/acpi/pc/DSDT.bridge | Bin 9532 -> 12487 bytes
tests/data/acpi/pc/DSDT.cphp | Bin 6922 -> 6824 bytes
tests/data/acpi/pc/DSDT.dimmpxm | Bin 8112 -> 8014 bytes
tests/data/acpi/pc/DSDT.hpbridge | Bin 6418 -> 6289 bytes
tests/data/acpi/pc/DSDT.hpbrroot | Bin 3064 -> 3081 bytes
tests/data/acpi/pc/DSDT.ipmikcs | Bin 6530 -> 6432 bytes
tests/data/acpi/pc/DSDT.memhp | Bin 7817 -> 7719 bytes
tests/data/acpi/pc/DSDT.nohpet | Bin 6316 -> 6218 bytes
tests/data/acpi/pc/DSDT.numamem | Bin 6464 -> 6366 bytes
tests/data/acpi/pc/DSDT.roothp | Bin 6656 -> 9745 bytes
tests/data/acpi/q35/DSDT | Bin 8310 -> 8252 bytes
tests/data/acpi/q35/DSDT.acpierst | Bin 8327 -> 8269 bytes
tests/data/acpi/q35/DSDT.acpihmat | Bin 9635 -> 9577 bytes
tests/data/acpi/q35/DSDT.acpihmat-noinitiator | Bin 8589 -> 8531 bytes
tests/data/acpi/q35/DSDT.applesmc | Bin 8356 -> 8298 bytes
tests/data/acpi/q35/DSDT.bridge | Bin 11439 -> 11481 bytes
tests/data/acpi/q35/DSDT.core-count2 | Bin 32450 -> 32392 bytes
tests/data/acpi/q35/DSDT.cphp | Bin 8774 -> 8716 bytes
tests/data/acpi/q35/DSDT.cxl | Bin 9636 -> 9578 bytes
tests/data/acpi/q35/DSDT.dimmpxm | Bin 9964 -> 9906 bytes
tests/data/acpi/q35/DSDT.ipmibt | Bin 8385 -> 8327 bytes
tests/data/acpi/q35/DSDT.ipmismbus | Bin 8398 -> 8340 bytes
tests/data/acpi/q35/DSDT.ivrs | Bin 8327 -> 8269 bytes
tests/data/acpi/q35/DSDT.memhp | Bin 9669 -> 9611 bytes
tests/data/acpi/q35/DSDT.mmio64 | Bin 9440 -> 9382 bytes
tests/data/acpi/q35/DSDT.multi-bridge | Bin 8630 -> 12337 bytes
tests/data/acpi/q35/DSDT.nohpet | Bin 8168 -> 8110 bytes
tests/data/acpi/q35/DSDT.numamem | Bin 8316 -> 8258 bytes
tests/data/acpi/q35/DSDT.pvpanic-isa | Bin 8411 -> 8353 bytes
tests/data/acpi/q35/DSDT.tis.tpm12 | Bin 8916 -> 8858 bytes
tests/data/acpi/q35/DSDT.tis.tpm2 | Bin 8942 -> 8884 bytes
tests/data/acpi/q35/DSDT.viot | Bin 9419 -> 9361 bytes
tests/data/acpi/q35/DSDT.xapic | Bin 35673 -> 35615 bytes
tests/qtest/bios-tables-test.c | 144 ++++++---
tests/qtest/boot-sector.c | 6 +-
tests/qtest/libqtest.c | 4 +
57 files changed, 394 insertions(+), 181 deletions(-)
create mode 100644 hw/acpi/pci-bridge-stub.c
create mode 100644 hw/acpi/pci-bridge.c
--
2.31.1
- [PATCH 00/40] x86: fixing and cleaning up ACPI PCI code part 3,
Igor Mammedov <=
- [PATCH 05/40] tests: acpi: update expected blobs, Igor Mammedov, 2023/01/12
- [PATCH 02/40] tests: acpi: cleanup arguments to make them more readable, Igor Mammedov, 2023/01/12
- [PATCH 18/40] pcihp: drop pcihp_bridge_en dependency when composing PCNT method, Igor Mammedov, 2023/01/12
- [PATCH 11/40] pci: acpihp: assign BSEL only to coldplugged bridges, Igor Mammedov, 2023/01/12
- [PATCH 27/40] x86: pcihp: acpi: prepare slot ignore rule to work with self describing bridges, Igor Mammedov, 2023/01/12
- [PATCH 15/40] tests: boot_sector_test(): make it multi-shot, Igor Mammedov, 2023/01/12
- [PATCH 03/40] tests: acpi: whitelist DSDT blobs for tests that use pci-bridges, Igor Mammedov, 2023/01/12
- [PATCH 09/40] pci: acpi hotplug: rename x-native-hotplug to x-do-not-expose-native-hotplug-cap, Igor Mammedov, 2023/01/12
- [PATCH 14/40] tests: acpi: extend bridge tests with hotplugged bridges, Igor Mammedov, 2023/01/12
- [PATCH 08/40] x86: acpi: pcihp: clean up duplicate bridge_in_acpi assignment, Igor Mammedov, 2023/01/12