[GIT PULL] PCI changes for v6.10

From: Bjorn Helgaas
Date: Mon May 20 2024 - 18:29:56 EST


The following changes since commit 4cece764965020c22cff7665b18a012006359095:

Linux 6.9-rc1 (2024-03-24 14:10:05 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.10-changes

for you to fetch changes up to 7ecf13fd35feed2e888686320d378769305b8322:

Merge branch 'pci/misc' (2024-05-16 18:14:14 -0500)

----------------------------------------------------------------
Enumeration:

- Skip E820 checks for MCFG ECAM regions for new (2016+) machines, since
there's no requirement to describe them in E820 and some platforms
require ECAM to work (Bjorn Helgaas)

- Rename PCI_IRQ_LEGACY to PCI_IRQ_INTX to be more specific (Damien Le
Moal)

- Remove last user and pci_enable_device_io() (Heiner Kallweit)

- Wait for Link Training==0 to avoid possible race (Ilpo Järvinen)

- Skip waiting for devices that have been disconnected while suspended
(Ilpo Järvinen)

- Clear Secondary Status errors after enumeration since Master Aborts and
Unsupported Request errors are an expected part of enumeration (Vidya
Sagar)

MSI:

- Remove unused IMS (Interrupt Message Store) support (Bjorn Helgaas)

Error handling:

- Mask Genesys GL975x SD host controller Replay Timer Timeout correctable
errors caused by a hardware defect; the errors cause interrupts that
prevent system suspend (Kai-Heng Feng)

- Fix EDR-related _DSM support, which previously evaluated revision 5 but
assumed revision 6 behavior (Kuppuswamy Sathyanarayanan)

ASPM:

- Simplify link state definitions and mask calculation (Ilpo Järvinen)

Power management:

- Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports, where BIOS
apparently doesn't know how to put them back in D0 (Mario Limonciello)

CXL:

- Support resetting CXL devices; special handling required because CXL
Ports mask Secondary Bus Reset by default (Dave Jiang)

DOE:

- Support DOE Discovery Version 2 (Alexey Kardashevskiy)

Endpoint framework:

- Set endpoint BAR to be 64-bit if the driver says that's all the device
supports, in addition to doing so if the size is >2GB (Niklas Cassel)

- Simplify endpoint BAR allocation and setting interfaces (Niklas Cassel)

Cadence PCIe controller driver:

- Drop DT binding redundant msi-parent and pci-bus.yaml (Krzysztof
Kozlowski)

Cadence PCIe endpoint driver:

- Configure endpoint BARs to be 64-bit based on the BAR type, not the BAR
value (Niklas Cassel)

Freescale Layerscape PCIe controller driver:

- Convert DT binding to YAML (Frank Li)

MediaTek MT7621 PCIe controller driver:

- Add DT binding missing 'reg' property for child Root Ports (Krzysztof
Kozlowski)

- Fix theoretical string truncation in PHY name (Sergio Paracuellos)

NVIDIA Tegra194 PCIe controller driver:

- Return success for endpoint probe instead of falling through to the
failure path (Vidya Sagar)

Renesas R-Car PCIe controller driver:

- Add DT binding missing IOMMU properties (Geert Uytterhoeven)

- Add DT binding R-Car V4H compatible for host and endpoint mode
(Yoshihiro Shimoda)

Rockchip PCIe controller driver:

- Configure endpoint BARs to be 64-bit based on the BAR type, not the BAR
value (Niklas Cassel)

- Add DT binding missing maxItems to ep-gpios (Krzysztof Kozlowski)

- Set the Subsystem Vendor ID, which was previously zero because it was
masked incorrectly (Rick Wertenbroek)

Synopsys DesignWare PCIe controller driver:

- Restructure DBI register access to accommodate devices where this
requires Refclk to be active (Manivannan Sadhasivam)

- Remove the deinit() callback, which was only need by the
pcie-rcar-gen4, and do it directly in that driver (Manivannan
Sadhasivam)

- Add dw_pcie_ep_cleanup() so drivers that support PERST# can clean up
things like eDMA (Manivannan Sadhasivam)

- Rename dw_pcie_ep_exit() to dw_pcie_ep_deinit() to make it parallel to
dw_pcie_ep_init() (Manivannan Sadhasivam)

- Rename dw_pcie_ep_init_complete() to dw_pcie_ep_init_registers() to
reflect the actual functionality (Manivannan Sadhasivam)

- Call dw_pcie_ep_init_registers() directly from all the glue drivers,
not just those that require active Refclk from the host (Manivannan
Sadhasivam)

- Remove the "core_init_notifier" flag, which was an obscure way for glue
drivers to indicate that they depend on Refclk from the host
(Manivannan Sadhasivam)

TI J721E PCIe driver:

- Add DT binding J784S4 SoC Device ID (Siddharth Vadapalli)

- Add DT binding J722S SoC support (Siddharth Vadapalli)

TI Keystone PCIe controller driver:

- Add DT binding missing num-viewport, phys and phy-name properties (Jan
Kiszka)

Miscellaneous:

- Constify and annotate with __ro_after_init (Heiner Kallweit)

- Convert DT bindings to YAML (Krzysztof Kozlowski)

- Check for kcalloc() failure in of_pci_prop_intr_map() (Duoming Zhou)

----------------------------------------------------------------
Alexey Kardashevskiy (1):
PCI/DOE: Support discovery version 2

Andy Shevchenko (1):
PCI/MSI: Make error path handling follow the standard pattern

Bjorn Helgaas (28):
Revert "PCI/MSI: Provide stubs for IMS functions"
Revert "PCI/MSI: Provide pci_ims_alloc/free_irq()"
Revert "PCI/MSI: Provide IMS (Interrupt Message Store) support"
Revert "iommu/amd: Enable PCI/IMS"
Revert "iommu/vt-d: Enable PCI/IMS"
Revert "x86/apic/msi: Enable PCI/IMS"
Revert "genirq/msi: Provide constants for PCI/IMS support"
PCI: Update pci_find_capability() stub return types
x86/pci: Skip early E820 check for ECAM region
Merge branch 'pci/aer'
Merge branch 'pci/aspm'
Merge branch 'pci/cxl'
Merge branch 'pci/doe'
Merge branch 'pci/edr'
Merge branch 'pci/enumeration'
Merge branch 'pci/hotplug'
Merge branch 'pci/msi'
Merge branch 'pci/of'
Merge branch 'pci/pm'
Merge branch 'pci/dt-bindings'
Merge branch 'pci/controller/cadence'
Merge branch 'pci/controller/dwc'
Merge branch 'pci/controller/mt7621'
Merge branch 'pci/controller/rockchip'
Merge branch 'pci/controller/tegra194'
Merge branch 'pci/endpoint'
Merge branch 'pci/ims-removal'
Merge branch 'pci/misc'

Damien Le Moal (29):
PCI/MSI: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
PCI/portdrv: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
Documentation: PCI: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
ASoC: Intel: avs: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
usb: hcd-pci: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
tty: 8250_pci: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
platform/x86: intel_ips: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
ntb: idt: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
mfd: intel-lpss: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
drm/amdgpu: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
IB/qib: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
RDMA/vmw_pvrdma: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
VMCI: Use PCI_IRQ_ALL_TYPES to remove PCI_IRQ_LEGACY use
net: amd-xgbe: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
net: atlantic: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
net: alx: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
r8169: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
net: wangxun: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
wifi: ath10k: Refer to INTX instead of LEGACY
wifi: rtw88: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
wifi: rtw89: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: arcmsr: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: hpsa: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: ipr: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: megaraid_sas: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: mpt3sas: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: pmcraid: Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY
scsi: vmw_pvscsi: Do not use PCI_IRQ_LEGACY instead of PCI_IRQ_LEGACY
PCI: Remove PCI_IRQ_LEGACY

Dave Jiang (5):
PCI/CXL: Move CXL Vendor ID to pci_ids.h
PCI: Lock upstream bridge for pci_reset_function()
PCI/CXL: Fail bus reset if upstream CXL Port has SBR masked
PCI/CXL: Add 'cxl_bus' reset method for devices below CXL Ports
cxl: Add post-reset warning if reset results in loss of previously committed HDM decoders

Duoming Zhou (1):
PCI: of_property: Return error for int_map allocation failure

Frank Li (1):
dt-bindings: PCI: layerscape-pci: Convert to YAML format

Geert Uytterhoeven (1):
dt-bindings: PCI: rcar-pci-host: Add missing IOMMU properties

Heiner Kallweit (4):
PCI: Constify pcibus_class
PCI: Annotate pci_cache_line_size variables as __ro_after_init
ata: pata_cs5520: Remove unnecessary call to pci_enable_device_io()
PCI: Remove unused pci_enable_device_io()

Ilpo Järvinen (8):
PCI: Wait for Link Training==0 before starting Link retrain
PCI: Clarify intent of LT wait
PCI/ERR: Cleanup misleading indentation inside if conditions
PCI: Clean up accessor macro formatting
PCI/ASPM: Consolidate link state defines
PCI/ASPM: Clean up ASPM disable/enable mask calculation
PCI: Make pcie_bandwidth_capable() static
PCI: Do not wait for disconnected devices when resuming

Jan Kiszka (1):
dt-bindings: PCI: ti,am65: Fix remaining binding warnings

Kai-Heng Feng (1):
PCI: Mask Replay Timer Timeout errors for Genesys GL975x SD host controller

Krzysztof Kozlowski (5):
dt-bindings: PCI: cdns,cdns-pcie-host: Drop redundant msi-parent and pci-bus.yaml
dt-bindings: PCI: mediatek,mt7621: Add missing child node reg
dt-bindings: PCI: host-bridges: Switch from deprecated pci-bus.yaml
dt-bindings: PCI: mediatek,mt7621-pcie: Switch from deprecated pci-bus.yaml
dt-bindings: PCI: rockchip,rk3399-pcie: Add missing maxItems to ep-gpios

Kunwu Chan (1):
x86/pci: Remove OLPC dead code

Kuppuswamy Sathyanarayanan (3):
PCI/AER: Update aer-inject tool source URL
PCI/EDR: Align EDR_PORT_DPC_ENABLE_DSM with PCI Firmware r3.3
PCI/EDR: Align EDR_PORT_LOCATE_DSM with PCI Firmware r3.3

Manivannan Sadhasivam (8):
PCI: dwc: ep: Fix DBI access failure for drivers requiring refclk from host
PCI: dwc: ep: Add Kernel-doc comments for APIs
PCI: dwc: ep: Remove deinit() callback from struct dw_pcie_ep_ops
PCI: dwc: ep: Rename dw_pcie_ep_exit() to dw_pcie_ep_deinit()
PCI: dwc: ep: Introduce dw_pcie_ep_cleanup() API for drivers supporting PERST#
PCI: dwc: ep: Rename dw_pcie_ep_init_complete() to dw_pcie_ep_init_registers()
PCI: dwc: ep: Call dw_pcie_ep_init_registers() API directly from all glue drivers
PCI: endpoint: Remove "core_init_notifier" flag

Mario Limonciello (1):
PCI/PM: Avoid D3cold for HP Pavilion 17 PC/1972 PCIe Ports

Nam Cao (2):
PCI: hotplug: Document unchecked return value of pci_hp_add_bridge()
PCI: hotplug: Remove obsolete sgi_hotplug TODO notes

Niklas Cassel (7):
PCI: cadence: Set a 64-bit BAR if requested
PCI: rockchip-ep: Set a 64-bit BAR if requested
PCI: endpoint: pci-epf-test: Simplify pci_epf_test_alloc_space() loop
PCI: endpoint: Allocate a 64-bit BAR if that is the only option
PCI: endpoint: pci-epf-test: Remove superfluous code
PCI: endpoint: pci-epf-test: Simplify pci_epf_test_set_bar() loop
PCI: endpoint: pci-epf-test: Clean up pci_epf_test_unbind()

Rick Wertenbroek (1):
PCI: rockchip-ep: Remove wrong mask on subsys_vendor_id

Sergio Paracuellos (1):
PCI: mt7621: Fix string truncation in mt7621_pcie_parse_port()

Siddharth Vadapalli (2):
dt-bindings: PCI: ti,j721e-pci-host: Add device-id for TI's J784S4 SoC
dt-bindings: PCI: ti,j721e-pci-host: Add support for J722S SoC

Vidya Sagar (2):
PCI: tegra194: Fix probe path for Endpoint mode
PCI: Clear Secondary Status errors after enumeration

Yoshihiro Shimoda (2):
dt-bindings: PCI: rcar-gen4-pci-host: Add R-Car V4H compatible
dt-bindings: PCI: rcar-gen4-pci-ep: Add R-Car V4H compatible

Documentation/PCI/msi-howto.rst | 2 +-
Documentation/PCI/pci.rst | 2 +-
Documentation/PCI/pcieaer-howto.rst | 2 +-
.../devicetree/bindings/pci/amlogic,axg-pcie.yaml | 2 +-
.../devicetree/bindings/pci/apple,pcie.yaml | 2 +-
.../devicetree/bindings/pci/brcm,iproc-pcie.yaml | 2 +-
.../devicetree/bindings/pci/brcm,stb-pcie.yaml | 2 +-
.../bindings/pci/cdns,cdns-pcie-host.yaml | 3 -
.../devicetree/bindings/pci/cdns-pcie-host.yaml | 2 +-
.../devicetree/bindings/pci/faraday,ftpci100.yaml | 2 +-
.../bindings/pci/fsl,layerscape-pcie-ep.yaml | 102 +++++++++
.../bindings/pci/fsl,layerscape-pcie.yaml | 167 ++++++++++++++
.../devicetree/bindings/pci/host-generic-pci.yaml | 2 +-
.../devicetree/bindings/pci/intel,ixp4xx-pci.yaml | 2 +-
.../bindings/pci/intel,keembay-pcie.yaml | 2 +-
.../devicetree/bindings/pci/layerscape-pci.txt | 79 -------
.../devicetree/bindings/pci/loongson.yaml | 2 +-
.../bindings/pci/mediatek,mt7621-pcie.yaml | 7 +-
.../bindings/pci/mediatek-pcie-gen3.yaml | 2 +-
.../bindings/pci/microchip,pcie-host.yaml | 2 +-
.../devicetree/bindings/pci/qcom,pcie-common.yaml | 2 +-
.../devicetree/bindings/pci/qcom,pcie.yaml | 2 +-
.../devicetree/bindings/pci/rcar-gen4-pci-ep.yaml | 4 +-
.../bindings/pci/rcar-gen4-pci-host.yaml | 4 +-
.../devicetree/bindings/pci/rcar-pci-host.yaml | 5 +-
.../bindings/pci/renesas,pci-rcar-gen2.yaml | 2 +-
.../bindings/pci/rockchip,rk3399-pcie.yaml | 3 +-
.../devicetree/bindings/pci/snps,dw-pcie.yaml | 2 +-
.../devicetree/bindings/pci/ti,am65-pci-host.yaml | 22 +-
.../devicetree/bindings/pci/ti,j721e-pci-host.yaml | 5 +
.../devicetree/bindings/pci/versatile.yaml | 2 +-
.../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 2 +-
.../bindings/pci/xlnx,axi-pcie-host.yaml | 2 +-
.../devicetree/bindings/pci/xlnx,nwl-pcie.yaml | 2 +-
.../devicetree/bindings/pci/xlnx,xdma-host.yaml | 2 +-
Documentation/translations/zh_CN/PCI/msi-howto.rst | 2 +-
Documentation/translations/zh_CN/PCI/pci.rst | 2 +-
arch/x86/kernel/apic/msi.c | 5 -
arch/x86/pci/mmconfig-shared.c | 40 +++-
arch/x86/pci/olpc.c | 3 -
drivers/ata/pata_cs5520.c | 6 -
drivers/cxl/core/pci.c | 35 ++-
drivers/cxl/core/regs.c | 2 +-
drivers/cxl/cxl.h | 2 +
drivers/cxl/cxlpci.h | 1 -
drivers/cxl/pci.c | 24 ++-
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 +-
drivers/infiniband/hw/qib/qib_iba7220.c | 2 +-
drivers/infiniband/hw/qib/qib_iba7322.c | 5 +-
drivers/infiniband/hw/qib/qib_pcie.c | 2 +-
drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 2 +-
drivers/iommu/amd/iommu.c | 17 +-
drivers/iommu/intel/irq_remapping.c | 19 +-
drivers/mfd/intel-lpss-pci.c | 2 +-
drivers/misc/vmw_vmci/vmci_guest.c | 3 +-
drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 2 +-
drivers/net/ethernet/aquantia/atlantic/aq_cfg.h | 2 +-
drivers/net/ethernet/aquantia/atlantic/aq_hw.h | 2 +-
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 2 +-
.../net/ethernet/aquantia/atlantic/aq_pci_func.c | 9 +-
.../ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c | 2 +-
.../ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c | 2 +-
.../ethernet/aquantia/atlantic/hw_atl2/hw_atl2.c | 2 +-
drivers/net/ethernet/atheros/alx/main.c | 2 +-
drivers/net/ethernet/realtek/r8169_main.c | 2 +-
drivers/net/ethernet/wangxun/libwx/wx_lib.c | 8 +-
drivers/net/wireless/ath/ath10k/ahb.c | 18 +-
drivers/net/wireless/ath/ath10k/pci.c | 36 ++--
drivers/net/wireless/ath/ath10k/pci.h | 6 +-
drivers/net/wireless/realtek/rtw88/pci.c | 2 +-
drivers/net/wireless/realtek/rtw89/pci.c | 2 +-
drivers/ntb/hw/idt/ntb_hw_idt.c | 2 +-
drivers/pci/access.c | 44 ++--
drivers/pci/controller/cadence/pcie-cadence-ep.c | 7 +-
drivers/pci/controller/dwc/pci-dra7xx.c | 9 +
drivers/pci/controller/dwc/pci-imx6.c | 10 +
drivers/pci/controller/dwc/pci-keystone.c | 11 +
drivers/pci/controller/dwc/pci-layerscape-ep.c | 9 +
drivers/pci/controller/dwc/pcie-artpec6.c | 15 +-
drivers/pci/controller/dwc/pcie-designware-ep.c | 240 ++++++++++++++-------
drivers/pci/controller/dwc/pcie-designware-plat.c | 11 +
drivers/pci/controller/dwc/pcie-designware.h | 14 +-
drivers/pci/controller/dwc/pcie-keembay.c | 18 +-
drivers/pci/controller/dwc/pcie-qcom-ep.c | 4 +-
drivers/pci/controller/dwc/pcie-rcar-gen4.c | 28 ++-
drivers/pci/controller/dwc/pcie-tegra194.c | 8 +-
drivers/pci/controller/dwc/pcie-uniphier-ep.c | 15 +-
drivers/pci/controller/pcie-mt7621.c | 2 +-
drivers/pci/controller/pcie-rcar-ep.c | 2 +
drivers/pci/controller/pcie-rockchip-ep.c | 10 +-
drivers/pci/doe.c | 12 +-
drivers/pci/endpoint/functions/pci-epf-test.c | 80 ++-----
drivers/pci/endpoint/pci-ep-cfs.c | 9 +
drivers/pci/endpoint/pci-epc-core.c | 22 ++
drivers/pci/endpoint/pci-epf-core.c | 9 +-
drivers/pci/hotplug/TODO | 12 +-
drivers/pci/msi/api.c | 58 +----
drivers/pci/msi/irqdomain.c | 59 -----
drivers/pci/msi/msi.c | 15 +-
drivers/pci/of_property.c | 2 +
drivers/pci/pci.c | 143 ++++++++++--
drivers/pci/pci.h | 2 -
drivers/pci/pcie/Kconfig | 2 +-
drivers/pci/pcie/aer_inject.c | 2 +-
drivers/pci/pcie/aspm.c | 182 ++++++++--------
drivers/pci/pcie/edr.c | 28 ++-
drivers/pci/pcie/err.c | 12 +-
drivers/pci/pcie/portdrv.c | 8 +-
drivers/pci/probe.c | 8 +-
drivers/pci/quirks.c | 20 ++
drivers/perf/cxl_pmu.c | 2 +-
drivers/platform/x86/intel_ips.c | 2 +-
drivers/scsi/arcmsr/arcmsr_hba.c | 2 +-
drivers/scsi/hpsa.c | 2 +-
drivers/scsi/ipr.c | 2 +-
drivers/scsi/megaraid/megaraid_sas_base.c | 4 +-
drivers/scsi/mpt3sas/mpt3sas_base.c | 2 +-
drivers/scsi/pmcraid.c | 2 +-
drivers/scsi/vmw_pvscsi.c | 2 +-
drivers/tty/serial/8250/8250_pci.c | 2 +-
drivers/usb/core/hcd-pci.c | 3 +-
include/linux/irqdomain_defs.h | 1 -
include/linux/lockdep.h | 5 +
include/linux/msi.h | 2 -
include/linux/msi_api.h | 1 -
include/linux/pci-epc.h | 7 +-
include/linux/pci.h | 74 +++----
include/linux/pci_ids.h | 2 +
include/uapi/linux/pci_regs.h | 6 +
sound/soc/intel/avs/core.c | 2 +-
130 files changed, 1232 insertions(+), 761 deletions(-)
create mode 100644 Documentation/devicetree/bindings/pci/fsl,layerscape-pcie-ep.yaml
create mode 100644 Documentation/devicetree/bindings/pci/fsl,layerscape-pcie.yaml
delete mode 100644 Documentation/devicetree/bindings/pci/layerscape-pci.txt