Enumeration changes: - Add _HPX Type 3 settings support, which gives firmware more influence over device configuration (Alexandru Gagniuc) - Support fixed bus numbers from bridge Enhanced Allocation capabilities (Subbaraya Sundeep) - Add "external-facing" DT property to identify cases where we require IOMMU protection against untrusted devices (Jean-Philippe Brucker) - Enable PCIe services for host controller drivers that use managed host bridge alloc (Jean-Philippe Brucker) - Log PCIe port service messages with pci_dev, not the pcie_device (Frederick Lawler) - Convert pciehp from pciehp_debug module parameter to generic dynamic debug (Frederick Lawler) Peer-to-peer DMA: - Add whitelist of Root Complexes that support peer-to-peer DMA between Root Ports (Christian König) Native controller drivers: - Add PCI host bridge DMA ranges for bridges that can't DMA everywhere, e.g., iProc (Srinath Mannam) - Add Amazon Annapurna Labs PCIe host controller driver (Jonathan Chocron) - Fix Tegra MSI target allocation so DMA doesn't generate unwanted MSIs (Vidya Sagar) - Fix of_node reference leaks (Wen Yang) - Fix Hyper-V module unload & device removal issues (Dexuan Cui) - Cleanup R-Car driver (Marek Vasut) - Cleanup Keystone driver (Kishon Vijay Abraham I) - Cleanup i.MX6 driver (Andrey Smirnov) Significant bug fixes: - Reset Lenovo ThinkPad P50 GPU so nouveau works after reboot (Lyude Paul) - Fix Switchtec firmware update performance issue (Wesley Sheng) - Work around Pericom switch link retraining erratum (Stefan Mätje) The following changes since commit 9e98c678c2d6ae3a17cb2de55d17f69dddaa231b: Linux 5.1-rc1 (2019-03-17 14:22:26 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git tags/pci-v5.2-changes for you to fetch changes up to c7a1c2bbb65e25551d585fba0fd36a01e0a22690: Merge branch 'pci/trivial' (2019-05-13 18:34:48 -0500) ---------------------------------------------------------------- pci-v5.2-changes ---------------------------------------------------------------- Alexandru Gagniuc (4): PCI/ACPI: Do not export pci_get_hp_params() PCI/ACPI: Remove the need for 'struct hotplug_params' PCI/ACPI: Implement _HPX Type 3 Setting Record PCI/ACPI: Advertise _HPX Type 3 support via _OSC Andrey Smirnov (11): PCI: imx6: Simplify imx7d_pcie_wait_for_phy_pll_lock() PCI: imx6: Drop imx6_pcie_wait_for_link() PCI: imx6: Return -ETIMEOUT from imx6_pcie_wait_for_speed_change() PCI: imx6: Remove PCIE_PL_PFLR_* constants PCI: dwc: imx6: Share PHY debug register definitions PCI: imx6: Make use of BIT() in constant definitions PCI: imx6: Simplify bit operations in PHY functions PCI: imx6: Simplify pcie_phy_poll_ack() PCI: imx6: Restrict PHY register data to 16-bit PCI: imx6: Use flags to indicate support for suspend PCI: imx6: Use usleep_range() in imx6_pcie_enable_ref_clk() Bjorn Helgaas (35): PCI/MSI: Remove unused __write_msi_msg() and write_msi_msg() PCI/MSI: Remove unused mask_msi_irq() and unmask_msi_irq() PCI: Cleanup register definition width and whitespace PCI: Fix comment typos CPER: Add UEFI spec references CPER: Remove unnecessary use of user-space types PCI: Use dev_printk() when possible PCI: pciehp: Remove pciehp_debug uses PCI: pciehp: Remove pointless PCIE_MODULE_NAME definition PCI: pciehp: Remove pointless MY_NAME definition Merge branch 'pci/aer' Merge branch 'pci/enumeration' Merge branch 'pci/hotplug' Merge branch 'pci/msi' Merge branch 'pci/misc' Merge branch 'pci/peer-to-peer' Merge branch 'pci/portdrv' Merge branch 'pci/switchtec' Merge branch 'pci/virtualization' Merge branch 'pci/host/al' Merge branch 'remotes/lorenzo/pci/controller-fixes' Merge branch 'pci/dwc' Merge branch 'remotes/lorenzo/pci/imx' Merge branch 'remotes/lorenzo/pci/iproc' Merge branch 'remotes/lorenzo/pci/keystone' Merge branch 'remotes/lorenzo/pci/mediatek' Merge branch 'remotes/lorenzo/pci/rcar' Merge branch 'remotes/lorenzo/pci/rockchip' Merge branch 'remotes/lorenzo/pci/tegra' Merge branch 'remotes/lorenzo/pci/xilinx' Merge branch 'remotes/lorenzo/pci/misc' Merge branch 'pci/iova-dma-ranges' Merge branch 'pci/printk' Merge branch 'pci/printk-portdrv' Merge branch 'pci/trivial' Christian König (1): PCI/P2PDMA: Allow P2P DMA between any devices under AMD ZEN Root Complex Chunfeng Yun (1): PCI: mediatek: Get optional clocks with devm_clk_get_optional() Colin Ian King (1): PCI: rockchip: Fix rockchip_pcie_ep_assert_intx() bitwise operations Dexuan Cui (3): PCI: hv: Fix a memory leak in hv_eject_device_work() PCI: hv: Add hv_pci_remove_slots() when we unload the driver PCI: hv: Add pci_destroy_slot() in pci_devices_present_work(), if necessary Frederick Lawler (7): PCI/AER: Replace dev_printk(KERN_DEBUG) with dev_info() PCI/PME: Replace dev_printk(KERN_DEBUG) with dev_info() PCI/DPC: Log messages with pci_dev, not pcie_device PCI/AER: Log messages with pci_dev, not pcie_device PCI: pciehp: Replace pciehp_debug module param with dyndbg PCI: pciehp: Log messages with pci_dev, not pcie_device PCI: pciehp: Remove unused dbg/err/info/warn() wrappers Gustavo A. R. Silva (1): PCI: Mark expected switch fall-throughs Heiner Kallweit (8): PCI: Add pci_dev_id() helper r8169: use pci_dev_id() helper powerpc/powernv/npu: Use pci_dev_id() helper drm/amdkfd: Use pci_dev_id() helper iommu/amd: Use pci_dev_id() helper iommu/vt-d: Use pci_dev_id() helper stmmac: pci: Use pci_dev_id() helper platform/chrome: chromeos_laptop: use pci_dev_id() helper Honghui Zhang (1): arm64: dts: mt2712: Remove un-used property for PCIe James Prestwood (1): PCI: Mark Atheros AR9462 to avoid bus reset Jean-Jacques Hiblot (1): tools: PCI: Exit with error code when test fails Jean-Philippe Brucker (3): PCI: Init PCIe feature bits for managed host bridge alloc dt-bindings: Add "external-facing" PCIe port property PCI: OF: Support "external-facing" property Jisheng Zhang (6): PCI/AER: Change pci_aer_init() stub to return void PCI: dwc: Fix dw_pcie_free_msi() if msi_irq is invalid PCI: dwc: Free MSI IRQ page in dw_pcie_free_msi() PCI: dwc: Free MSI in dw_pcie_host_init() error path PCI: dwc: Use devm_pci_alloc_host_bridge() to simplify code PCI: dwc: Save root bus for driver remove hooks Johannes Thumshirn (1): PCI: Remove unused pci_request_region_exclusive() Jonathan Chocron (1): PCI: al: Add Amazon Annapurna Labs PCIe host controller driver Kangjie Lu (3): PCI: xilinx: Check for __get_free_pages() failure PCI: rcar: Fix a potential NULL pointer dereference PCI: endpoint: Fix a potential NULL pointer dereference Kazufumi Ikeda (1): PCI: rcar: Add the initialization of PCIe link in resume_noirq() Kishon Vijay Abraham I (37): PCI: keystone: Cleanup interrupt related macros PCI: keystone: Add separate functions for configuring MSI and legacy interrupt PCI: keystone: Use hwirq to get the MSI IRQ number offset PCI: keystone: Cleanup ks_pcie_msi_irq_handler() PCI: dwc: Add support to use non default msi_irq_chip PCI: keystone: Use Keystone specific msi_irq_chip PCI: dwc: Remove Keystone specific dw_pcie_host_ops PCI: dwc: Remove default MSI initialization for platform specific MSI chips tools: PCI: Add 'h' in optstring of getopt() tools: PCI: Handle pcitest.sh independently from pcitest PCI: keystone: Add start_link()/stop_link() dw_pcie_ops PCI: keystone: Cleanup error_irq configuration dt-bindings: PCI: keystone: Add "reg-names" binding information PCI: keystone: Perform host initialization in a single function PCI: keystone: Use platform_get_resource_byname() to get memory resources PCI: keystone: Move resources initialization to prepare for EP support dt-bindings: PCI: Add dt-binding to configure PCIe mode PCI: keystone: Explicitly set the PCIe mode dt-bindings: PCI: Document "atu" reg-names PCI: dwc: Enable iATU unroll for endpoint too PCI: dwc: Fix ATU identification for designware version >= 4.80 PCI: keystone: Prevent ARM32 specific code to be compiled for ARM64 dt-bindings: PCI: Add PCI RC DT binding documentation for AM654 PCI: keystone: Add support for PCIe RC in AM654x Platforms PCI: keystone: Invoke phy_reset() API before enabling PHY PCI: OF: Allow of_pci_get_max_link_speed() to be used by PCI Endpoint drivers PCI: keystone: Add support to set the max link speed from DT PCI: endpoint: Add support to specify alignment for buffers allocated to BARs PCI: dwc: Add const qualifier to struct dw_pcie_ep_ops PCI: dwc: Fix dw_pcie_ep_find_capability() to return correct capability offset PCI: dwc: Add callbacks for accessing dbi2 address space dt-bindings: PCI: Add PCI EP DT binding documentation for AM654 PCI: keystone: Add support for PCIe EP in AM654x Platforms PCI: designware-ep: Configure Resizable BAR cap to advertise the smallest size PCI: designware-ep: Use aligned ATU window for raising MSI interrupts misc: pci_endpoint_test: Add support to test PCI EP in AM654x misc: pci_endpoint_test: Fix test_reg_bar to be updated in pci_endpoint_test Lucas Stach (1): PCI: imx6: Allow asynchronous probing Lyude Paul (1): PCI: Reset Lenovo ThinkPad P50 nvgpu at boot if necessary Marc Gonzalez (1): PCI: qcom: Use default config space read function Marek Vasut (6): PCI: rcar: Clean up remaining macros defining bits PCI: rcar: Replace unsigned long with u32/unsigned int in register accessors PCI: rcar: Replace various variable types with unsigned ones for register values PCI: rcar: Replace (8 * n) with (BITS_PER_BYTE * n) PCI: rcar: Clean up debug messages PCI: rcar: Fix 64bit MSI message address handling Mika Westerberg (1): PCI/LINK: Disable bandwidth notification interrupt during suspend Mohan Kumar (2): PCI: Replace printk(KERN_INFO) with pr_info(), etc PCI: Replace dev_printk(KERN_DEBUG) with dev_info(), etc Nicholas Johnson (1): PCI: Cleanup setup-bus.c comments and whitespace Nikolai Kostrigin (1): PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken Srinath Mannam (6): PCI: iproc: Add CRS check in config read PCI: iproc: Allow outbound configuration for 32-bit I/O region PCI: iproc: Enable iProc config read for PAXBv2 PCI: Add dma_ranges window list iommu/dma: Reserve IOVA for PCIe inaccessible DMA address PCI: iproc: Add sorted dma ranges resource entries to host bridge Stefan Mätje (3): PCI: Factor out pcie_retrain_link() function PCI: Work around Pericom PCIe-to-PCI bridge Retrain Link erratum PCI: Rework pcie_retrain_link() wait loop Subbaraya Sundeep (1): PCI: Assign bus numbers present in EA capability for bridges Subrahmanya Lingappa (1): MAINTAINERS: Add Karthikeyan Mitran and Hou Zhiqiang for Mobiveil PCI Tyrel Datwyler (2): PCI: rpadlpar: Fix leaked device_node references in add/remove paths PCI: rpaphp: Get/put device node reference during slot alloc/dealloc Vidya Sagar (1): PCI: tegra: Use the DMA-API to get the MSI address Wen Yang (7): PCI: dwc: pci-dra7xx: Fix a leaked reference by adding missing of_node_put() PCI: uniphier: Fix a leaked reference by adding missing of_node_put() PCI: dwc: layerscape: Fix a leaked reference by adding missing of_node_put() PCI: rockchip: Fix a leaked reference by adding missing of_node_put() PCI: aardvark: Fix a leaked reference by adding missing of_node_put() PCI: iproc: Fix a leaked reference by adding missing of_node_put() PCI: mediatek: Fix a leaked reference by adding missing of_node_put() Wenwen Wang (1): x86/PCI: Fix PCI IRQ routing table memory leak Wesley Sheng (2): switchtec: Increase PFF limit from 48 to 255 switchtec: Fix unintended mask of MRPC event Wolfram Sang (1): PCI: rcar: Do not shadow the 'irq' variable .../devicetree/bindings/pci/designware-pcie.txt | 7 +- .../devicetree/bindings/pci/pci-keystone.txt | 58 +- Documentation/devicetree/bindings/pci/pci.txt | 50 ++ MAINTAINERS | 9 +- arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 - arch/powerpc/platforms/powernv/npu-dma.c | 14 +- arch/x86/pci/irq.c | 10 +- drivers/acpi/pci_mcfg.c | 12 + drivers/acpi/pci_root.c | 2 + drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 3 +- drivers/iommu/amd_iommu.c | 2 +- drivers/iommu/dma-iommu.c | 35 +- drivers/iommu/intel-iommu.c | 2 +- drivers/iommu/intel_irq_remapping.c | 2 +- drivers/misc/pci_endpoint_test.c | 18 + drivers/net/ethernet/realtek/r8169.c | 3 +- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 2 +- drivers/pci/Makefile | 2 +- drivers/pci/bus.c | 5 +- drivers/pci/controller/dwc/Kconfig | 29 +- drivers/pci/controller/dwc/Makefile | 1 + drivers/pci/controller/dwc/pci-dra7xx.c | 3 +- drivers/pci/controller/dwc/pci-imx6.c | 144 ++-- drivers/pci/controller/dwc/pci-keystone.c | 926 +++++++++++++++------ drivers/pci/controller/dwc/pci-layerscape-ep.c | 2 +- drivers/pci/controller/dwc/pci-layerscape.c | 1 + drivers/pci/controller/dwc/pcie-al.c | 93 +++ drivers/pci/controller/dwc/pcie-artpec6.c | 2 +- drivers/pci/controller/dwc/pcie-designware-ep.c | 55 +- drivers/pci/controller/dwc/pcie-designware-host.c | 157 ++-- drivers/pci/controller/dwc/pcie-designware-plat.c | 2 +- drivers/pci/controller/dwc/pcie-designware.c | 64 +- drivers/pci/controller/dwc/pcie-designware.h | 26 +- drivers/pci/controller/dwc/pcie-qcom.c | 23 +- drivers/pci/controller/dwc/pcie-uniphier.c | 11 +- drivers/pci/controller/pci-aardvark.c | 13 +- drivers/pci/controller/pci-host-generic.c | 2 +- drivers/pci/controller/pci-hyperv.c | 23 + drivers/pci/controller/pci-tegra.c | 37 +- drivers/pci/controller/pcie-iproc-msi.c | 2 +- drivers/pci/controller/pcie-iproc.c | 98 ++- drivers/pci/controller/pcie-mediatek.c | 51 +- drivers/pci/controller/pcie-rcar.c | 85 +- drivers/pci/controller/pcie-rockchip-ep.c | 2 +- drivers/pci/controller/pcie-rockchip-host.c | 1 + drivers/pci/controller/pcie-xilinx-nwl.c | 9 +- drivers/pci/controller/pcie-xilinx.c | 12 +- drivers/pci/endpoint/functions/pci-epf-test.c | 10 +- drivers/pci/endpoint/pci-epf-core.c | 10 +- drivers/pci/hotplug/pciehp.h | 31 +- drivers/pci/hotplug/pciehp_core.c | 18 +- drivers/pci/hotplug/pciehp_ctrl.c | 2 + drivers/pci/hotplug/pciehp_hpc.c | 17 +- drivers/pci/hotplug/pciehp_pci.c | 2 + drivers/pci/hotplug/rpadlpar_core.c | 4 + drivers/pci/hotplug/rpaphp_slot.c | 3 +- drivers/pci/msi.c | 6 +- drivers/pci/of.c | 58 +- drivers/pci/p2pdma.c | 38 +- drivers/pci/pci-acpi.c | 183 ++-- drivers/pci/pci-stub.c | 10 +- drivers/pci/pci-sysfs.c | 3 +- drivers/pci/pci.c | 344 ++++---- drivers/pci/pci.h | 2 +- drivers/pci/pcie/aer.c | 30 +- drivers/pci/pcie/aer_inject.c | 20 +- drivers/pci/pcie/aspm.c | 47 +- drivers/pci/pcie/bw_notification.c | 14 + drivers/pci/pcie/dpc.c | 37 +- drivers/pci/pcie/pme.c | 10 +- drivers/pci/probe.c | 230 ++++- drivers/pci/proc.c | 1 + drivers/pci/quirks.c | 92 +- drivers/pci/search.c | 10 +- drivers/pci/setup-bus.c | 526 ++++++------ drivers/pci/slot.c | 2 +- drivers/pci/switch/switchtec.c | 42 +- drivers/pci/xen-pcifront.c | 9 +- drivers/platform/chrome/chromeos_laptop.c | 2 +- include/linux/acpi.h | 3 +- include/linux/cper.h | 336 ++++---- include/linux/msi.h | 18 - include/linux/pci-ecam.h | 1 + include/linux/pci-epc.h | 2 + include/linux/pci-epf.h | 3 +- include/linux/pci.h | 9 +- include/linux/pci_hotplug.h | 66 +- include/linux/switchtec.h | 2 +- include/uapi/linux/pci_regs.h | 138 +-- include/uapi/linux/switchtec_ioctl.h | 13 +- tools/pci/Makefile | 8 +- tools/pci/pcitest.c | 8 +- 92 files changed, 2911 insertions(+), 1621 deletions(-) create mode 100644 drivers/pci/controller/dwc/pcie-al.c