hw/i386/acpi-build.h | 4 - include/hw/acpi/generic_event_device.h | 17 +- include/hw/acpi/pci.h | 5 +- include/hw/acpi/pcihp.h | 17 +- include/hw/arm/virt.h | 1 + include/hw/pci-host/gpex.h | 1 + include/hw/sysbus.h | 1 + hw/acpi/acpi-pci-hotplug-stub.c | 2 +- hw/acpi/generic_event_device.c | 77 +++ hw/acpi/ich9.c | 7 +- hw/acpi/pci-bridge.c | 54 ++ hw/acpi/pci.c | 50 ++ hw/acpi/pcihp.c | 439 ++++++++++++++- hw/acpi/piix4.c | 5 +- hw/arm/virt-acpi-build.c | 38 ++ hw/arm/virt.c | 27 +- hw/core/sysbus.c | 11 + hw/i386/acpi-build.c | 532 +----------------- hw/pci-host/gpex-acpi.c | 74 +-- tests/qtest/bios-tables-test.c | 53 ++ hw/arm/Kconfig | 2 + hw/pci-host/Kconfig | 1 + tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes .../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes 32 files changed, 811 insertions(+), 607 deletions(-) create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot
This series enables ACPI PCI hotplug/hotunplug on ARM.
It is not enabled by default and ACPI PCI hotplug can
be selected by setting:
-global acpi-ged.acpi-pci-hotplug-with-bridge-support=on
Expected benefits should be similar to those listed in [1],
ie. removal of some racy behaviors, improved latencies.
The infrastructure used in x86 is heavily reused and a
huge part of the series consists in moving code from
hw/i386/acpi-build.c to a generic place and slightly
adapting it to make it usable on ARM. The DSDT table is
augmented to support ACPI PCI hotplug elements.
On ARM we use use a GED event to notify the OS about
hotplug events.
Best Regards
Eric
This series can be found at:
https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v7
previous series:
https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v6
History:
v6 -> v7:
- rebased after minor contextual conflict introduced
by "hw/arm/virt: Basic CXL enablement on pci_expander_bridge
instances pxb-cxl" in hw/arm/virt-acpi-build.c
(hw/pci-host/gpex-acpi: Use GED acpi pcihp property)
- collected last Igor's and Prasad's R-bs
v5 -> v6:
- collected Jonathan's R-bs
- cropped last 2 patch commit messages (Jonathan)
v4 -> v5:
- Collected Jonathan's R-bs (many thanks!)
- fixed the tests/qtest/bios-tables-test issue by
creating a variant for the viot test
- use the 3 phase reset API
- fixed qom-test failures that were due to unconditionnal
fetches of the GED property
v3 -> v4:
- toook into account all comments on v3
- static acpi-index is now supported unconditionally
from acpi pcihp option. See indiviual patches.
- I hit a problem with ref block generation at
[19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference
blobs: despite I regenerate the blobs, I get some errors.
v2 -> v3:
- lot of changes taking into account various feedbacks
(many thanks to all reviewers). Please refer to
individual patches for details. Main changes:
- no more machine option, acpi pci hp is not set by
default.
- removal of 2 unused variables in the osc method
- introduction of GED property to set the bus
- rework of the init/reset sequence
- fix virtio-mem-pci hotplug regression
v1 -> v2:
- collected a bunch of R-bs from Gustavo (many thanks!)
- Fixed the breakage of bios-tables-test in TCG mode by
incorporating Gustavo's patches (part of
[PATCH 0/5] ACPI tests for PCI Hotplug on ARM
https://lore.kernel.org/all/20250526053123.1434204-1-gustavo.romero@linaro.org/)
- Tweeked the dsdt aml changes to avoid any dsdt blob difference when
acpi-pcihp is off.
RFC -> v1:
- First 3 trivial patches were pulled separately
- Fix of the register region size (0x18), ie. ACPI_PCIHP_SIZE
- addition of aml_pci_edsm which was not called in RFC
- acpi-index feature is now fixed. vms->bus was not set on
acpi_pcihp_init. The init sequence is still hacky though. Suggestions
are welcome.
[1] [PATCH v6 0/6] Use ACPI PCI hot-plug for Q35
https://lore.kernel.org/all/20210713004205.775386-1-jusual@redhat.com/
Eric Auger (32):
hw/i386/acpi-build: Make aml_pci_device_dsm() static
hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp
hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to
acpi_dsdt_add_pci_osc
hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation
hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property
hw/pci-host/gpex-acpi: Use GED acpi pcihp property
hw/i386/acpi-build: Turn build_q35_osc_method into a generic method
hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method
tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change
hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper
hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug
hw/i386/acpi-build: Move build_append_notification_callback to pcihp
hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots to
pcihp
hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info
hw/i386/acpi-build: Move aml_pci_edsm to a generic place
qtest/bios-tables-test: Prepare for fixing the aarch64 viot test
qtest/bios-tables-test: Add a variant to the aarch64 viot test
qtest/bios-tables-test: Generate DSDT.viot
hw/arm/virt-acpi-build: Let non hotplug ports support static
acpi-index
tests/qtest/bios-tables-test: Update ARM DSDT reference blobs
hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI
hotplug
hw/acpi/ged: Add a bus link property
hw/arm/virt: Pass the bus on the ged creation
hw/acpi/ged: Call pcihp plug callbacks in hotplug handler
implementation
hw/acpi/pcihp: Remove root arg in acpi_pcihp_init
hw/acpi/ged: Prepare the device to react to PCI hotplug events
hw/acpi/ged: Support migration of AcpiPciHpState
hw/core/sysbus: Introduce sysbus_mmio_map_name() helper
hw/arm/virt: Minor code reshuffling in create_acpi_ged
hw/arm/virt: Let virt support pci hotplug/unplug GED event
qtest/bios-tables-test: Generate reference blob for
DSDT.hpoffacpiindex
qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp
Gustavo Romero (4):
tests/qtest/bios-tables-test: Prepare for changes in the DSDT table
tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT
table
tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp
tests
tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test
hw/i386/acpi-build.h | 4 -
include/hw/acpi/generic_event_device.h | 17 +-
include/hw/acpi/pci.h | 5 +-
include/hw/acpi/pcihp.h | 17 +-
include/hw/arm/virt.h | 1 +
include/hw/pci-host/gpex.h | 1 +
include/hw/sysbus.h | 1 +
hw/acpi/acpi-pci-hotplug-stub.c | 2 +-
hw/acpi/generic_event_device.c | 77 +++
hw/acpi/ich9.c | 7 +-
hw/acpi/pci-bridge.c | 54 ++
hw/acpi/pci.c | 50 ++
hw/acpi/pcihp.c | 439 ++++++++++++++-
hw/acpi/piix4.c | 5 +-
hw/arm/virt-acpi-build.c | 38 ++
hw/arm/virt.c | 27 +-
hw/core/sysbus.c | 11 +
hw/i386/acpi-build.c | 532 +-----------------
hw/pci-host/gpex-acpi.c | 74 +--
tests/qtest/bios-tables-test.c | 53 ++
hw/arm/Kconfig | 2 +
hw/pci-host/Kconfig | 1 +
tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes
.../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes
tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes
.../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes
tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes
tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes
tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes
tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes
tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes
tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes
32 files changed, 811 insertions(+), 607 deletions(-)
create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp
create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex
create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot
--
2.49.0
On Mon, 14 Jul 2025 10:04:44 +0200 Eric Auger <eric.auger@redhat.com> wrote: > This series enables ACPI PCI hotplug/hotunplug on ARM. > It is not enabled by default and ACPI PCI hotplug can > be selected by setting: > > -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on > > Expected benefits should be similar to those listed in [1], > ie. removal of some racy behaviors, improved latencies. > > The infrastructure used in x86 is heavily reused and a > huge part of the series consists in moving code from > hw/i386/acpi-build.c to a generic place and slightly > adapting it to make it usable on ARM. The DSDT table is > augmented to support ACPI PCI hotplug elements. > > On ARM we use use a GED event to notify the OS about > hotplug events. > > Best Regards > > Eric Hi Eric, I guess you probably already know this but there is some impact on loongarch64 when their ACPI tables tests are added. Rather oddly I'm getting intermittent failures on Michael's gitlab tree but looks like the unification of _OSC affects them as well. (should be every time, but they aren't!) Should just be updating their 4 DSDT variants. If I had a stable test setup I'd send them. Will try again tomorrow if not resolved. Jonathan > > This series can be found at: > https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v7 > > previous series: > https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v6 > > History: > v6 -> v7: > - rebased after minor contextual conflict introduced > by "hw/arm/virt: Basic CXL enablement on pci_expander_bridge > instances pxb-cxl" in hw/arm/virt-acpi-build.c > (hw/pci-host/gpex-acpi: Use GED acpi pcihp property) > - collected last Igor's and Prasad's R-bs > > v5 -> v6: > - collected Jonathan's R-bs > - cropped last 2 patch commit messages (Jonathan) > > v4 -> v5: > - Collected Jonathan's R-bs (many thanks!) > - fixed the tests/qtest/bios-tables-test issue by > creating a variant for the viot test > - use the 3 phase reset API > - fixed qom-test failures that were due to unconditionnal > fetches of the GED property > > v3 -> v4: > - toook into account all comments on v3 > - static acpi-index is now supported unconditionally > from acpi pcihp option. See indiviual patches. > - I hit a problem with ref block generation at > [19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference > blobs: despite I regenerate the blobs, I get some errors. > > v2 -> v3: > - lot of changes taking into account various feedbacks > (many thanks to all reviewers). Please refer to > individual patches for details. Main changes: > - no more machine option, acpi pci hp is not set by > default. > - removal of 2 unused variables in the osc method > - introduction of GED property to set the bus > - rework of the init/reset sequence > - fix virtio-mem-pci hotplug regression > > v1 -> v2: > - collected a bunch of R-bs from Gustavo (many thanks!) > - Fixed the breakage of bios-tables-test in TCG mode by > incorporating Gustavo's patches (part of > [PATCH 0/5] ACPI tests for PCI Hotplug on ARM > https://lore.kernel.org/all/20250526053123.1434204-1-gustavo.romero@linaro.org/) > - Tweeked the dsdt aml changes to avoid any dsdt blob difference when > acpi-pcihp is off. > > RFC -> v1: > - First 3 trivial patches were pulled separately > - Fix of the register region size (0x18), ie. ACPI_PCIHP_SIZE > - addition of aml_pci_edsm which was not called in RFC > - acpi-index feature is now fixed. vms->bus was not set on > acpi_pcihp_init. The init sequence is still hacky though. Suggestions > are welcome. > > [1] [PATCH v6 0/6] Use ACPI PCI hot-plug for Q35 > https://lore.kernel.org/all/20210713004205.775386-1-jusual@redhat.com/ > > Eric Auger (32): > hw/i386/acpi-build: Make aml_pci_device_dsm() static > hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp > hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to > acpi_dsdt_add_pci_osc > hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation > hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property > hw/pci-host/gpex-acpi: Use GED acpi pcihp property > hw/i386/acpi-build: Turn build_q35_osc_method into a generic method > hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method > tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change > hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper > hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug > hw/i386/acpi-build: Move build_append_notification_callback to pcihp > hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots to > pcihp > hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info > hw/i386/acpi-build: Move aml_pci_edsm to a generic place > qtest/bios-tables-test: Prepare for fixing the aarch64 viot test > qtest/bios-tables-test: Add a variant to the aarch64 viot test > qtest/bios-tables-test: Generate DSDT.viot > hw/arm/virt-acpi-build: Let non hotplug ports support static > acpi-index > tests/qtest/bios-tables-test: Update ARM DSDT reference blobs > hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI > hotplug > hw/acpi/ged: Add a bus link property > hw/arm/virt: Pass the bus on the ged creation > hw/acpi/ged: Call pcihp plug callbacks in hotplug handler > implementation > hw/acpi/pcihp: Remove root arg in acpi_pcihp_init > hw/acpi/ged: Prepare the device to react to PCI hotplug events > hw/acpi/ged: Support migration of AcpiPciHpState > hw/core/sysbus: Introduce sysbus_mmio_map_name() helper > hw/arm/virt: Minor code reshuffling in create_acpi_ged > hw/arm/virt: Let virt support pci hotplug/unplug GED event > qtest/bios-tables-test: Generate reference blob for > DSDT.hpoffacpiindex > qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp > > Gustavo Romero (4): > tests/qtest/bios-tables-test: Prepare for changes in the DSDT table > tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT > table > tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp > tests > tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test > > hw/i386/acpi-build.h | 4 - > include/hw/acpi/generic_event_device.h | 17 +- > include/hw/acpi/pci.h | 5 +- > include/hw/acpi/pcihp.h | 17 +- > include/hw/arm/virt.h | 1 + > include/hw/pci-host/gpex.h | 1 + > include/hw/sysbus.h | 1 + > hw/acpi/acpi-pci-hotplug-stub.c | 2 +- > hw/acpi/generic_event_device.c | 77 +++ > hw/acpi/ich9.c | 7 +- > hw/acpi/pci-bridge.c | 54 ++ > hw/acpi/pci.c | 50 ++ > hw/acpi/pcihp.c | 439 ++++++++++++++- > hw/acpi/piix4.c | 5 +- > hw/arm/virt-acpi-build.c | 38 ++ > hw/arm/virt.c | 27 +- > hw/core/sysbus.c | 11 + > hw/i386/acpi-build.c | 532 +----------------- > hw/pci-host/gpex-acpi.c | 74 +-- > tests/qtest/bios-tables-test.c | 53 ++ > hw/arm/Kconfig | 2 + > hw/pci-host/Kconfig | 1 + > tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes > .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes > tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes > .../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes > tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes > tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes > tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes > tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes > tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes > tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes > 32 files changed, 811 insertions(+), 607 deletions(-) > create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp > create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex > create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot >
Hi Jonathan, On 7/14/25 9:40 PM, Jonathan Cameron wrote: > On Mon, 14 Jul 2025 10:04:44 +0200 > Eric Auger <eric.auger@redhat.com> wrote: > >> This series enables ACPI PCI hotplug/hotunplug on ARM. >> It is not enabled by default and ACPI PCI hotplug can >> be selected by setting: >> >> -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on >> >> Expected benefits should be similar to those listed in [1], >> ie. removal of some racy behaviors, improved latencies. >> >> The infrastructure used in x86 is heavily reused and a >> huge part of the series consists in moving code from >> hw/i386/acpi-build.c to a generic place and slightly >> adapting it to make it usable on ARM. The DSDT table is >> augmented to support ACPI PCI hotplug elements. >> >> On ARM we use use a GED event to notify the OS about >> hotplug events. >> >> Best Regards >> >> Eric > Hi Eric, > > I guess you probably already know this but there is some > impact on loongarch64 when their ACPI tables tests are added. > > Rather oddly I'm getting intermittent failures on Michael's > gitlab tree but looks like the unification of _OSC affects > them as well. (should be every time, but they aren't!) > > Should just be updating their 4 DSDT variants. > > If I had a stable test setup I'd send them. Will try again > tomorrow if not resolved. just to make sure are we talking about [PATCH v3 0/5] Add bios-tables-test for LoongArch system <https://lore.kernel.org/all/20250612090321.3416594-1-maobibo@loongson.cn/> https://lore.kernel.org/all/20250612090321.3416594-2-maobibo@loongson.cn/ Thanks Eric > > Jonathan > > > >> This series can be found at: >> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v7 >> >> previous series: >> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v6 >> >> History: >> v6 -> v7: >> - rebased after minor contextual conflict introduced >> by "hw/arm/virt: Basic CXL enablement on pci_expander_bridge >> instances pxb-cxl" in hw/arm/virt-acpi-build.c >> (hw/pci-host/gpex-acpi: Use GED acpi pcihp property) >> - collected last Igor's and Prasad's R-bs >> >> v5 -> v6: >> - collected Jonathan's R-bs >> - cropped last 2 patch commit messages (Jonathan) >> >> v4 -> v5: >> - Collected Jonathan's R-bs (many thanks!) >> - fixed the tests/qtest/bios-tables-test issue by >> creating a variant for the viot test >> - use the 3 phase reset API >> - fixed qom-test failures that were due to unconditionnal >> fetches of the GED property >> >> v3 -> v4: >> - toook into account all comments on v3 >> - static acpi-index is now supported unconditionally >> from acpi pcihp option. See indiviual patches. >> - I hit a problem with ref block generation at >> [19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference >> blobs: despite I regenerate the blobs, I get some errors. >> >> v2 -> v3: >> - lot of changes taking into account various feedbacks >> (many thanks to all reviewers). Please refer to >> individual patches for details. Main changes: >> - no more machine option, acpi pci hp is not set by >> default. >> - removal of 2 unused variables in the osc method >> - introduction of GED property to set the bus >> - rework of the init/reset sequence >> - fix virtio-mem-pci hotplug regression >> >> v1 -> v2: >> - collected a bunch of R-bs from Gustavo (many thanks!) >> - Fixed the breakage of bios-tables-test in TCG mode by >> incorporating Gustavo's patches (part of >> [PATCH 0/5] ACPI tests for PCI Hotplug on ARM >> https://lore.kernel.org/all/20250526053123.1434204-1-gustavo.romero@linaro.org/) >> - Tweeked the dsdt aml changes to avoid any dsdt blob difference when >> acpi-pcihp is off. >> >> RFC -> v1: >> - First 3 trivial patches were pulled separately >> - Fix of the register region size (0x18), ie. ACPI_PCIHP_SIZE >> - addition of aml_pci_edsm which was not called in RFC >> - acpi-index feature is now fixed. vms->bus was not set on >> acpi_pcihp_init. The init sequence is still hacky though. Suggestions >> are welcome. >> >> [1] [PATCH v6 0/6] Use ACPI PCI hot-plug for Q35 >> https://lore.kernel.org/all/20210713004205.775386-1-jusual@redhat.com/ >> >> Eric Auger (32): >> hw/i386/acpi-build: Make aml_pci_device_dsm() static >> hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp >> hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to >> acpi_dsdt_add_pci_osc >> hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation >> hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property >> hw/pci-host/gpex-acpi: Use GED acpi pcihp property >> hw/i386/acpi-build: Turn build_q35_osc_method into a generic method >> hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method >> tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change >> hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper >> hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug >> hw/i386/acpi-build: Move build_append_notification_callback to pcihp >> hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots to >> pcihp >> hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info >> hw/i386/acpi-build: Move aml_pci_edsm to a generic place >> qtest/bios-tables-test: Prepare for fixing the aarch64 viot test >> qtest/bios-tables-test: Add a variant to the aarch64 viot test >> qtest/bios-tables-test: Generate DSDT.viot >> hw/arm/virt-acpi-build: Let non hotplug ports support static >> acpi-index >> tests/qtest/bios-tables-test: Update ARM DSDT reference blobs >> hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI >> hotplug >> hw/acpi/ged: Add a bus link property >> hw/arm/virt: Pass the bus on the ged creation >> hw/acpi/ged: Call pcihp plug callbacks in hotplug handler >> implementation >> hw/acpi/pcihp: Remove root arg in acpi_pcihp_init >> hw/acpi/ged: Prepare the device to react to PCI hotplug events >> hw/acpi/ged: Support migration of AcpiPciHpState >> hw/core/sysbus: Introduce sysbus_mmio_map_name() helper >> hw/arm/virt: Minor code reshuffling in create_acpi_ged >> hw/arm/virt: Let virt support pci hotplug/unplug GED event >> qtest/bios-tables-test: Generate reference blob for >> DSDT.hpoffacpiindex >> qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp >> >> Gustavo Romero (4): >> tests/qtest/bios-tables-test: Prepare for changes in the DSDT table >> tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT >> table >> tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp >> tests >> tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test >> >> hw/i386/acpi-build.h | 4 - >> include/hw/acpi/generic_event_device.h | 17 +- >> include/hw/acpi/pci.h | 5 +- >> include/hw/acpi/pcihp.h | 17 +- >> include/hw/arm/virt.h | 1 + >> include/hw/pci-host/gpex.h | 1 + >> include/hw/sysbus.h | 1 + >> hw/acpi/acpi-pci-hotplug-stub.c | 2 +- >> hw/acpi/generic_event_device.c | 77 +++ >> hw/acpi/ich9.c | 7 +- >> hw/acpi/pci-bridge.c | 54 ++ >> hw/acpi/pci.c | 50 ++ >> hw/acpi/pcihp.c | 439 ++++++++++++++- >> hw/acpi/piix4.c | 5 +- >> hw/arm/virt-acpi-build.c | 38 ++ >> hw/arm/virt.c | 27 +- >> hw/core/sysbus.c | 11 + >> hw/i386/acpi-build.c | 532 +----------------- >> hw/pci-host/gpex-acpi.c | 74 +-- >> tests/qtest/bios-tables-test.c | 53 ++ >> hw/arm/Kconfig | 2 + >> hw/pci-host/Kconfig | 1 + >> tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes >> .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes >> tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes >> .../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes >> tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes >> tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes >> tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes >> tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes >> tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes >> tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes >> 32 files changed, 811 insertions(+), 607 deletions(-) >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot >>
On Mon, Jul 14, 2025 at 09:51:40PM +0200, Eric Auger wrote: > Hi Jonathan, > > On 7/14/25 9:40 PM, Jonathan Cameron wrote: > > On Mon, 14 Jul 2025 10:04:44 +0200 > > Eric Auger <eric.auger@redhat.com> wrote: > > > >> This series enables ACPI PCI hotplug/hotunplug on ARM. > >> It is not enabled by default and ACPI PCI hotplug can > >> be selected by setting: > >> > >> -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on > >> > >> Expected benefits should be similar to those listed in [1], > >> ie. removal of some racy behaviors, improved latencies. > >> > >> The infrastructure used in x86 is heavily reused and a > >> huge part of the series consists in moving code from > >> hw/i386/acpi-build.c to a generic place and slightly > >> adapting it to make it usable on ARM. The DSDT table is > >> augmented to support ACPI PCI hotplug elements. > >> > >> On ARM we use use a GED event to notify the OS about > >> hotplug events. > >> > >> Best Regards > >> > >> Eric > > Hi Eric, > > > > I guess you probably already know this but there is some > > impact on loongarch64 when their ACPI tables tests are added. > > > > Rather oddly I'm getting intermittent failures on Michael's > > gitlab tree but looks like the unification of _OSC affects > > them as well. (should be every time, but they aren't!) > > > > Should just be updating their 4 DSDT variants. > > > > If I had a stable test setup I'd send them. Will try again > > tomorrow if not resolved. > just to make sure are we talking about > > [PATCH v3 0/5] Add bios-tables-test for LoongArch system <https://lore.kernel.org/all/20250612090321.3416594-1-maobibo@loongson.cn/> > https://lore.kernel.org/all/20250612090321.3416594-2-maobibo@loongson.cn/ > > Thanks > > Eric I fixed this up, don't worry. > > > > > > Jonathan > > > > > > > >> This series can be found at: > >> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v7 > >> > >> previous series: > >> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v6 > >> > >> History: > >> v6 -> v7: > >> - rebased after minor contextual conflict introduced > >> by "hw/arm/virt: Basic CXL enablement on pci_expander_bridge > >> instances pxb-cxl" in hw/arm/virt-acpi-build.c > >> (hw/pci-host/gpex-acpi: Use GED acpi pcihp property) > >> - collected last Igor's and Prasad's R-bs > >> > >> v5 -> v6: > >> - collected Jonathan's R-bs > >> - cropped last 2 patch commit messages (Jonathan) > >> > >> v4 -> v5: > >> - Collected Jonathan's R-bs (many thanks!) > >> - fixed the tests/qtest/bios-tables-test issue by > >> creating a variant for the viot test > >> - use the 3 phase reset API > >> - fixed qom-test failures that were due to unconditionnal > >> fetches of the GED property > >> > >> v3 -> v4: > >> - toook into account all comments on v3 > >> - static acpi-index is now supported unconditionally > >> from acpi pcihp option. See indiviual patches. > >> - I hit a problem with ref block generation at > >> [19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference > >> blobs: despite I regenerate the blobs, I get some errors. > >> > >> v2 -> v3: > >> - lot of changes taking into account various feedbacks > >> (many thanks to all reviewers). Please refer to > >> individual patches for details. Main changes: > >> - no more machine option, acpi pci hp is not set by > >> default. > >> - removal of 2 unused variables in the osc method > >> - introduction of GED property to set the bus > >> - rework of the init/reset sequence > >> - fix virtio-mem-pci hotplug regression > >> > >> v1 -> v2: > >> - collected a bunch of R-bs from Gustavo (many thanks!) > >> - Fixed the breakage of bios-tables-test in TCG mode by > >> incorporating Gustavo's patches (part of > >> [PATCH 0/5] ACPI tests for PCI Hotplug on ARM > >> https://lore.kernel.org/all/20250526053123.1434204-1-gustavo.romero@linaro.org/) > >> - Tweeked the dsdt aml changes to avoid any dsdt blob difference when > >> acpi-pcihp is off. > >> > >> RFC -> v1: > >> - First 3 trivial patches were pulled separately > >> - Fix of the register region size (0x18), ie. ACPI_PCIHP_SIZE > >> - addition of aml_pci_edsm which was not called in RFC > >> - acpi-index feature is now fixed. vms->bus was not set on > >> acpi_pcihp_init. The init sequence is still hacky though. Suggestions > >> are welcome. > >> > >> [1] [PATCH v6 0/6] Use ACPI PCI hot-plug for Q35 > >> https://lore.kernel.org/all/20210713004205.775386-1-jusual@redhat.com/ > >> > >> Eric Auger (32): > >> hw/i386/acpi-build: Make aml_pci_device_dsm() static > >> hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp > >> hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to > >> acpi_dsdt_add_pci_osc > >> hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation > >> hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property > >> hw/pci-host/gpex-acpi: Use GED acpi pcihp property > >> hw/i386/acpi-build: Turn build_q35_osc_method into a generic method > >> hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method > >> tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change > >> hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper > >> hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug > >> hw/i386/acpi-build: Move build_append_notification_callback to pcihp > >> hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots to > >> pcihp > >> hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info > >> hw/i386/acpi-build: Move aml_pci_edsm to a generic place > >> qtest/bios-tables-test: Prepare for fixing the aarch64 viot test > >> qtest/bios-tables-test: Add a variant to the aarch64 viot test > >> qtest/bios-tables-test: Generate DSDT.viot > >> hw/arm/virt-acpi-build: Let non hotplug ports support static > >> acpi-index > >> tests/qtest/bios-tables-test: Update ARM DSDT reference blobs > >> hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI > >> hotplug > >> hw/acpi/ged: Add a bus link property > >> hw/arm/virt: Pass the bus on the ged creation > >> hw/acpi/ged: Call pcihp plug callbacks in hotplug handler > >> implementation > >> hw/acpi/pcihp: Remove root arg in acpi_pcihp_init > >> hw/acpi/ged: Prepare the device to react to PCI hotplug events > >> hw/acpi/ged: Support migration of AcpiPciHpState > >> hw/core/sysbus: Introduce sysbus_mmio_map_name() helper > >> hw/arm/virt: Minor code reshuffling in create_acpi_ged > >> hw/arm/virt: Let virt support pci hotplug/unplug GED event > >> qtest/bios-tables-test: Generate reference blob for > >> DSDT.hpoffacpiindex > >> qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp > >> > >> Gustavo Romero (4): > >> tests/qtest/bios-tables-test: Prepare for changes in the DSDT table > >> tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT > >> table > >> tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp > >> tests > >> tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test > >> > >> hw/i386/acpi-build.h | 4 - > >> include/hw/acpi/generic_event_device.h | 17 +- > >> include/hw/acpi/pci.h | 5 +- > >> include/hw/acpi/pcihp.h | 17 +- > >> include/hw/arm/virt.h | 1 + > >> include/hw/pci-host/gpex.h | 1 + > >> include/hw/sysbus.h | 1 + > >> hw/acpi/acpi-pci-hotplug-stub.c | 2 +- > >> hw/acpi/generic_event_device.c | 77 +++ > >> hw/acpi/ich9.c | 7 +- > >> hw/acpi/pci-bridge.c | 54 ++ > >> hw/acpi/pci.c | 50 ++ > >> hw/acpi/pcihp.c | 439 ++++++++++++++- > >> hw/acpi/piix4.c | 5 +- > >> hw/arm/virt-acpi-build.c | 38 ++ > >> hw/arm/virt.c | 27 +- > >> hw/core/sysbus.c | 11 + > >> hw/i386/acpi-build.c | 532 +----------------- > >> hw/pci-host/gpex-acpi.c | 74 +-- > >> tests/qtest/bios-tables-test.c | 53 ++ > >> hw/arm/Kconfig | 2 + > >> hw/pci-host/Kconfig | 1 + > >> tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes > >> .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes > >> tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes > >> .../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes > >> tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes > >> tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes > >> tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes > >> tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes > >> tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes > >> tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes > >> 32 files changed, 811 insertions(+), 607 deletions(-) > >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp > >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex > >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot > >>
On 7/15/25 1:56 AM, Michael S. Tsirkin wrote: > On Mon, Jul 14, 2025 at 09:51:40PM +0200, Eric Auger wrote: >> Hi Jonathan, >> >> On 7/14/25 9:40 PM, Jonathan Cameron wrote: >>> On Mon, 14 Jul 2025 10:04:44 +0200 >>> Eric Auger <eric.auger@redhat.com> wrote: >>> >>>> This series enables ACPI PCI hotplug/hotunplug on ARM. >>>> It is not enabled by default and ACPI PCI hotplug can >>>> be selected by setting: >>>> >>>> -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on >>>> >>>> Expected benefits should be similar to those listed in [1], >>>> ie. removal of some racy behaviors, improved latencies. >>>> >>>> The infrastructure used in x86 is heavily reused and a >>>> huge part of the series consists in moving code from >>>> hw/i386/acpi-build.c to a generic place and slightly >>>> adapting it to make it usable on ARM. The DSDT table is >>>> augmented to support ACPI PCI hotplug elements. >>>> >>>> On ARM we use use a GED event to notify the OS about >>>> hotplug events. >>>> >>>> Best Regards >>>> >>>> Eric >>> Hi Eric, >>> >>> I guess you probably already know this but there is some >>> impact on loongarch64 when their ACPI tables tests are added. >>> >>> Rather oddly I'm getting intermittent failures on Michael's >>> gitlab tree but looks like the unification of _OSC affects >>> them as well. (should be every time, but they aren't!) >>> >>> Should just be updating their 4 DSDT variants. >>> >>> If I had a stable test setup I'd send them. Will try again >>> tomorrow if not resolved. >> just to make sure are we talking about >> >> [PATCH v3 0/5] Add bios-tables-test for LoongArch system <https://lore.kernel.org/all/20250612090321.3416594-1-maobibo@loongson.cn/> >> https://lore.kernel.org/all/20250612090321.3416594-2-maobibo@loongson.cn/ >> >> Thanks >> >> Eric > I fixed this up, don't worry. Thanks! Eric > >> >>> Jonathan >>> >>> >>> >>>> This series can be found at: >>>> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v7 >>>> >>>> previous series: >>>> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v6 >>>> >>>> History: >>>> v6 -> v7: >>>> - rebased after minor contextual conflict introduced >>>> by "hw/arm/virt: Basic CXL enablement on pci_expander_bridge >>>> instances pxb-cxl" in hw/arm/virt-acpi-build.c >>>> (hw/pci-host/gpex-acpi: Use GED acpi pcihp property) >>>> - collected last Igor's and Prasad's R-bs >>>> >>>> v5 -> v6: >>>> - collected Jonathan's R-bs >>>> - cropped last 2 patch commit messages (Jonathan) >>>> >>>> v4 -> v5: >>>> - Collected Jonathan's R-bs (many thanks!) >>>> - fixed the tests/qtest/bios-tables-test issue by >>>> creating a variant for the viot test >>>> - use the 3 phase reset API >>>> - fixed qom-test failures that were due to unconditionnal >>>> fetches of the GED property >>>> >>>> v3 -> v4: >>>> - toook into account all comments on v3 >>>> - static acpi-index is now supported unconditionally >>>> from acpi pcihp option. See indiviual patches. >>>> - I hit a problem with ref block generation at >>>> [19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference >>>> blobs: despite I regenerate the blobs, I get some errors. >>>> >>>> v2 -> v3: >>>> - lot of changes taking into account various feedbacks >>>> (many thanks to all reviewers). Please refer to >>>> individual patches for details. Main changes: >>>> - no more machine option, acpi pci hp is not set by >>>> default. >>>> - removal of 2 unused variables in the osc method >>>> - introduction of GED property to set the bus >>>> - rework of the init/reset sequence >>>> - fix virtio-mem-pci hotplug regression >>>> >>>> v1 -> v2: >>>> - collected a bunch of R-bs from Gustavo (many thanks!) >>>> - Fixed the breakage of bios-tables-test in TCG mode by >>>> incorporating Gustavo's patches (part of >>>> [PATCH 0/5] ACPI tests for PCI Hotplug on ARM >>>> https://lore.kernel.org/all/20250526053123.1434204-1-gustavo.romero@linaro.org/) >>>> - Tweeked the dsdt aml changes to avoid any dsdt blob difference when >>>> acpi-pcihp is off. >>>> >>>> RFC -> v1: >>>> - First 3 trivial patches were pulled separately >>>> - Fix of the register region size (0x18), ie. ACPI_PCIHP_SIZE >>>> - addition of aml_pci_edsm which was not called in RFC >>>> - acpi-index feature is now fixed. vms->bus was not set on >>>> acpi_pcihp_init. The init sequence is still hacky though. Suggestions >>>> are welcome. >>>> >>>> [1] [PATCH v6 0/6] Use ACPI PCI hot-plug for Q35 >>>> https://lore.kernel.org/all/20210713004205.775386-1-jusual@redhat.com/ >>>> >>>> Eric Auger (32): >>>> hw/i386/acpi-build: Make aml_pci_device_dsm() static >>>> hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp >>>> hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to >>>> acpi_dsdt_add_pci_osc >>>> hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation >>>> hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property >>>> hw/pci-host/gpex-acpi: Use GED acpi pcihp property >>>> hw/i386/acpi-build: Turn build_q35_osc_method into a generic method >>>> hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method >>>> tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change >>>> hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper >>>> hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug >>>> hw/i386/acpi-build: Move build_append_notification_callback to pcihp >>>> hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots to >>>> pcihp >>>> hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info >>>> hw/i386/acpi-build: Move aml_pci_edsm to a generic place >>>> qtest/bios-tables-test: Prepare for fixing the aarch64 viot test >>>> qtest/bios-tables-test: Add a variant to the aarch64 viot test >>>> qtest/bios-tables-test: Generate DSDT.viot >>>> hw/arm/virt-acpi-build: Let non hotplug ports support static >>>> acpi-index >>>> tests/qtest/bios-tables-test: Update ARM DSDT reference blobs >>>> hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI >>>> hotplug >>>> hw/acpi/ged: Add a bus link property >>>> hw/arm/virt: Pass the bus on the ged creation >>>> hw/acpi/ged: Call pcihp plug callbacks in hotplug handler >>>> implementation >>>> hw/acpi/pcihp: Remove root arg in acpi_pcihp_init >>>> hw/acpi/ged: Prepare the device to react to PCI hotplug events >>>> hw/acpi/ged: Support migration of AcpiPciHpState >>>> hw/core/sysbus: Introduce sysbus_mmio_map_name() helper >>>> hw/arm/virt: Minor code reshuffling in create_acpi_ged >>>> hw/arm/virt: Let virt support pci hotplug/unplug GED event >>>> qtest/bios-tables-test: Generate reference blob for >>>> DSDT.hpoffacpiindex >>>> qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp >>>> >>>> Gustavo Romero (4): >>>> tests/qtest/bios-tables-test: Prepare for changes in the DSDT table >>>> tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT >>>> table >>>> tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp >>>> tests >>>> tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test >>>> >>>> hw/i386/acpi-build.h | 4 - >>>> include/hw/acpi/generic_event_device.h | 17 +- >>>> include/hw/acpi/pci.h | 5 +- >>>> include/hw/acpi/pcihp.h | 17 +- >>>> include/hw/arm/virt.h | 1 + >>>> include/hw/pci-host/gpex.h | 1 + >>>> include/hw/sysbus.h | 1 + >>>> hw/acpi/acpi-pci-hotplug-stub.c | 2 +- >>>> hw/acpi/generic_event_device.c | 77 +++ >>>> hw/acpi/ich9.c | 7 +- >>>> hw/acpi/pci-bridge.c | 54 ++ >>>> hw/acpi/pci.c | 50 ++ >>>> hw/acpi/pcihp.c | 439 ++++++++++++++- >>>> hw/acpi/piix4.c | 5 +- >>>> hw/arm/virt-acpi-build.c | 38 ++ >>>> hw/arm/virt.c | 27 +- >>>> hw/core/sysbus.c | 11 + >>>> hw/i386/acpi-build.c | 532 +----------------- >>>> hw/pci-host/gpex-acpi.c | 74 +-- >>>> tests/qtest/bios-tables-test.c | 53 ++ >>>> hw/arm/Kconfig | 2 + >>>> hw/pci-host/Kconfig | 1 + >>>> tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes >>>> .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes >>>> tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes >>>> .../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes >>>> tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes >>>> tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes >>>> tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes >>>> tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes >>>> tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes >>>> tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes >>>> 32 files changed, 811 insertions(+), 607 deletions(-) >>>> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp >>>> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex >>>> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot >>>>
Hi Jonathan, On 7/14/25 9:40 PM, Jonathan Cameron wrote: > On Mon, 14 Jul 2025 10:04:44 +0200 > Eric Auger <eric.auger@redhat.com> wrote: > >> This series enables ACPI PCI hotplug/hotunplug on ARM. >> It is not enabled by default and ACPI PCI hotplug can >> be selected by setting: >> >> -global acpi-ged.acpi-pci-hotplug-with-bridge-support=on >> >> Expected benefits should be similar to those listed in [1], >> ie. removal of some racy behaviors, improved latencies. >> >> The infrastructure used in x86 is heavily reused and a >> huge part of the series consists in moving code from >> hw/i386/acpi-build.c to a generic place and slightly >> adapting it to make it usable on ARM. The DSDT table is >> augmented to support ACPI PCI hotplug elements. >> >> On ARM we use use a GED event to notify the OS about >> hotplug events. >> >> Best Regards >> >> Eric > Hi Eric, > > I guess you probably already know this but there is some > impact on loongarch64 when their ACPI tables tests are added. > > Rather oddly I'm getting intermittent failures on Michael's > gitlab tree but looks like the unification of _OSC affects > them as well. (should be every time, but they aren't!) > > Should just be updating their 4 DSDT variants. thank you for the notice. I have executed make check with a qemu configured for all archs and I got not failures. I guess the tests you are talking about are not merged yet? Anyway I can add update their DSDT variants once the series is merged. Thanks Eric > > If I had a stable test setup I'd send them. Will try again > tomorrow if not resolved. > > Jonathan > > > >> This series can be found at: >> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v7 >> >> previous series: >> https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v6 >> >> History: >> v6 -> v7: >> - rebased after minor contextual conflict introduced >> by "hw/arm/virt: Basic CXL enablement on pci_expander_bridge >> instances pxb-cxl" in hw/arm/virt-acpi-build.c >> (hw/pci-host/gpex-acpi: Use GED acpi pcihp property) >> - collected last Igor's and Prasad's R-bs >> >> v5 -> v6: >> - collected Jonathan's R-bs >> - cropped last 2 patch commit messages (Jonathan) >> >> v4 -> v5: >> - Collected Jonathan's R-bs (many thanks!) >> - fixed the tests/qtest/bios-tables-test issue by >> creating a variant for the viot test >> - use the 3 phase reset API >> - fixed qom-test failures that were due to unconditionnal >> fetches of the GED property >> >> v3 -> v4: >> - toook into account all comments on v3 >> - static acpi-index is now supported unconditionally >> from acpi pcihp option. See indiviual patches. >> - I hit a problem with ref block generation at >> [19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference >> blobs: despite I regenerate the blobs, I get some errors. >> >> v2 -> v3: >> - lot of changes taking into account various feedbacks >> (many thanks to all reviewers). Please refer to >> individual patches for details. Main changes: >> - no more machine option, acpi pci hp is not set by >> default. >> - removal of 2 unused variables in the osc method >> - introduction of GED property to set the bus >> - rework of the init/reset sequence >> - fix virtio-mem-pci hotplug regression >> >> v1 -> v2: >> - collected a bunch of R-bs from Gustavo (many thanks!) >> - Fixed the breakage of bios-tables-test in TCG mode by >> incorporating Gustavo's patches (part of >> [PATCH 0/5] ACPI tests for PCI Hotplug on ARM >> https://lore.kernel.org/all/20250526053123.1434204-1-gustavo.romero@linaro.org/) >> - Tweeked the dsdt aml changes to avoid any dsdt blob difference when >> acpi-pcihp is off. >> >> RFC -> v1: >> - First 3 trivial patches were pulled separately >> - Fix of the register region size (0x18), ie. ACPI_PCIHP_SIZE >> - addition of aml_pci_edsm which was not called in RFC >> - acpi-index feature is now fixed. vms->bus was not set on >> acpi_pcihp_init. The init sequence is still hacky though. Suggestions >> are welcome. >> >> [1] [PATCH v6 0/6] Use ACPI PCI hot-plug for Q35 >> https://lore.kernel.org/all/20210713004205.775386-1-jusual@redhat.com/ >> >> Eric Auger (32): >> hw/i386/acpi-build: Make aml_pci_device_dsm() static >> hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp >> hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to >> acpi_dsdt_add_pci_osc >> hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation >> hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property >> hw/pci-host/gpex-acpi: Use GED acpi pcihp property >> hw/i386/acpi-build: Turn build_q35_osc_method into a generic method >> hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method >> tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change >> hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper >> hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug >> hw/i386/acpi-build: Move build_append_notification_callback to pcihp >> hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots to >> pcihp >> hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info >> hw/i386/acpi-build: Move aml_pci_edsm to a generic place >> qtest/bios-tables-test: Prepare for fixing the aarch64 viot test >> qtest/bios-tables-test: Add a variant to the aarch64 viot test >> qtest/bios-tables-test: Generate DSDT.viot >> hw/arm/virt-acpi-build: Let non hotplug ports support static >> acpi-index >> tests/qtest/bios-tables-test: Update ARM DSDT reference blobs >> hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI >> hotplug >> hw/acpi/ged: Add a bus link property >> hw/arm/virt: Pass the bus on the ged creation >> hw/acpi/ged: Call pcihp plug callbacks in hotplug handler >> implementation >> hw/acpi/pcihp: Remove root arg in acpi_pcihp_init >> hw/acpi/ged: Prepare the device to react to PCI hotplug events >> hw/acpi/ged: Support migration of AcpiPciHpState >> hw/core/sysbus: Introduce sysbus_mmio_map_name() helper >> hw/arm/virt: Minor code reshuffling in create_acpi_ged >> hw/arm/virt: Let virt support pci hotplug/unplug GED event >> qtest/bios-tables-test: Generate reference blob for >> DSDT.hpoffacpiindex >> qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp >> >> Gustavo Romero (4): >> tests/qtest/bios-tables-test: Prepare for changes in the DSDT table >> tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT >> table >> tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp >> tests >> tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test >> >> hw/i386/acpi-build.h | 4 - >> include/hw/acpi/generic_event_device.h | 17 +- >> include/hw/acpi/pci.h | 5 +- >> include/hw/acpi/pcihp.h | 17 +- >> include/hw/arm/virt.h | 1 + >> include/hw/pci-host/gpex.h | 1 + >> include/hw/sysbus.h | 1 + >> hw/acpi/acpi-pci-hotplug-stub.c | 2 +- >> hw/acpi/generic_event_device.c | 77 +++ >> hw/acpi/ich9.c | 7 +- >> hw/acpi/pci-bridge.c | 54 ++ >> hw/acpi/pci.c | 50 ++ >> hw/acpi/pcihp.c | 439 ++++++++++++++- >> hw/acpi/piix4.c | 5 +- >> hw/arm/virt-acpi-build.c | 38 ++ >> hw/arm/virt.c | 27 +- >> hw/core/sysbus.c | 11 + >> hw/i386/acpi-build.c | 532 +----------------- >> hw/pci-host/gpex-acpi.c | 74 +-- >> tests/qtest/bios-tables-test.c | 53 ++ >> hw/arm/Kconfig | 2 + >> hw/pci-host/Kconfig | 1 + >> tests/data/acpi/aarch64/virt/DSDT | Bin 5196 -> 5293 bytes >> .../data/acpi/aarch64/virt/DSDT.acpihmatvirt | Bin 5282 -> 5379 bytes >> tests/data/acpi/aarch64/virt/DSDT.acpipcihp | Bin 0 -> 6202 bytes >> .../acpi/aarch64/virt/DSDT.hpoffacpiindex | Bin 0 -> 5347 bytes >> tests/data/acpi/aarch64/virt/DSDT.memhp | Bin 6557 -> 6654 bytes >> tests/data/acpi/aarch64/virt/DSDT.pxb | Bin 7679 -> 7768 bytes >> tests/data/acpi/aarch64/virt/DSDT.topology | Bin 5398 -> 5495 bytes >> tests/data/acpi/aarch64/virt/DSDT.viot | Bin 0 -> 5310 bytes >> tests/data/acpi/riscv64/virt/DSDT | Bin 3576 -> 3538 bytes >> tests/data/acpi/x86/microvm/DSDT.pcie | Bin 3023 -> 2985 bytes >> 32 files changed, 811 insertions(+), 607 deletions(-) >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex >> create mode 100644 tests/data/acpi/aarch64/virt/DSDT.viot >>
© 2016 - 2025 Red Hat, Inc.