[GIT PULL] PCI changes for v5.15

From: Bjorn Helgaas
Date: Tue Sep 07 2021 - 17:39:47 EST


The following changes since commit e73f0f0ee7541171d89f2e2491130c7771ba58d3:

Linux 5.14-rc1 (2021-07-11 15:07:40 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git tags/pci-v5.15-changes

for you to fetch changes up to 742a4c49a82a8fe1369e4ec2af4a9bf69123cb88:

Merge branch 'remotes/lorenzo/pci/tools' (2021-09-02 14:56:52 -0500)

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

You should see a few conflicts:

drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnx2.c
Fallout from the VPD changes below. These include both PCI core and
driver changes, and the driver changes got merged via the net tree and
then reverted so everything would be merged via the PCI tree.

MAINTAINERS
Should be trivial.

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

Enumeration:
- Convert controller drivers to generic_handle_domain_irq() (Marc
Zyngier)
- Simplify VPD (Vital Product Data) access and search (Heiner Kallweit)
- Update bnx2, bnx2x, bnxt, cxgb4, cxlflash, sfc, tg3 drivers to use
simplified VPD interfaces (Heiner Kallweit)
- Run Max Payload Size quirks before configuring MPS; work around ASMedia
ASM1062 SATA MPS issue (Marek Behún)

Resource management:
- Refactor pci_ioremap_bar() and pci_ioremap_wc_bar() (Krzysztof
Wilczyński)
- Optimize pci_resource_len() to reduce kernel size (Zhen Lei)

PCI device hotplug:
- Fix a double unmap in ibmphp (Vishal Aslot)

PCIe port driver:
- Enable Bandwidth Notification only if port supports it (Stuart Hayes)

Sysfs/proc/syscalls:
- Add schedule point in proc_bus_pci_read() (Krzysztof Wilczyński)
- Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure (Krzysztof
Wilczyński)
- Return "int" from pciconfig_read() syscall (Krzysztof Wilczyński)

Virtualization:
- Extend "pci=noats" to also turn on Translation Blocking to protect
against some DMA attacks (Alex Williamson)
- Add sysfs mechanism to control the type of reset used between device
assignments to VMs (Amey Narkhede)
- Add support for ACPI _RST reset method (Shanker Donthineni)
- Add ACS quirks for Cavium multi-function devices (George Cherian)
- Add ACS quirks for NXP LX2xx0 and LX2xx2 platforms (Wasim Khan)
- Allow HiSilicon AMBA devices that appear as fake PCI devices to use
PASID and SVA (Zhangfei Gao)

Endpoint framework:
- Add support for SR-IOV Endpoint devices (Kishon Vijay Abraham I)
- Zero-initialize endpoint test tool parameters so we don't use random
parameters (Shunyong Yang)

APM X-Gene PCIe controller driver:
- Remove redundant dev_err() call in xgene_msi_probe() (ErKun Yang)

Broadcom iProc PCIe controller driver:
- Don't fail devm_pci_alloc_host_bridge() on missing 'ranges' because
it's optional on BCMA devices (Rob Herring)
- Fix BCMA probe resource handling (Rob Herring)

Cadence PCIe driver:
- Work around J7200 Link training electrical issue by increasing delays
in LTSSM (Nadeem Athani)

Intel IXP4xx PCI controller driver:
- Depend on ARCH_IXP4XX to avoid useless config questions (Geert
Uytterhoeven)

Intel Keembay PCIe controller driver:
- Add Intel Keem Bay PCIe controller (Srikanth Thokala)

Marvell Aardvark PCIe controller driver:
- Work around config space completion handling issues (Evan Wang)
- Increase timeout for config access completions (Pali Rohár)
- Emulate CRS Software Visibility bit (Pali Rohár)
- Configure resources from DT 'ranges' property to fix I/O space access
(Pali Rohár)
- Serialize INTx mask/unmask (Pali Rohár)

MediaTek PCIe controller driver:
- Add MT7629 support in DT (Chuanjia Liu)
- Fix an MSI issue (Chuanjia Liu)
- Get syscon regmap ("mediatek,generic-pciecfg"), IRQ number ("pci_irq"),
PCI domain ("linux,pci-domain") from DT properties if present (Chuanjia
Liu)

Microsoft Hyper-V host bridge driver:
- Add ARM64 support (Boqun Feng)
- Support "Create Interrupt v3" message (Sunil Muthuswamy)

NVIDIA Tegra PCIe controller driver:
- Use seq_puts(), move err_msg from stack to static, fix OF node leak
(Christophe JAILLET)

NVIDIA Tegra194 PCIe driver:
- Disable suspend when in Endpoint mode (Om Prakash Singh)
- Fix MSI-X address programming error (Om Prakash Singh)
- Disable interrupts during suspend to avoid spurious AER link down (Om
Prakash Singh)

Renesas R-Car PCIe controller driver:
- Work around hardware issue that prevents Link L1->L0 transition (Marek
Vasut)
- Fix runtime PM refcount leak (Dinghao Liu)

Rockchip DesignWare PCIe controller driver:
- Add Rockchip RK356X host controller driver (Simon Xue)

TI J721E PCIe driver:
- Add support for J7200 and AM64 (Kishon Vijay Abraham I)

Toshiba Visconti PCIe controller driver:
- Add Toshiba Visconti PCIe host controller driver (Nobuhiro Iwamatsu)

Xilinx NWL PCIe controller driver:
- Enable PCIe reference clock via CCF (Hyun Kwon)

Miscellaneous:
- Convert sta2x11 from 'pci_' to 'dma_' API (Christophe JAILLET)
- Fix pci_dev_str_match_path() alloc while atomic bug (used for kernel
parameters that specify devices) (Dan Carpenter)
- Remove pointless Precision Time Management warning when PTM is present
but not enabled (Jakub Kicinski)
- Remove surplus "break" statements (Krzysztof Wilczyński)

----------------------------------------------------------------
Alex Williamson (1):
PCI/ACS: Enforce pci=noats with Transaction Blocking

Amey Narkhede (6):
PCI: Cache PCIe Device Capabilities register
PCI: Add pcie_reset_flr() with 'probe' argument
PCI: Add array to track reset method ordering
PCI: Remove reset_fn field from pci_dev
PCI: Allow userspace to query and set device reset mechanism
PCI: Change the type of probe argument in reset functions

Andy Shevchenko (1):
PCI: Sync __pci_register_driver() stub for CONFIG_PCI=n

Arnd Bergmann (1):
PCI: hv: Generify PCI probing

Bjorn Helgaas (35):
PCI/VPD: Correct diagnostic for VPD read failure
PCI/VPD: Check Resource Item Names against those valid for type
PCI/VPD: Reject resource tags with invalid size
PCI/VPD: Don't check Large Resource Item Names for validity
PCI/VPD: Allow access to valid parts of VPD if some is invalid
PCI: Make saved capability state private to core
Merge branch 'pci/enumeration'
Merge branch 'pci/hotplug'
Merge branch 'pci/iommu'
Merge branch 'pci/irq'
Merge branch 'pci/portdrv'
Merge branch 'pci/reset'
Merge branch 'pci/resource'
Merge branch 'pci/virtualization'
Merge branch 'pci/vpd'
Merge branch 'pci/misc'
Merge branch 'pci/artpec6'
Merge branch 'pci/dwc'
Merge branch 'pci/rockchip-dwc'
Merge branch 'pci/visconti'
Merge branch 'remotes/lorenzo/pci/aardvark'
Merge branch 'remotes/lorenzo/pci/cadence'
Merge branch 'remotes/lorenzo/pci/hv'
Merge branch 'remotes/lorenzo/pci/hyper-v'
Merge branch 'remotes/lorenzo/pci/iproc'
Merge branch 'remotes/lorenzo/pci/keembay'
Merge branch 'remotes/lorenzo/pci/mediatek'
Merge branch 'remotes/lorenzo/pci/rcar'
Merge branch 'remotes/lorenzo/pci/tegra'
Merge branch 'remotes/lorenzo/pci/tegra194'
Merge branch 'remotes/lorenzo/pci/xgene'
Merge branch 'remotes/lorenzo/pci/xilinx-nwl'
Merge branch 'remotes/lorenzo/pci/endpoint'
Merge branch 'remotes/lorenzo/pci/misc'
Merge branch 'remotes/lorenzo/pci/tools'

Boqun Feng (7):
PCI: Introduce domain_nr in pci_host_bridge
PCI: Support populating MSI domains of root buses via bridges
arm64: PCI: Restructure pcibios_root_bridge_prepare()
arm64: PCI: Support root bridge preparation for Hyper-V
PCI: hv: Set ->domain_nr of pci_host_bridge at probing time
PCI: hv: Set up MSI domain at bridge probing time
PCI: hv: Turn on the host bridge probing on ARM64

Christophe JAILLET (4):
PCI: tegra: Fix OF node reference leak
PCI: tegra: Use 'seq_puts' instead of 'seq_printf'
PCI: tegra: make const array err_msg static
x86/PCI: sta2x11: switch from 'pci_' to 'dma_' API

Chuanjia Liu (4):
dt-bindings: PCI: mediatek: Update the Device tree bindings
PCI: mediatek: Add new method to get shared pcie-cfg base address
PCI: mediatek: Add new method to get irq number
PCI: mediatek: Use PCI domain to handle ports detection

Dan Carpenter (1):
PCI: Fix pci_dev_str_match_path() alloc while atomic bug

Dinghao Liu (1):
PCI: rcar: Fix runtime PM imbalance in rcar_pcie_ep_probe()

ErKun Yang (1):
PCI: xgene-msi: Remove redundant dev_err() call in xgene_msi_probe()

Evan Wang (1):
PCI: aardvark: Fix checking for PIO status

Geert Uytterhoeven (1):
PCI: controller: PCI_IXP4XX should depend on ARCH_IXP4XX

George Cherian (1):
PCI: Add ACS quirks for Cavium multi-function devices

Heiner Kallweit (37):
PCI/VPD: Treat initial 0xff as missing EEPROM
PCI/VPD: Remove pci_vpd_size() old_size argument
PCI/VPD: Make pci_vpd_wait() uninterruptible
PCI/VPD: Remove struct pci_vpd.flag
PCI/VPD: Reorder pci_read_vpd(), pci_write_vpd()
PCI/VPD: Remove struct pci_vpd_ops
PCI/VPD: Remove struct pci_vpd.valid member
PCI/VPD: Embed struct pci_vpd in struct pci_dev
PCI/VPD: Determine VPD size in pci_vpd_init()
PCI/VPD: Treat invalid VPD like missing VPD capability
PCI/VPD: Add pci_vpd_alloc()
PCI/VPD: Add pci_vpd_find_ro_info_keyword()
PCI/VPD: Add pci_vpd_check_csum()
sfc: Read VPD with pci_vpd_alloc()
sfc: Search VPD with pci_vpd_find_ro_info_keyword()
tg3: Read VPD with pci_vpd_alloc()
tg3: Validate VPD checksum with pci_vpd_check_csum()
tg3: Search VPD with pci_vpd_find_ro_info_keyword()
sfc: falcon: Read VPD with pci_vpd_alloc()
sfc: falcon: Search VPD with pci_vpd_find_ro_info_keyword()
bnx2: Search VPD with pci_vpd_find_ro_info_keyword()
bnx2: Replace open-coded byte swapping with swab32s()
bnx2x: Read VPD with pci_vpd_alloc()
bnx2x: Search VPD with pci_vpd_find_ro_info_keyword()
bnxt: Read VPD with pci_vpd_alloc()
bnxt: Search VPD with pci_vpd_find_ro_info_keyword()
cxgb4: Validate VPD checksum with pci_vpd_check_csum()
cxgb4: Remove unused vpd_param member ec
cxgb4: Search VPD with pci_vpd_find_ro_info_keyword()
scsi: cxlflash: Search VPD with pci_vpd_find_ro_info_keyword()
PCI/VPD: Stop exporting pci_vpd_find_tag()
PCI/VPD: Stop exporting pci_vpd_find_info_keyword()
PCI/VPD: Include post-processing in pci_vpd_find_tag()
PCI/VPD: Add pci_vpd_find_id_string()
cxgb4: Use pci_vpd_find_id_string() to find VPD ID string
PCI/VPD: Clean up public VPD defines and inline functions
PCI/VPD: Use unaligned access helpers

Hyun Kwon (1):
PCI: xilinx-nwl: Enable the clock through CCF

Jakub Kicinski (1):
PCI/PTM: Remove error message at boot

Jonathan Cameron (1):
PCI: Correct the pci_iomap.h header guard #endif comment

Kishon Vijay Abraham I (12):
dt-bindings: PCI: pci-ep: Add binding to specify virtual function
PCI: endpoint: Add support to add virtual function in endpoint core
PCI: endpoint: Add support to link a physical function to a virtual function
PCI: endpoint: Add virtual function number in pci_epc ops
PCI: cadence: Simplify code to get register base address for configuring BAR
PCI: cadence: Add support to configure virtual functions
misc: pci_endpoint_test: Populate sriov_configure ops to configure SR-IOV device
Documentation: PCI: endpoint/pci-endpoint-cfs: Guide to use SR-IOV
PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool
PCI: j721e: Add PCIe support for J7200
PCI: j721e: Add PCIe support for AM64
misc: pci_endpoint_test: Add deviceID for AM64 and J7200

Krzysztof Wilczyński (9):
PCI: Refactor pci_ioremap_bar() and pci_ioremap_wc_bar()
PCI: tegra: Remove unused struct tegra_pcie_bus
PCI: Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure
PCI: Return int from pciconfig_read() syscall
x86/PCI: Add pci_numachip_init() declaration
PCI: Add schedule point in proc_bus_pci_read()
PCI: artpec6: Remove surplus break statement after return
PCI: artpec6: Remove local code block from switch statement
PCI: dwc: Remove surplus break statement after return

Marc Zyngier (1):
PCI: Bulk conversion to generic_handle_domain_irq()

Marek Behún (2):
PCI: Call Max Payload Size-related fixup quirks early
PCI: Restrict ASMedia ASM1062 SATA Max Payload Size Supported

Marek Vasut (1):
PCI: rcar: Add L1 link state fix into data abort hook

Michal Simek (1):
dt-bindings: pci: xilinx-nwl: Document optional clock property

Nadeem Athani (1):
PCI: cadence: Add quirk flag to set minimum delay in LTSSM Detect.Quiet state

Nobuhiro Iwamatsu (2):
PCI: visconti: Add Toshiba Visconti PCIe host controller driver
MAINTAINERS: Add entries for Toshiba Visconti PCIe controller

Om Prakash Singh (5):
PCI: tegra194: Fix handling BME_CHGED event
PCI: tegra194: Fix MSI-X programming
PCI: tegra194: Disable interrupts before entering L2
PCI: tegra194: Don't allow suspend when Tegra PCIe is in EP mode
PCI: tegra194: Cleanup unused code

Pali Rohár (5):
PCI: aardvark: Increase polling delay to 1.5s while waiting for PIO response
PCI: pci-bridge-emul: Add PCIe Root Capabilities Register
PCI: aardvark: Fix reporting CRS value
PCI: aardvark: Configure PCIe resources from 'ranges' DT property
PCI: aardvark: Fix masking and unmasking legacy INTx interrupts

Rob Herring (2):
PCI: of: Don't fail devm_pci_alloc_host_bridge() on missing 'ranges'
PCI: iproc: Fix BCMA probe resource handling

Shanker Donthineni (4):
PCI: Add pci_set_acpi_fwnode() to set ACPI_COMPANION
PCI: Use acpi_pci_power_manageable()
PCI: Setup ACPI fwnode early and at the same time with OF
PCI: Add support for ACPI _RST reset method

Shunyong Yang (1):
tools: PCI: Zero-initialize param

Simon Xue (1):
PCI: rockchip-dwc: Add Rockchip RK356X host controller driver

Srikanth Thokala (2):
dt-bindings: PCI: Add Intel Keem Bay PCIe controller
PCI: keembay: Add support for Intel Keem Bay

Stuart Hayes (1):
PCI/portdrv: Enable Bandwidth Notification only if port supports it

Sunil Muthuswamy (1):
PCI: hv: Support for create interrupt v3

Vishal Aslot (1):
PCI: ibmphp: Fix double unmap of io_mem

Wasim Khan (1):
PCI: Add ACS quirks for NXP LX2xx0 and LX2xx2 platforms

Zhangfei Gao (2):
PCI: Allow PASID on fake PCIe devices without TLP prefixes
PCI: Set dma-can-stall for HiSilicon chips

Zhen Lei (1):
PCI: Optimize pci_resource_len() to reduce kernel size

Documentation/ABI/testing/sysfs-bus-pci | 17 +
Documentation/PCI/endpoint/pci-endpoint-cfs.rst | 12 +-
.../bindings/pci/intel,keembay-pcie-ep.yaml | 69 +++
.../bindings/pci/intel,keembay-pcie.yaml | 97 ++++
.../devicetree/bindings/pci/mediatek-pcie-cfg.yaml | 39 ++
.../devicetree/bindings/pci/mediatek-pcie.txt | 208 +++++----
Documentation/devicetree/bindings/pci/pci-ep.yaml | 7 +
.../devicetree/bindings/pci/xilinx-nwl-pcie.txt | 1 +
MAINTAINERS | 9 +
arch/arm64/kernel/pci.c | 31 +-
arch/x86/pci/numachip.c | 1 +
arch/x86/pci/sta2x11-fixup.c | 3 +-
drivers/crypto/cavium/nitrox/nitrox_main.c | 4 +-
drivers/misc/pci_endpoint_test.c | 9 +
drivers/net/ethernet/broadcom/bnx2.c | 46 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 1 -
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 89 +---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 49 +-
drivers/net/ethernet/broadcom/tg3.c | 115 ++---
drivers/net/ethernet/broadcom/tg3.h | 1 -
drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 2 +-
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 2 -
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 85 ++--
drivers/net/ethernet/sfc/efx.c | 82 +---
drivers/net/ethernet/sfc/falcon/efx.c | 83 +---
drivers/pci/ats.c | 2 +-
drivers/pci/controller/Kconfig | 1 +
drivers/pci/controller/cadence/pci-j721e.c | 61 ++-
drivers/pci/controller/cadence/pcie-cadence-ep.c | 200 ++++++---
drivers/pci/controller/cadence/pcie-cadence-host.c | 3 +
drivers/pci/controller/cadence/pcie-cadence.c | 16 +
drivers/pci/controller/cadence/pcie-cadence.h | 29 +-
drivers/pci/controller/dwc/Kconfig | 48 ++
drivers/pci/controller/dwc/Makefile | 3 +
drivers/pci/controller/dwc/pci-dra7xx.c | 16 +-
drivers/pci/controller/dwc/pci-keystone.c | 14 +-
drivers/pci/controller/dwc/pcie-artpec6.c | 7 +-
drivers/pci/controller/dwc/pcie-designware-ep.c | 36 +-
drivers/pci/controller/dwc/pcie-designware-host.c | 9 +-
drivers/pci/controller/dwc/pcie-designware-plat.c | 1 -
drivers/pci/controller/dwc/pcie-dw-rockchip.c | 279 ++++++++++++
drivers/pci/controller/dwc/pcie-keembay.c | 460 +++++++++++++++++++
drivers/pci/controller/dwc/pcie-tegra194.c | 54 ++-
drivers/pci/controller/dwc/pcie-uniphier.c | 8 +-
drivers/pci/controller/dwc/pcie-visconti.c | 332 ++++++++++++++
.../pci/controller/mobiveil/pcie-mobiveil-host.c | 15 +-
drivers/pci/controller/pci-aardvark.c | 334 +++++++++++++-
drivers/pci/controller/pci-ftpci100.c | 2 +-
drivers/pci/controller/pci-hyperv.c | 153 +++++--
drivers/pci/controller/pci-tegra.c | 38 +-
drivers/pci/controller/pci-xgene-msi.c | 10 +-
drivers/pci/controller/pcie-altera-msi.c | 10 +-
drivers/pci/controller/pcie-altera.c | 10 +-
drivers/pci/controller/pcie-brcmstb.c | 9 +-
drivers/pci/controller/pcie-iproc-bcma.c | 18 +-
drivers/pci/controller/pcie-iproc-msi.c | 4 +-
drivers/pci/controller/pcie-mediatek-gen3.c | 13 +-
drivers/pci/controller/pcie-mediatek.c | 64 ++-
drivers/pci/controller/pcie-microchip-host.c | 18 +-
drivers/pci/controller/pcie-rcar-ep.c | 23 +-
drivers/pci/controller/pcie-rcar-host.c | 94 +++-
drivers/pci/controller/pcie-rcar.h | 7 +
drivers/pci/controller/pcie-rockchip-ep.c | 18 +-
drivers/pci/controller/pcie-rockchip-host.c | 8 +-
drivers/pci/controller/pcie-xilinx-cpm.c | 4 +-
drivers/pci/controller/pcie-xilinx-nwl.c | 25 +-
drivers/pci/controller/pcie-xilinx.c | 9 +-
drivers/pci/endpoint/functions/pci-epf-ntb.c | 89 ++--
drivers/pci/endpoint/functions/pci-epf-test.c | 74 +--
drivers/pci/endpoint/pci-ep-cfs.c | 24 +
drivers/pci/endpoint/pci-epc-core.c | 134 ++++--
drivers/pci/endpoint/pci-epf-core.c | 146 +++++-
drivers/pci/hotplug/TODO | 3 -
drivers/pci/hotplug/ibmphp_ebda.c | 5 +-
drivers/pci/hotplug/pciehp.h | 2 +-
drivers/pci/hotplug/pciehp_hpc.c | 2 +-
drivers/pci/hotplug/pnv_php.c | 2 +-
drivers/pci/of.c | 2 +-
drivers/pci/pci-acpi.c | 85 ++--
drivers/pci/pci-bridge-emul.h | 2 +-
drivers/pci/pci-sysfs.c | 3 +-
drivers/pci/pci.c | 331 ++++++++++----
drivers/pci/pci.h | 47 +-
drivers/pci/pcie/aer.c | 12 +-
drivers/pci/pcie/portdrv_core.c | 9 +-
drivers/pci/pcie/ptm.c | 4 +-
drivers/pci/probe.c | 29 +-
drivers/pci/proc.c | 1 +
drivers/pci/quirks.c | 128 +++++-
drivers/pci/remove.c | 1 -
drivers/pci/syscall.c | 7 +-
drivers/pci/vpd.c | 500 +++++++++++----------
drivers/scsi/cxlflash/main.c | 34 +-
include/asm-generic/pci_iomap.h | 2 +-
include/linux/pci-epc.h | 57 +--
include/linux/pci-epf.h | 16 +-
include/linux/pci.h | 165 +++----
include/linux/pci_hotplug.h | 2 +-
include/linux/pci_ids.h | 3 +-
tools/pci/pcitest.c | 2 +-
100 files changed, 3878 insertions(+), 1572 deletions(-)
create mode 100644 Documentation/devicetree/bindings/pci/intel,keembay-pcie-ep.yaml
create mode 100644 Documentation/devicetree/bindings/pci/intel,keembay-pcie.yaml
create mode 100644 Documentation/devicetree/bindings/pci/mediatek-pcie-cfg.yaml
create mode 100644 drivers/pci/controller/dwc/pcie-dw-rockchip.c
create mode 100644 drivers/pci/controller/dwc/pcie-keembay.c
create mode 100644 drivers/pci/controller/dwc/pcie-visconti.c