PCI changes: - add sysfs max_link_speed/width, current_link_speed/width (Wong Vee Khee) - make host bridge IRQ mapping much more generic (Matthew Minter, Lorenzo Pieralisi) - convert most drivers to pci_scan_root_bus_bridge() (Lorenzo Pieralisi) - mutex sriov_configure() (Jakub Kicinski) - mutex pci_error_handlers callbacks (Christoph Hellwig) - split ->reset_notify() into ->reset_prepare()/reset_done() (Christoph Hellwig) - support multiple PCIe portdrv interrupts for MSI as well as MSI-X (Gabriele Paoloni) - allocate MSI/MSI-X vector for Downstream Port Containment (Gabriele Paoloni) - fix MSI IRQ affinity pre/post/min_vecs issue (Michael Hernandez) - test INTx masking during enumeration, not at run-time (Piotr Gregor) - avoid using device_may_wakeup() for runtime PM (Rafael J. Wysocki) - restore the status of PCI devices across hibernation (Chen Yu) - keep parent resources that start at 0x0 (Ard Biesheuvel) - enable ECRC only if device supports it (Bjorn Helgaas) - restore PRI and PASID state after Function-Level Reset (CQ Tang) - skip DPC event if device is not present (Keith Busch) - check domain when matching SMBIOS info (Sujith Pandel) - mark Intel XXV710 NIC INTx masking as broken (Alex Williamson) - avoid AMD SB7xx EHCI USB wakeup defect (Kai-Heng Feng) - work around long-standing Macbook Pro poweroff issue (Bjorn Helgaas) - add Switchtec "running" status flag (Logan Gunthorpe) - fix dra7xx incorrect RW1C IRQ register usage (Arvind Yadav) - modify xilinx-nwl IRQ chip for legacy interrupts (Bharat Kumar Gogada) - move VMD SRCU cleanup after bus, child device removal (Jon Derrick) - add Faraday clock handling (Linus Walleij) - configure Rockchip MPS and reorganize (Shawn Lin) - limit Qualcomm TLP size to 2K (hardware issue) (Srinivas Kandagatla) - support Tegra MSI 64-bit addressing (Thierry Reding) - use Rockchip normal (not privileged) register bank (Shawn Lin) - add HiSilicon Kirin SoC PCIe controller driver (Xiaowei Song) - add Sigma Designs Tango SMP8759 PCIe controller driver (Marc Gonzalez) - add MediaTek PCIe host controller support (Ryder Lee) - add Qualcomm IPQ4019 support (John Crispin) - add HyperV vPCI protocol v1.2 support (Jork Loeser) - add i.MX6 regulator support (Quentin Schulz) You should see these merge conflicts: - kernel/irq/affinity.c 6f9a22bc5775 ("PCI/MSI: Ignore affinity if pre/post vector count ...") 9a0ef98e186d ("genirq/affinity: Assign vectors to all present CPUs") - drivers/nvme/host/pci.c c336cc0ee4eb ("PCI: Split ->reset_notify() method ...") d86c4d8ef31b ("nvme: move reset workqueue handling to common code") - drivers/net/wireless/marvell/mwifiex/pcie.c c336cc0ee4eb ("PCI: Split ->reset_notify() method ...") 68efd0386988 ("mwifiex: pcie: stop setting/clearing 'surprise_removed'") Note: silent conflict in mwifiex_pcie_reset_done() - drivers/gpu/drm/radeon/radeon_device.c 5938628c51a7 ("drm/radeon: make MacBook Pro d3_delay quirk more generic") 4eb59793cca0 ("drm/radeon: add a PX quirk for another K53TK variant") My suggested resolutions are at https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/log/?h=v4.13-merge The following changes since commit 4d071c3238987325b9e50e33051a40d1cce311cc: PCI/PM: Add needs_resume flag to avoid suspend complete optimization (2017-05-23 14:18:17 -0500) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci-v4.13-changes for you to fetch changes up to 6aed468480e8b03ece5a395fe8013e66348a2547: Merge branch 'pci/host-tango' into next (2017-07-07 13:42:25 -0500) ---------------------------------------------------------------- pci-v4.13-changes ---------------------------------------------------------------- Alex Williamson (1): PCI: Mark Intel XXV710 NIC INTx masking as broken Ard Biesheuvel (1): PCI: Do not disregard parent resources starting at 0x0 Arvind Yadav (4): PCI: dwc: dra7xx: Use RW1C for IRQSTATUS_MSI and IRQSTATUS_MAIN PCI: rcar-gen2: Make of_device_ids const PCI: rockchip: Check for clk_prepare_enable() errors during resume PCI: xilinx: Make of_device_ids const Bharat Kumar Gogada (1): PCI: xilinx-nwl: Modify IRQ chip for legacy interrupts Bjorn Helgaas (36): MIPS: Loongson: Remove unused PCI_BAR_COUNT definition MIPS: PCI: Remove unused busn_offset efi/fb: Correct PCI_STD_RESOURCE_END usage PCI: Correct PCI_STD_RESOURCE_END usage PCI: Enable ECRC only if device supports it PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11 drm/amdgpu: remove unnecessary save/restore of pdev->d3_delay drm/radeon: make MacBook Pro d3_delay quirk more generic PCI: qcom: Reorder to put v0 functions together, v1 functions together, etc PCI: versatile: Add local struct device pointers PCI: vmd: Correct comment: VMD domains start at 0x10000, not 0x1000 Merge branch 'pci/dpc' into next Merge branch 'pci/enumeration' into next Merge branch 'pci/misc' into next Merge branch 'pci/msi' into next Merge branch 'pci/pm' into next Merge branch 'pci/portdrv' into next Merge branch 'pci/resource' into next Merge branch 'pci/switchtec' into next Merge branch 'pci/virtualization' into next Merge branch 'pci/irq-fixups' into next Merge branch 'pci/host-designware' into next Merge branch 'pci/host-dra7xx' into next Merge branch 'pci/host-faraday' into next Merge branch 'pci/host-hv' into next Merge branch 'pci/host-imx6' into next Merge branch 'pci/host-kirin' into next Merge branch 'pci/host-mediatek' into next Merge branch 'pci/host-qcom' into next Merge branch 'pci/host-rcar' into next Merge branch 'pci/host-rockchip' into next Merge branch 'pci/host-tegra' into next Merge branch 'pci/host-versatile' into next Merge branch 'pci/host-vmd' into next Merge branch 'pci/host-xilinx' into next Merge branch 'pci/host-tango' into next CQ Tang (1): PCI: Restore PRI and PASID state after Function-Level Reset Chen Yu (1): PCI/PM: Restore the status of PCI devices across hibernation Christoph Hellwig (3): PCI: Protect pci_error_handlers->reset_notify() usage with device_lock() PCI: Split ->reset_notify() method into ->reset_prepare() and ->reset_done() PCI: Remove __pci_dev_reset() and pci_dev_reset() Colin Ian King (1): PCI: qcom: Fix spelling mistake: "asser" -> "assert" Gabriele Paoloni (2): PCI/portdrv: Support multiple interrupts for MSI as well as MSI-X PCI/portdrv: Allocate MSI/MSI-X vector for Downstream Port Containment Jakub Kicinski (1): PCI: Protect pci_driver->sriov_configure() usage with device_lock() Jean Delvare (1): x86/PCI: Simplify Dell DMI B1 quirk Jean-Philippe Brucker (1): PCI: Cache PRI and PASID bits in pci_dev Jisheng Zhang (2): PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD PCI: dwc: Constify dw_pcie_host_ops structures John Crispin (1): PCI: qcom: Add support for IPQ4019 PCIe controller Jon Derrick (1): PCI: vmd: Move SRCU cleanup after bus, child device removal Jork Loeser (5): PCI: hv: Fix comment formatting and use proper integer fields PCI: hv: Use page allocation for hbus structure PCI: hv: Temporary own CPU-number-to-vCPU-number infra PCI: hv: Add vPCI version protocol negotiation PCI: hv: Use vPCI protocol version 1.2 Kai-Heng Feng (1): x86/PCI: Avoid AMD SB7xx EHCI USB wakeup defect Keith Busch (2): PCI/DPC: Skip DPC event if device is not present PCI/DPC: Fix control register setting Linus Walleij (2): PCI: faraday: Add clock bindings PCI: faraday: Add clock handling Logan Gunthorpe (2): switchtec: Add "running" status flag to fw partition info ioctl switchtec: Add device IDs for additional Switchtec products Lorenzo Pieralisi (37): PCI: xilinx-nwl: Remove nwl_pcie_enable_msi() unused bus parameter PCI: iproc: Convert link check to raw PCI config accessors PCI: faraday: Convert IRQ masking to raw PCI config accessors PCI: Initialize bridge release function at bridge allocation PCI: Add pci_free_host_bridge() interface PCI: Add devm_pci_alloc_host_bridge() interface PCI: faraday: Fix host bridge memory leakage PCI: tegra: Fix host bridge memory leakage PCI: Add pci_scan_root_bus_bridge() interface PCI: Make pci_register_host_bridge() PCI core internal ARM/PCI: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: designware: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: aardvark: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: rcar: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: iproc: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: versatile: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: altera: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: xilinx: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: xgene: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: generic: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: rockchip: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: xilinx-nwl: Convert PCI scan API to pci_scan_root_bus_bridge() PCI: Remove pci_scan_root_bus_msi() ARM/PCI: Remove pci_fixup_irqs() call for bios32 host controllers PCI: tegra: Drop pci_fixup_irqs() PCI: xilinx: Drop pci_fixup_irqs() PCI: rcar: Drop pci_fixup_irqs() PCI: iproc: Drop pci_fixup_irqs() PCI: designware: Drop pci_fixup_irqs() PCI: faraday: Drop pci_fixup_irqs() PCI: generic: Drop pci_fixup_irqs() PCI: versatile: Drop pci_fixup_irqs() PCI: altera: Drop pci_fixup_irqs() PCI: xgene: Move to struct pci_host_bridge IRQ mapping functions PCI: rockchip: Move to struct pci_host_bridge IRQ mapping functions PCI: xilinx-nwl: Move to struct pci_host_bridge IRQ mapping functions arm64: PCI: Drop DT IRQ allocation from pcibios_alloc_irq() Marc Gonzalez (2): PCI: Add DT binding for Sigma Designs Tango PCIe controller PCI: tango: Add Sigma Designs Tango SMP8759 PCIe host bridge support Matthew Minter (5): PCI: Build setup-irq.o on all arches PCI: Add IRQ mapping function pointers to pci_host_bridge struct PCI: Add pci_assign_irq() function and have pci_fixup_irqs() use it OF/PCI: Update of_irq_parse_and_map_pci() comment PCI: Add a call to pci_assign_irq() in pci_device_probe() Michael Hernandez (1): PCI/MSI: Ignore affinity if pre/post vector count is more than min_vecs Peter Robinson (1): PCI: dwc: dra7xx: Depend on appropriate SoC or compile test Piotr Gregor (1): PCI: Test INTx masking during enumeration, not at run-time Quentin Schulz (1): PCI: imx6: Add regulator support Rafael J. Wysocki (1): PCI/PM: Avoid using device_may_wakeup() for runtime PM Ryder Lee (2): PCI: mediatek: Add MediaTek PCIe host controller support dt-bindings: PCI: Add documentation for MediaTek PCIe Shawn Lin (9): PCI: rockchip: Control vpcie0v9 for system PM PCI: rockchip: Rename rockchip_cfg_atu() to rockchip_pcie_cfg_atu() PCI: rockchip: Move configuration accesses into rockchip_pcie_cfg_atu() PCI: rockchip: Split out rockchip_pcie_cfg_configuration_accesses() PCI: rockchip: Reconfigure configuration space header type PCI: rockchip: Configure RC's MPS setting MAINTAINERS: Remove Wenrui Li as Rockchip PCIe driver maintainer PCI: rockchip: Use local struct device pointer consistently PCI: rockchip: Use normal register bank for config accessors Srinivas Kandagatla (1): PCI: qcom: Limit TLP size to 2K to work around hardware issue Sujith Pandel (1): PCI: Add domain number check to find_smbios_instance_string() Thierry Reding (2): PCI: tegra: Support MSI 64-bit addressing PCI: tegra: Do not allocate MSI target memory Vincent Legoll (1): x86/PCI: Fix whitespace in set_bios_x() printk Wolfram Sang (1): PCI: rcar: Use proper name for the R-Car SoC Wong Vee Khee (1): PCI: Add sysfs max_link_speed/width, current_link_speed/width, etc Xiaowei Song (1): PCI: kirin: Add HiSilicon Kirin SoC PCIe controller driver .../devicetree/bindings/pci/faraday,ftpci100.txt | 7 + .../devicetree/bindings/pci/fsl,imx6q-pcie.txt | 4 + .../bindings/pci/mediatek,mt7623-pcie.txt | 130 +++++ .../devicetree/bindings/pci/qcom,pcie.txt | 20 +- Documentation/devicetree/bindings/pci/rcar-pci.txt | 2 +- .../devicetree/bindings/pci/tango-pcie.txt | 29 ++ Documentation/driver-model/devres.txt | 1 + MAINTAINERS | 17 +- arch/arm/include/asm/mach/pci.h | 3 +- arch/arm/kernel/bios32.c | 44 +- arch/arm/mach-dove/pcie.c | 17 +- arch/arm/mach-iop13xx/pci.c | 31 +- arch/arm/mach-iop13xx/pci.h | 3 +- arch/arm/mach-mv78xx0/pcie.c | 16 +- arch/arm/mach-orion5x/common.h | 3 +- arch/arm/mach-orion5x/pci.c | 25 +- arch/arm64/kernel/pci.c | 10 +- .../asm/mach-loongson64/cs5536/cs5536_pci.h | 1 - arch/mips/include/asm/pci.h | 1 - arch/mips/pci/pci-legacy.c | 3 +- arch/x86/include/uapi/asm/hyperv.h | 6 + arch/x86/pci/common.c | 27 +- arch/x86/pci/fixup.c | 47 ++ arch/x86/pci/pcbios.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 - drivers/gpu/drm/radeon/radeon_device.c | 11 - drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 36 +- drivers/net/wireless/marvell/mwifiex/pcie.c | 75 +-- drivers/nvme/host/pci.c | 15 +- drivers/of/of_pci_irq.c | 3 +- drivers/pci/Makefile | 17 +- drivers/pci/ats.c | 87 +++- drivers/pci/dwc/Kconfig | 11 + drivers/pci/dwc/Makefile | 1 + drivers/pci/dwc/pci-dra7xx.c | 6 +- drivers/pci/dwc/pci-exynos.c | 2 +- drivers/pci/dwc/pci-imx6.c | 39 +- drivers/pci/dwc/pci-keystone.c | 2 +- drivers/pci/dwc/pci-layerscape.c | 6 +- drivers/pci/dwc/pcie-armada8k.c | 2 +- drivers/pci/dwc/pcie-artpec6.c | 2 +- drivers/pci/dwc/pcie-designware-host.c | 43 +- drivers/pci/dwc/pcie-designware-plat.c | 5 +- drivers/pci/dwc/pcie-designware.h | 2 +- drivers/pci/dwc/pcie-kirin.c | 517 +++++++++++++++++++ drivers/pci/dwc/pcie-qcom.c | 440 +++++++++++++--- drivers/pci/dwc/pcie-spear13xx.c | 2 +- drivers/pci/host/Kconfig | 25 + drivers/pci/host/Makefile | 2 + drivers/pci/host/pci-aardvark.c | 21 +- drivers/pci/host/pci-ftpci100.c | 143 ++++-- drivers/pci/host/pci-host-common.c | 27 +- drivers/pci/host/pci-hyperv.c | 445 ++++++++++++++--- drivers/pci/host/pci-rcar-gen2.c | 2 +- drivers/pci/host/pci-tegra.c | 42 +- drivers/pci/host/pci-versatile.c | 36 +- drivers/pci/host/pci-xgene.c | 23 +- drivers/pci/host/pcie-altera.c | 24 +- drivers/pci/host/pcie-iproc-bcma.c | 7 +- drivers/pci/host/pcie-iproc-platform.c | 7 +- drivers/pci/host/pcie-iproc.c | 135 +++-- drivers/pci/host/pcie-mediatek.c | 554 +++++++++++++++++++++ drivers/pci/host/pcie-rcar.c | 40 +- drivers/pci/host/pcie-rockchip.c | 147 ++++-- drivers/pci/host/pcie-tango.c | 141 ++++++ drivers/pci/host/pcie-xilinx-nwl.c | 79 ++- drivers/pci/host/pcie-xilinx.c | 36 +- drivers/pci/host/vmd.c | 10 +- drivers/pci/iov.c | 4 - drivers/pci/msi.c | 14 +- drivers/pci/pci-driver.c | 3 + drivers/pci/pci-label.c | 7 +- drivers/pci/pci-sysfs.c | 204 +++++++- drivers/pci/pci.c | 227 ++++----- drivers/pci/pci.h | 1 - drivers/pci/pcie/pcie-dpc.c | 4 +- drivers/pci/pcie/portdrv.h | 7 +- drivers/pci/pcie/portdrv_core.c | 104 ++-- drivers/pci/probe.c | 140 ++++-- drivers/pci/quirks.c | 19 +- drivers/pci/setup-irq.c | 45 +- drivers/pci/switch/switchtec.c | 40 +- drivers/video/fbdev/efifb.c | 2 +- include/linux/interrupt.h | 4 +- include/linux/pci-ats.h | 10 + include/linux/pci.h | 35 +- include/linux/pci_ids.h | 2 + include/uapi/linux/pci_regs.h | 1 + include/uapi/linux/switchtec_ioctl.h | 3 + kernel/irq/affinity.c | 13 +- 90 files changed, 3787 insertions(+), 825 deletions(-) create mode 100644 Documentation/devicetree/bindings/pci/mediatek,mt7623-pcie.txt create mode 100644 Documentation/devicetree/bindings/pci/tango-pcie.txt create mode 100644 drivers/pci/dwc/pcie-kirin.c create mode 100644 drivers/pci/host/pcie-mediatek.c create mode 100644 drivers/pci/host/pcie-tango.c