[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(-)