All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/29] ACPI PCI Hotplug support on ARM
@ 2025-06-16  9:46 Eric Auger
  2025-06-16  9:46 ` [PATCH v3 01/29] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
                   ` (28 more replies)
  0 siblings, 29 replies; 110+ messages in thread
From: Eric Auger @ 2025-06-16  9:46 UTC (permalink / raw)
  To: eric.auger.pro, eric.auger, qemu-devel, qemu-arm, peter.maydell,
	imammedo, gustavo.romero, anisinha, mst, shannon.zhaosl
  Cc: pbonzini, Jonathan.Cameron, philmd, alex.bennee

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-v3

previous series:
https://github.com/eauger/qemu/tree/arm-acpi-pcihp-v2

History:
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 (25):
  hw/i386/acpi-build: Make aml_pci_device_dsm() static
  hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property
  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/pci-host/gpex-acpi: retrieve and use GED acpi_pcihp setting
  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
  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: Prepare the device to react to PCI hotplug events
  hw/acpi/ged: Call pcihp plug callbacks in hotplug handler
    implementation
  hw/acpi/ged: Support migration of AcpiPciHpState
  hw/core/sysbus: Introduce sysbus_mmio_map_name() helper
  hw/arm/virt: Use a SysBusDevice variable in create_acpi_ged()
  hw/arm/virt: Let virt support pci hotplug/unplug GED event
  hw/arm/virt: Plug pcihp hotplug/hotunplug callbacks

Gustavo Romero (4):
  tests/qtest/bios-tables-test: Prepare for changes in the 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
  qtest/bios-tables-test: Create DSDT 'acpipcihp" variant blob

 hw/i386/acpi-build.h                          |   4 -
 include/hw/acpi/generic_event_device.h        |   7 +
 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/generic_event_device.c                |  68 +++
 hw/acpi/pci-bridge.c                          |  54 ++
 hw/acpi/pci.c                                 |  50 ++
 hw/acpi/pcihp.c                               | 435 ++++++++++++++-
 hw/arm/virt-acpi-build.c                      |  27 +
 hw/arm/virt.c                                 | 100 +++-
 hw/core/sysbus.c                              |  11 +
 hw/i386/acpi-build.c                          | 528 +-----------------
 hw/pci-host/gpex-acpi.c                       |  74 +--
 tests/qtest/bios-tables-test.c                |  34 ++
 hw/arm/Kconfig                                |   2 +
 tests/data/acpi/aarch64/virt/DSDT             | Bin 5196 -> 5158 bytes
 .../data/acpi/aarch64/virt/DSDT.acpihmatvirt  | Bin 5282 -> 5244 bytes
 tests/data/acpi/aarch64/virt/DSDT.acpipcihp   | Bin 0 -> 5973 bytes
 tests/data/acpi/aarch64/virt/DSDT.memhp       | Bin 6557 -> 6519 bytes
 tests/data/acpi/aarch64/virt/DSDT.pxb         | Bin 7679 -> 7603 bytes
 tests/data/acpi/aarch64/virt/DSDT.topology    | Bin 5398 -> 5360 bytes
 tests/data/acpi/x86/microvm/DSDT.pcie         | Bin 3023 -> 2985 bytes
 25 files changed, 817 insertions(+), 602 deletions(-)
 create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp

-- 
2.49.0

^ permalink raw reply	[flat|nested] 110+ messages in thread

end of thread, other threads:[~2025-06-26 10:04 UTC | newest]

Thread overview: 110+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-16  9:46 [PATCH v3 00/29] ACPI PCI Hotplug support on ARM Eric Auger
2025-06-16  9:46 ` [PATCH v3 01/29] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
2025-06-16  9:46 ` [PATCH v3 02/29] hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property Eric Auger
2025-06-20  8:53   ` Jonathan Cameron
2025-06-20  8:53     ` Jonathan Cameron via
2025-06-20 11:09     ` Igor Mammedov
2025-06-20 11:27       ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 03/29] hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp Eric Auger
2025-06-16  9:46 ` [PATCH v3 04/29] hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to acpi_dsdt_add_pci_osc Eric Auger
2025-06-20  8:45   ` Jonathan Cameron
2025-06-20  8:45     ` Jonathan Cameron via
2025-06-16  9:46 ` [PATCH v3 05/29] tests/qtest/bios-tables-test: Prepare for changes in the DSDT table Eric Auger
2025-06-20  8:49   ` Jonathan Cameron
2025-06-20  8:49     ` Jonathan Cameron via
2025-06-20 11:29     ` Eric Auger
2025-06-20 11:11   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 06/29] hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation Eric Auger
2025-06-20  8:50   ` Jonathan Cameron
2025-06-20  8:50     ` Jonathan Cameron via
2025-06-20 11:48   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 07/29] hw/pci-host/gpex-acpi: retrieve and use GED acpi_pcihp setting Eric Auger
2025-06-20  8:52   ` Jonathan Cameron
2025-06-20  8:52     ` Jonathan Cameron via
2025-06-20 12:07   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 08/29] hw/i386/acpi-build: Turn build_q35_osc_method into a generic method Eric Auger
2025-06-20  8:54   ` Jonathan Cameron
2025-06-20  8:54     ` Jonathan Cameron via
2025-06-20 12:11   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 09/29] hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method Eric Auger
2025-06-20  8:57   ` Jonathan Cameron
2025-06-20  8:57     ` Jonathan Cameron via
2025-06-20 12:16   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 10/29] tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change Eric Auger
2025-06-20  8:59   ` Jonathan Cameron
2025-06-20  8:59     ` Jonathan Cameron via
2025-06-20 11:33     ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 11/29] hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper Eric Auger
2025-06-16  9:46 ` [PATCH v3 12/29] hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug Eric Auger
2025-06-16  9:46 ` [PATCH v3 13/29] hw/i386/acpi-build: Move build_append_notification_callback to pcihp Eric Auger
2025-06-16  9:46 ` [PATCH v3 14/29] hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots " Eric Auger
2025-06-16  9:46 ` [PATCH v3 15/29] hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info Eric Auger
2025-06-20  9:05   ` Jonathan Cameron
2025-06-20  9:05     ` Jonathan Cameron via
2025-06-20 12:20   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 16/29] hw/i386/acpi-build: Move aml_pci_edsm to a generic place Eric Auger
2025-06-20  9:19   ` Jonathan Cameron
2025-06-20  9:19     ` Jonathan Cameron via
2025-06-20  9:28     ` Jonathan Cameron
2025-06-20  9:28       ` Jonathan Cameron via
2025-06-20 12:27     ` Igor Mammedov
2025-06-24 16:05       ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 17/29] hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI hotplug Eric Auger
2025-06-20  9:35   ` Jonathan Cameron
2025-06-20  9:35     ` Jonathan Cameron via
2025-06-20 12:38     ` Igor Mammedov
2025-06-20 16:13       ` Jonathan Cameron
2025-06-20 16:13         ` Jonathan Cameron via
2025-06-25 15:23         ` Eric Auger
2025-06-26  8:44           ` Eric Auger
2025-06-24 15:51       ` Eric Auger
2025-06-20 12:33   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 18/29] hw/acpi/ged: Add a bus link property Eric Auger
2025-06-20  9:37   ` Jonathan Cameron
2025-06-20  9:37     ` Jonathan Cameron via
2025-06-20 12:45   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 19/29] hw/arm/virt: Pass the bus on the ged creation Eric Auger
2025-06-20  9:38   ` Jonathan Cameron
2025-06-20  9:38     ` Jonathan Cameron via
2025-06-24 15:56     ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 20/29] hw/acpi/ged: Prepare the device to react to PCI hotplug events Eric Auger
2025-06-20  9:44   ` Jonathan Cameron
2025-06-20  9:44     ` Jonathan Cameron via
2025-06-25 14:31     ` Eric Auger
2025-06-20 12:57   ` Igor Mammedov
2025-06-25 14:21     ` Eric Auger
2025-06-20 13:01   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 21/29] hw/acpi/ged: Call pcihp plug callbacks in hotplug handler implementation Eric Auger
2025-06-20 10:09   ` Jonathan Cameron
2025-06-20 10:09     ` Jonathan Cameron via
2025-06-20 12:53   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 22/29] hw/acpi/ged: Support migration of AcpiPciHpState Eric Auger
2025-06-16  9:46 ` [PATCH v3 23/29] hw/core/sysbus: Introduce sysbus_mmio_map_name() helper Eric Auger
2025-06-20 10:13   ` Jonathan Cameron
2025-06-20 10:13     ` Jonathan Cameron via
2025-06-16  9:46 ` [PATCH v3 24/29] hw/arm/virt: Use a SysBusDevice variable in create_acpi_ged() Eric Auger
2025-06-20 10:18   ` Jonathan Cameron
2025-06-20 10:18     ` Jonathan Cameron via
2025-06-16  9:46 ` [PATCH v3 25/29] hw/arm/virt: Let virt support pci hotplug/unplug GED event Eric Auger
2025-06-20 10:17   ` Jonathan Cameron
2025-06-20 10:17     ` Jonathan Cameron via
2025-06-25 13:36     ` Eric Auger
2025-06-20 13:06   ` Igor Mammedov
2025-06-25 13:37     ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 26/29] hw/arm/virt: Plug pcihp hotplug/hotunplug callbacks Eric Auger
2025-06-20 10:28   ` Jonathan Cameron
2025-06-20 10:28     ` Jonathan Cameron via
2025-06-20 13:10   ` Igor Mammedov
2025-06-26  8:16     ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 27/29] tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp tests Eric Auger
2025-06-20 10:31   ` Jonathan Cameron
2025-06-20 10:31     ` Jonathan Cameron via
2025-06-20 13:11     ` Igor Mammedov
2025-06-23 15:07     ` Eric Auger
2025-06-16  9:46 ` [PATCH v3 28/29] tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test Eric Auger
2025-06-20 10:40   ` Jonathan Cameron
2025-06-20 10:40     ` Jonathan Cameron via
2025-06-20 13:22     ` Igor Mammedov
2025-06-26 10:04       ` Eric Auger
2025-06-20 13:18   ` Igor Mammedov
2025-06-16  9:46 ` [PATCH v3 29/29] qtest/bios-tables-test: Create DSDT 'acpipcihp" variant blob Eric Auger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.