[PATCH v13 0/5] Simplify PCIe native ownership
From: Kuppuswamy Sathyanarayanan
Date: Sat Sep 19 2026 - 12:28:25 EST
This revives Bjorn's v12 from November 2020, rebased onto v7.3-rc3.
https://lore.kernel.org/all/20201126011816.711106-1-helgaas@xxxxxxxxxx/
The goal is unchanged. Decide who owns each PCIe port service in one
place, when we interpret the _OSC results in acpi_pci_root_create(), so
that everywhere else only has to look at host_bridge->native_X. For AER
specifically, host_bridge->native_aer becomes the single answer to the
question "may Linux touch the AER Capability?". Today callers each have
to remember to also test pcie_ports_native and pci_aer_available().
I posted v11. Bjorn took it over at v12, split the _OSC changes in two
and deferred the "pcie_ports=dpc-native" work. The v12 review comments
were agreed but never respun, and the series stalled. v13 is that
respin. Each patch carries its own changelog.
https://lore.kernel.org/r/cover.1603766889.git.sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx
Bjorn suggested reviving it in response to Guixin Liu's report that
"pcie_ports=native" no longer enables DPC. The DPC service binds on
host_bridge->native_aer, and that flag did not reflect the command line,
so DPC stayed off when firmware retained AER control. Patch 4 fixes it
by making the flag reflect it.
https://lore.kernel.org/linux-pci/20260901064554.2178688-1-kanie@xxxxxxxxxxxxxxxxx/
Patch 4 has a side effect worth calling out. drivers/cxl/core/ras.c did
not exist in 2020 and tests host_bridge->native_aer with no
pcie_ports_native fallback, so it has been quietly ignoring
"pcie_ports=native". Centralizing the check fixes that.
Two things are left for later, to keep this series a cleanup.
* pci_aer_available() stays in the DPC arm of
get_port_device_capability(), because "pcie_ports=dpc-native" still
needs it there.
* We still gate the DPC service on native_aer and ignore
OSC_PCI_EXPRESS_DPC_CONTROL, as Bjorn noted in the v12 cover letter.
Fixing it changes behavior, so it wants its own patch.
Bjorn Helgaas (2):
PCI/DPC: Ignore devices with no AER Capability
PCI: Centralize pci_aer_available() checking
Kuppuswamy Sathyanarayanan (3):
PCI: Assume control of portdrv-related features only when portdrv
enabled
PCI/ACPI: Tidy _OSC control bit checking
PCI/ACPI: Centralize pcie_ports_native checking
drivers/acpi/pci_root.c | 73 ++++++++++++++++++++++++-------
drivers/pci/hotplug/pciehp_core.c | 2 +-
drivers/pci/pci-acpi.c | 3 --
drivers/pci/pcie/aer.c | 6 +--
drivers/pci/pcie/aer_cxl_rch.c | 2 +-
drivers/pci/pcie/dpc.c | 3 ++
drivers/pci/pcie/err.c | 2 +-
drivers/pci/pcie/portdrv.c | 7 ++-
drivers/pci/probe.c | 8 ++--
9 files changed, 75 insertions(+), 31 deletions(-)
base-commit: fd73f4a6659897191fa0d40695fe370925dd3780
--
2.43.0