All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/32] ACPI PCI Hotplug support on ARM
@ 2025-06-27  9:54 Eric Auger
  2025-06-27  9:54 ` [PATCH v4 01/32] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
                   ` (31 more replies)
  0 siblings, 32 replies; 68+ messages in thread
From: Eric Auger @ 2025-06-27  9:54 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-v4

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

History:
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 (28):
  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
  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: Create DSDT acpipcihp and hpoffacpiindex
    variant blobs

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        |   7 +
 include/hw/acpi/pci.h                         |   5 +-
 include/hw/acpi/pcihp.h                       |  19 +-
 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                |  73 +++
 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                      |  30 +
 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                |  52 ++
 hw/arm/Kconfig                                |   2 +
 hw/pci-host/Kconfig                           |   1 +
 tests/data/acpi/aarch64/virt/DSDT             | Bin 5196 -> 5310 bytes
 .../data/acpi/aarch64/virt/DSDT.acpihmatvirt  | Bin 5282 -> 5379 bytes
 tests/data/acpi/aarch64/virt/DSDT.acpipcihp   | Bin 0 -> 6294 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/riscv64/virt/DSDT             | Bin 3576 -> 3538 bytes
 tests/data/acpi/x86/microvm/DSDT.pcie         | Bin 3023 -> 2985 bytes
 31 files changed, 790 insertions(+), 607 deletions(-)
 create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp
 create mode 100644 tests/data/acpi/aarch64/virt/DSDT.hpoffacpiindex

-- 
2.49.0

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

end of thread, other threads:[~2025-07-03  5:12 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-27  9:54 [PATCH v4 00/32] ACPI PCI Hotplug support on ARM Eric Auger
2025-06-27  9:54 ` [PATCH v4 01/32] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
2025-06-27  9:54 ` [PATCH v4 02/32] hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp Eric Auger
2025-06-27  9:54 ` [PATCH v4 03/32] hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to acpi_dsdt_add_pci_osc Eric Auger
2025-06-27  9:54 ` [PATCH v4 04/32] tests/qtest/bios-tables-test: Prepare for changes in the DSDT table Eric Auger
2025-06-27  9:54 ` [PATCH v4 05/32] hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation Eric Auger
2025-06-27  9:54 ` [PATCH v4 06/32] hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property Eric Auger
2025-06-27  9:54 ` [PATCH v4 07/32] hw/pci-host/gpex-acpi: Use GED acpi pcihp property Eric Auger
2025-06-30 11:33   ` Jonathan Cameron
2025-06-30 11:33     ` Jonathan Cameron via
2025-06-27  9:54 ` [PATCH v4 08/32] hw/i386/acpi-build: Turn build_q35_osc_method into a generic method Eric Auger
2025-06-27  9:54 ` [PATCH v4 09/32] hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method Eric Auger
2025-06-30 11:35   ` Jonathan Cameron
2025-06-30 11:35     ` Jonathan Cameron via
2025-06-27  9:54 ` [PATCH v4 10/32] tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change Eric Auger
2025-06-30 11:35   ` Jonathan Cameron
2025-06-30 11:35     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 11/32] hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper Eric Auger
2025-06-27  9:55 ` [PATCH v4 12/32] hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug Eric Auger
2025-06-27  9:55 ` [PATCH v4 13/32] hw/i386/acpi-build: Move build_append_notification_callback to pcihp Eric Auger
2025-06-27  9:55 ` [PATCH v4 14/32] hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots " Eric Auger
2025-06-27  9:55 ` [PATCH v4 15/32] hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info Eric Auger
2025-06-27  9:55 ` [PATCH v4 16/32] hw/i386/acpi-build: Move aml_pci_edsm to a generic place Eric Auger
2025-06-30 12:25   ` Jonathan Cameron
2025-06-30 12:25     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 17/32] tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT table Eric Auger
2025-06-30 12:26   ` Jonathan Cameron
2025-06-30 12:26     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 18/32] hw/arm/virt-acpi-build: Let non hotplug ports support static acpi-index Eric Auger
2025-06-30 12:28   ` Jonathan Cameron
2025-06-30 12:28     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 19/32] tests/qtest/bios-tables-test: Update ARM DSDT reference blobs Eric Auger
2025-06-27 10:00   ` Eric Auger
2025-06-30 12:31     ` Jonathan Cameron
2025-06-30 12:31       ` Jonathan Cameron via
2025-07-01  9:22       ` Eric Auger
2025-07-03  5:12       ` Eric Auger
2025-06-27  9:55 ` [PATCH v4 20/32] hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI hotplug Eric Auger
2025-06-30 12:33   ` Jonathan Cameron
2025-06-30 12:33     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 21/32] hw/acpi/ged: Add a bus link property Eric Auger
2025-06-27  9:55 ` [PATCH v4 22/32] hw/arm/virt: Pass the bus on the ged creation Eric Auger
2025-06-27  9:55 ` [PATCH v4 23/32] hw/acpi/ged: Call pcihp plug callbacks in hotplug handler implementation Eric Auger
2025-06-27  9:55 ` [PATCH v4 24/32] hw/acpi/pcihp: Remove root arg in acpi_pcihp_init Eric Auger
2025-06-30 12:37   ` Jonathan Cameron
2025-06-30 12:37     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 25/32] hw/acpi/ged: Prepare the device to react to PCI hotplug events Eric Auger
2025-06-30 12:49   ` Jonathan Cameron
2025-06-30 12:49     ` Jonathan Cameron via
2025-07-01  9:27     ` Eric Auger
2025-06-27  9:55 ` [PATCH v4 26/32] hw/acpi/ged: Support migration of AcpiPciHpState Eric Auger
2025-06-30 12:50   ` Jonathan Cameron
2025-06-30 12:50     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 27/32] hw/core/sysbus: Introduce sysbus_mmio_map_name() helper Eric Auger
2025-06-27  9:55 ` [PATCH v4 28/32] hw/arm/virt: Minor code reshuffling in create_acpi_ged Eric Auger
2025-06-30 12:51   ` Jonathan Cameron
2025-06-30 12:51     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 29/32] hw/arm/virt: Let virt support pci hotplug/unplug GED event Eric Auger
2025-06-30 12:53   ` Jonathan Cameron
2025-06-30 12:53     ` Jonathan Cameron via
2025-07-01  9:28     ` Eric Auger
2025-06-27  9:55 ` [PATCH v4 30/32] tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp tests Eric Auger
2025-06-30 12:53   ` Jonathan Cameron
2025-06-30 12:53     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 31/32] tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test Eric Auger
2025-06-30 12:55   ` Jonathan Cameron
2025-06-30 12:55     ` Jonathan Cameron via
2025-06-27  9:55 ` [PATCH v4 32/32] qtest/bios-tables-test: Create DSDT acpipcihp and hpoffacpiindex variant blobs 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.