[GIT PULL] PCI changes for v6.6

From: Bjorn Helgaas
Date: Wed Aug 30 2023 - 19:38:28 EST


The following changes since commit 06c2afb862f9da8dc5efa4b6076a0e48c3fbaaa5:

Linux 6.5-rc1 (2023-07-09 13:53:13 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 43cc31da9146f9ce60e4a03d96ef0807c2cdac94:

Merge branch 'pci/misc' (2023-08-29 11:03:57 -0500)

----------------------------------------------------------------

Enumeration:

- Add locking to read/modify/write PCIe Capability Register accessors for
Link Control and Root Control

- Use pci_dev_id() when possible instead of manually composing ID from
dev->bus->number and dev->devfn

Resource management:

- Move prototypes for __weak sysfs resource files to linux/pci.h to fix
"no previous prototype" warnings

- Make more I/O port accesses depend on HAS_IOPORT

- Use devm_platform_get_and_ioremap_resource() instead of open-coding
platform_get_resource() followed by devm_ioremap_resource()

Power management:

- Ensure devices are powered up while accessing VPD

- If device is powered-up, keep it that way while polling for PME

- Only read PCI_PM_CTRL register when available, to avoid reading the
wrong register and corrupting dev->current_state

Virtualization:

- Avoid Secondary Bus Reset on NVIDIA T4 GPUs

Error handling:

- Remove unused pci_disable_pcie_error_reporting()

- Unexport pci_enable_pcie_error_reporting(), used only by aer.c

- Unexport pcie_port_bus_type, used only by PCI core

VGA:

- Simplify and clean up typos in VGA arbiter

Apple PCIe controller driver:

- Initialize pcie->nvecs (number of available MSIs) before use

Broadcom iProc PCIe controller driver:

- Use of_property_read_bool() instead of low-level accessors for boolean
properties

Broadcom STB PCIe controller driver:

- Assert PERST# when probing BCM2711 because some bootloaders don't do it

Freescale i.MX6 PCIe controller driver:

- Add .host_deinit() callback so we can clean up things like regulators
on probe failure or driver unload

Freescale Layerscape PCIe controller driver:

- Add support for link-down notification so the endpoint driver can
process LINK_DOWN events

- Add suspend/resume support, including manual PME_Turn_off/PME_TO_Ack
handshake

- Save Link Capabilities during probe so they can be restored when
handling a link-up event, since the controller loses the Link Width and
Link Speed values during reset

Intel VMD host bridge driver:

- Fix disable of bridge windows during domain reset; previously we
cleared the base/limit registers, which actually left the windows
enabled

Marvell MVEBU PCIe controller driver:

- Remove unused busn member

Microchip PolarFlare PCIe controller driver:

- Fix interrupt bit definitions so the SEC and DED interrupt handlers
work correctly

- Make driver buildable as a module

- Read FPGA MSI configuration parameters from hardware instead of
hard-coding them

Microsoft Hyper-V host bridge driver:

- To avoid a NULL pointer dereference, skip MSI restore after hibernate
if MSI/MSI-X hasn't been enabled

NVIDIA Tegra194 PCIe controller driver:

- Revert "PCI: tegra194: Enable support for 256 Byte payload" because
Linux doesn't know how to reduce MPS from to 256 to 128 bytes for
Endpoints below a Switch (because other devices below the Switch might
already be operating), which leads to Malformed TLP errors

Qualcomm PCIe controller driver:

- Add DT and driver support for interconnect bandwidth voting for
"pcie-mem" and "cpu-pcie" interconnects

- Fix broken SDX65 "compatible" DT property

- Configure controller so MHI bus master clock will be switched off while
in ASPM L1.x states

- Use alignment restriction from EPF core in EPF MHI driver

- Add Endpoint eDMA support

- Add MHI eDMA support

- Add Snapdragon SM8450 support to the EPF MHI driversupport

- Add MHI eDMA support

- Add Snapdragon SM8450 support to the EPF MHI driversupport

- Add MHI eDMA support

- Add Snapdragon SM8450 support to the EPF MHI driversupport

- Add MHI eDMA support

- Add Snapdragon SM8450 support to the EPF MHI driver

- Use iATU for EPF MHI transfers smaller than 4K to avoid eDMA setup
latency

- Add sa8775p DT binding and driver support

Rockchip PCIe controller driver:

- Use 64-bit mask on MSI 64-bit PCI address to avoid zeroing out the
upper 32 bits

SiFive FU740 PCIe controller driver:

- Set the supported number of MSI vectors so we can use all available MSI
interrupts

Synopsys DesignWare PCIe controller driver:

- Add generic dwc suspend/resume APIs (dw_pcie_suspend_noirq() and
dw_pcie_resume_noirq()) to be called by controller driver
suspend/resume ops, and a controller callback to send PME_Turn_Off

MicroSemi Switchtec management driver:

- Add support for PCIe Gen5 devices

Miscellaneous:

- Reorder and compress to reduce size of struct pci_dev

- Fix race in DOE destroy_work_on_stack()

- Add stubs to avoid casts between incompatible function types

- Explicitly include correct DT includes to untangle headers

----------------------------------------------------------------
Alex Williamson (2):
PCI/VPD: Add runtime power management to sysfs interface
PCI: Fix runtime PM race with PME polling

Arnd Bergmann (1):
PCI/sysfs: Move declarations to linux/pci.h

Bjorn Helgaas (40):
PCI/AER: Drop unused pci_disable_pcie_error_reporting()
PCI/AER: Unexport pci_enable_pcie_error_reporting()
PCI: Unexport pcie_port_bus_type
PCI: Remove unnecessary initializations
PCI: Fix printk field formatting
PCI: Use consistent put_user() pointer types
PCI/AER: Simplify AER_RECOVER_RING_SIZE definition
PCI: Simplify pci_pio_to_address()
PCI: Simplify pci_dev_driver()
PCI: Fix pci_bus_resetable(), pci_slot_resetable() name typos
PCI: Fix typos in docs and comments
PCI: Fix code formatting inconsistencies
PCI: Tidy config space save/restore messages
PCI: Simplify pcie_capability_clear_and_set_word() control flow
Merge branch 'pci/aer'
Merge branch 'pci/hotplug'
Merge branch 'pci/ioport'
Merge branch 'pci/pcie-rmw'
Merge branch 'pci/pm'
Merge branch 'pci/virtualization'
Merge branch 'pci/vga'
Merge branch 'pci/vpd'
Merge branch 'pci/controller/apple'
Merge branch 'pci/controller/brcmstb'
Merge branch 'pci/controller/dwc'
Merge branch 'pci/controller/fu740'
Merge branch 'pci/controller/hv'
Merge branch 'pci/controller/iproc'
Merge branch 'pci/controller/layerscape'
Merge branch 'pci/controller/microchip'
Merge branch 'pci/controller/qcom'
Merge branch 'pci/controller/qcom-edma'
Merge branch 'pci/controller/qcom-ep'
Merge branch 'pci/controller/rockchip'
Merge branch 'pci/controller/tegra194'
Merge branch 'pci/controller/vmd'
Merge branch 'pci/controller/remove-void-cast'
Merge branch 'pci/controller/resources'
Merge branch 'pci/controller/switchtec'
Merge branch 'pci/misc'

Christophe JAILLET (3):
PCI: Reorder pci_dev fields to reduce holes
PCI: Change pdev->rom_attr_enabled to single bit
x86/PCI: Use struct_size() in pirq_convert_irt_table()

Colin Ian King (1):
PCI: ibmphp: Make read-only arrays static

Daire McNamara (7):
PCI: microchip: Correct the DED and SEC interrupt bit offsets
PCI: microchip: Enable building driver as a module
PCI: microchip: Align register, offset, and mask names with HW docs
PCI: microchip: Enable event handlers to access bridge and control pointers
PCI: microchip: Clean up initialisation of interrupts
PCI: microchip: Gather MSI information from hardware config registers
PCI: microchip: Re-partition code between probe() and init()

Dexuan Cui (1):
PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation

Feiyang Chen (1):
PCI/PM: Only read PCI_PM_CTRL register when available

Frank Li (3):
PCI: layerscape: Add support for link-down notification
PCI: Add PCIE_PME_TO_L2_TIMEOUT_US L2 ready timeout value
PCI: dwc: Implement generic suspend/resume functionality

Hou Zhiqiang (1):
PCI: layerscape: Add power management support for ls1028a

Ilpo Järvinen (12):
PCI: Add locking to RMW PCI Express Capability Register accessors
PCI: Make link retraining use RMW accessors for changing LNKCTL
PCI: pciehp: Use RMW accessors for changing LNKCTL
PCI/ASPM: Use RMW accessors for changing LNKCTL
drm/amdgpu: Use RMW accessors for changing LNKCTL
drm/radeon: Use RMW accessors for changing LNKCTL
net/mlx5: Use RMW accessors for changing LNKCTL
wifi: ath11k: Use RMW accessors for changing LNKCTL
wifi: ath12k: Use RMW accessors for changing LNKCTL
wifi: ath10k: Use RMW accessors for changing LNKCTL
PCI: Document the Capability accessor RMW improvements
net/mlx5: Convert PCI error values to generic errnos

Ira Weiny (1):
PCI/DOE: Fix destroy_work_on_stack() race

Jim Quinlan (2):
PCI: brcmstb: Assert PERST# on BCM2711
PCI: brcmstb: Remove stale comment

Kelvin Cao (2):
PCI: switchtec: Use normal comment style
PCI: switchtec: Add support for PCIe Gen5 devices

Krishna chaitanya chundru (2):
dt-bindings: PCI: qcom: ep: Add interconnects path
PCI: qcom-ep: Add ICC bandwidth voting support

Krzysztof Kozlowski (1):
dt-bindings: PCI: qcom: Fix SDX65 compatible

Krzysztof Wilczyński (3):
PCI: meson: Remove cast between incompatible function type
PCI: keembay: Remove cast between incompatible function type
PCI: microchip: Remove cast between incompatible function type

Manivannan Sadhasivam (9):
PCI: qcom-ep: Switch MHI bus master clock off during L1SS
PCI: qcom-ep: Pass alignment restriction to the EPF core
PCI: epf-mhi: Make use of the alignment restriction from EPF core
PCI: qcom-ep: Add eDMA support
PCI: epf-mhi: Add eDMA support
PCI: epf-mhi: Add support for SM8450
PCI: epf-mhi: Use iATU for small transfers
PCI: endpoint: Add kernel-doc for pci_epc_mem_init() API
PCI: qcom-ep: Treat unknown IRQ events as an error

Mark Brown (1):
PCI: dwc: Provide deinit callback for i.MX

Mrinmay Sarkar (2):
dt-bindings: PCI: qcom: Add sa8775p compatible
PCI: qcom: Add support for sa8775p SoC

Niklas Schnelle (2):
PCI: Make quirk using inw() depend on HAS_IOPORT
PCI/sysfs: Make I/O resource depend on HAS_IOPORT

Nirmal Patel (1):
PCI: vmd: Disable bridge window for domain reset

Pali Rohár (1):
PCI: mvebu: Remove unused busn member

Rick Wertenbroek (1):
PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address

Rob Herring (2):
PCI: iproc: Use of_property_read_bool() for boolean properties
PCI: Explicitly include correct DT includes

Sui Jingfeng (6):
PCI/VGA: Correct vga_str_to_iostate() io_state parameter type
PCI/VGA: Correct vga_update_device_decodes() parameter type
PCI/VGA: Simplify vga_arbiter_notify_clients()
PCI/VGA: Simplify vga_client_register()
PCI/VGA: Replace full MIT license text with SPDX identifier
PCI/VGA: Fix typos

Sven Peter (1):
PCI: apple: Initialize pcie->nvecs before use

Vidya Sagar (1):
Revert "PCI: tegra194: Enable support for 256 Byte payload"

Wu Zongyong (1):
PCI: Mark NVIDIA T4 GPUs to avoid bus reset

Xiaowei Bao (1):
PCI: layerscape: Add workaround for lost link capabilities during reset

Xiongfeng Wang (3):
PCI: apple: Use pci_dev_id() to simplify the code
PCI/AER: Use pci_dev_id() to simplify the code
PCI/IOV: Use pci_dev_id() to simplify the code

Yang Li (4):
PCI: rcar-gen2: Use devm_platform_get_and_ioremap_resource()
PCI: v3: Use devm_platform_get_and_ioremap_resource()
PCI: xgene-msi: Use devm_platform_get_and_ioremap_resource()
PCI: imx6: Use devm_platform_get_and_ioremap_resource()

Yong-Xuan Wang (1):
PCI: fu740: Set the number of MSI vectors

Yue Haibing (1):
PCI: Remove unused function declarations

Zheng Zengkai (1):
PCI/P2PDMA: Use pci_dev_id() to simplify the code

Documentation/PCI/pci-error-recovery.rst | 12 +-
Documentation/PCI/pciebus-howto.rst | 14 +-
.../devicetree/bindings/pci/qcom,pcie-ep.yaml | 27 +-
.../devicetree/bindings/pci/qcom,pcie.yaml | 28 ++
arch/alpha/include/asm/pci.h | 3 -
arch/x86/pci/irq.c | 4 +-
drivers/gpu/drm/amd/amdgpu/cik.c | 36 +-
drivers/gpu/drm/amd/amdgpu/si.c | 36 +-
drivers/gpu/drm/radeon/cik.c | 36 +-
drivers/gpu/drm/radeon/si.c | 37 +-
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 21 +-
drivers/net/wireless/ath/ath10k/pci.c | 9 +-
drivers/net/wireless/ath/ath11k/pci.c | 10 +-
drivers/net/wireless/ath/ath12k/pci.c | 10 +-
drivers/pci/access.c | 40 +-
drivers/pci/controller/Kconfig | 2 +-
drivers/pci/controller/cadence/pci-j721e.c | 2 +-
drivers/pci/controller/cadence/pcie-cadence-plat.c | 3 +-
drivers/pci/controller/cadence/pcie-cadence.c | 1 +
drivers/pci/controller/cadence/pcie-cadence.h | 2 +-
drivers/pci/controller/dwc/pci-dra7xx.c | 2 +-
drivers/pci/controller/dwc/pci-exynos.c | 2 +-
drivers/pci/controller/dwc/pci-imx6.c | 6 +-
drivers/pci/controller/dwc/pci-keystone.c | 1 -
drivers/pci/controller/dwc/pci-layerscape-ep.c | 20 +
drivers/pci/controller/dwc/pci-layerscape.c | 140 ++++++-
drivers/pci/controller/dwc/pci-meson.c | 13 +-
drivers/pci/controller/dwc/pcie-artpec6.c | 2 +-
drivers/pci/controller/dwc/pcie-designware-host.c | 71 ++++
drivers/pci/controller/dwc/pcie-designware-plat.c | 2 +-
drivers/pci/controller/dwc/pcie-designware.c | 2 +-
drivers/pci/controller/dwc/pcie-designware.h | 28 ++
drivers/pci/controller/dwc/pcie-dw-rockchip.c | 2 +-
drivers/pci/controller/dwc/pcie-fu740.c | 1 +
drivers/pci/controller/dwc/pcie-intel-gw.c | 2 +
drivers/pci/controller/dwc/pcie-keembay.c | 11 +-
drivers/pci/controller/dwc/pcie-kirin.c | 3 +-
drivers/pci/controller/dwc/pcie-qcom-ep.c | 81 +++-
drivers/pci/controller/dwc/pcie-qcom.c | 3 +-
drivers/pci/controller/dwc/pcie-tegra194.c | 11 -
drivers/pci/controller/dwc/pcie-uniphier-ep.c | 2 +-
.../pci/controller/mobiveil/pcie-mobiveil-host.c | 3 -
drivers/pci/controller/pci-ftpci100.c | 3 +-
drivers/pci/controller/pci-host-common.c | 2 +-
drivers/pci/controller/pci-hyperv.c | 3 +
drivers/pci/controller/pci-ixp4xx.c | 3 +-
drivers/pci/controller/pci-loongson.c | 2 +-
drivers/pci/controller/pci-mvebu.c | 1 -
drivers/pci/controller/pci-rcar-gen2.c | 3 +-
drivers/pci/controller/pci-v3-semi.c | 6 +-
drivers/pci/controller/pci-xgene-msi.c | 3 +-
drivers/pci/controller/pcie-altera.c | 5 +-
drivers/pci/controller/pcie-apple.c | 10 +-
drivers/pci/controller/pcie-brcmstb.c | 6 +-
drivers/pci/controller/pcie-iproc-msi.c | 5 +-
drivers/pci/controller/pcie-microchip-host.c | 407 ++++++++++++---------
drivers/pci/controller/pcie-rockchip-host.c | 4 +-
drivers/pci/controller/pcie-rockchip.c | 1 +
drivers/pci/controller/pcie-rockchip.h | 6 +-
drivers/pci/controller/vmd.c | 19 +-
drivers/pci/doe.c | 2 +-
drivers/pci/endpoint/functions/pci-epf-mhi.c | 286 ++++++++++++++-
drivers/pci/endpoint/functions/pci-epf-vntb.c | 32 +-
drivers/pci/endpoint/pci-epc-core.c | 1 -
drivers/pci/endpoint/pci-epc-mem.c | 10 +
drivers/pci/hotplug/acpiphp.h | 1 -
drivers/pci/hotplug/cpci_hotplug.h | 2 -
drivers/pci/hotplug/ibmphp.h | 2 -
drivers/pci/hotplug/ibmphp_pci.c | 10 +-
drivers/pci/hotplug/pciehp_hpc.c | 12 +-
drivers/pci/iov.c | 3 +-
drivers/pci/msi/irqdomain.c | 4 +-
drivers/pci/p2pdma.c | 5 +-
drivers/pci/pci-driver.c | 18 +-
drivers/pci/pci-sysfs.c | 4 +
drivers/pci/pci.c | 72 ++--
drivers/pci/pci.h | 41 +--
drivers/pci/pcie/aer.c | 22 +-
drivers/pci/pcie/aspm.c | 30 +-
drivers/pci/probe.c | 4 +-
drivers/pci/quirks.c | 48 ++-
drivers/pci/setup-bus.c | 2 +-
drivers/pci/setup-res.c | 4 +-
drivers/pci/switch/switchtec.c | 158 +++++---
drivers/pci/syscall.c | 12 +-
drivers/pci/vgaarb.c | 358 +++++++++---------
drivers/pci/vpd.c | 34 +-
include/linux/aer.h | 11 -
include/linux/pci.h | 46 ++-
include/linux/switchtec.h | 1 +
include/linux/vgaarb.h | 27 +-
91 files changed, 1622 insertions(+), 870 deletions(-)