Date: Mon, 25 Nov 2024 14:19:15 -0600 From: Bjorn Helgaas To: Linus Torvalds Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , Lorenzo Pieralisi , Manivannan Sadhasivam , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= Subject: [GIT PULL] PCI changes for v6.13 The following changes since commit 9852d85ec9d492ebef56dc5f229416c925758edc: Linux 6.12-rc1 (2024-09-29 15:06:19 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.13-changes for you to fetch changes up to 10099266dec8275a6899e6a27dcdfebbcc726cc7: Merge branch 'pci/typos' (2024-11-25 13:41:00 -0600) NB: - Rebased this morning to remove duplicate commits. Result is git diff-identical to 0f3d0b32cf72, which has been in linux-next since Nov 22. - Conflict in drivers/pci/probe.c between existing 1d59d474e1cb ("PCI: Hold rescan lock while adding devices during host probe") and new dc421bb3c0db ("PCI: Enable runtime PM of the host bridge"). - Conflict in drivers/pci/pwrctrl/pci-pwrctrl-pwrseq.c between existing ad783b9f8e78 ("PCI/pwrctl: Abandon QCom WCN probe on pre-pwrseq device-trees") and new 086bf79a4d45 ("PCI/pwrctrl: Rename pwrctl files to pwrctrl") and e826ea4c7f26 ("PCI/pwrctrl: Rename pwrctrl functions and structures"). Note the names in pci_pwrctrl_pwrseq_of_match[] that need to be updated but aren't flagged as a conflict. ---------------------------------------------------------------- Enumeration: - Make pci_stop_dev() and pci_destroy_dev() safe so concurrent callers can't stop a device multiple times, even as we migrate from the global pci_rescan_remove_lock to finer-grained locking (Keith Busch) - Improve pci_walk_bus() implementation by making it recursive and moving locking up to avoid need for a 'locked' parameter (Keith Busch) - Unexport pci_walk_bus_locked(), which is only used internally by the PCI core (Keith Busch) - Detect some Thunderbolt chips that are built-in and hence 'trustworthy' by a heuristic since the 'ExternalFacingPort' and 'usb4-host-interface' ACPI properties are not quite enough (Esther Shimanovich) Resource management: - Use PCI bus addresses (not CPU addresses) in 'ranges' properties when building dynamic DT nodes so systems where PCI and CPU addresses differ work correctly (Andrea della Porta) - Tidy resource sizing and assignment with helpers to reduce redundancy (Ilpo Järvinen) - Improve pdev_sort_resources() 'bogus alignment' warning to be more specific (Ilpo Järvinen) Driver binding: - Convert driver .remove_new() callbacks to .remove() again to finish the conversion from returning 'int' to being 'void' (Sergio Paracuellos) - Export pcim_request_all_regions(), a managed interface to request all BARs (Philipp Stanner) - Replace pcim_iomap_regions_request_all() with pcim_request_all_regions(), and pcim_iomap_table()[n] with pcim_iomap(n), in the following drivers: ahci, crypto qat, crypto octeontx2, intel_th, iwlwifi, ntb idt, serial rp2, ALSA korg1212 (Philipp Stanner) - Remove the now unused pcim_iomap_regions_request_all() (Philipp Stanner) - Export pcim_iounmap_region(), a managed interface to unmap and release a PCI BAR (Philipp Stanner) - Replace pcim_iomap_regions(mask) with pcim_iomap_region(n), and pcim_iounmap_regions(mask) with pcim_iounmap_region(n), in the following drivers: fpga dfl-pci, block mtip32xx, gpio-merrifield, cavium (Philipp Stanner) Error handling: - Add sysfs 'reset_subordinate' to reset the entire hierarchy below a bridge; previously Secondary Bus Reset could only be used when there was a single device below a bridge (Keith Busch) - Warn if we reset a running device where the driver didn't register pci_error_handlers notification callbacks (Keith Busch) ASPM: - Disable ASPM L1 before touching L1 PM Substates to follow the spec closer and avoid a CPU load timeout on some platforms (Ajay Agarwal) - Set devices below Intel VMD to D0 before enabling ASPM L1 Substates as required per spec for all L1 Substates changes (Jian-Hong Pan) Power management: - Enable starfive controller runtime PM before probing host bridge (Mayank Rana) - Enable runtime power management for host bridges (Krishna chaitanya chundru) Power control: - Use of_platform_device_create() instead of of_platform_populate() to create pwrctl platform devices so we can control it based on the child nodes (Manivannan Sadhasivam) - Create pwrctrl platform devices only if there's a relevant power supply property (Manivannan Sadhasivam) - Add device link from the pwrctl supplier to the PCI dev to ensure pwrctl drivers are probed before the PCI dev driver; this avoids a race where pwrctl could change device power state while the PCI driver was active (Manivannan Sadhasivam) - Find pwrctl device for removal with of_find_device_by_node() instead of searching all children of the parent (Manivannan Sadhasivam) - Rename 'pwrctl' to 'pwrctrl' to match new bandwidth controller ('bwctrl') and hotplug files (Bjorn Helgaas) Bandwidth control: - Add read/modify/write locking for Link Control 2, which is used to manage Link speed (Ilpo Järvinen) - Extract Link Bandwidth Management Status check into pcie_lbms_seen(), where it can be shared between the bandwidth controller and quirks that use it to help retrain failed links (Ilpo Järvinen) - Re-add Link Bandwidth notification support with updates to address the reasons it was previously reverted (Alexandru Gagniuc, Ilpo Järvinen) - Add pcie_set_target_speed() and related functionality so drivers can manage PCIe Link speed based on thermal or other constraints (Ilpo Järvinen) - Add a thermal cooling driver to throttle PCIe Links via the existing thermal management framework (Ilpo Järvinen) - Add a userspace selftest for the PCIe bandwidth controller (Ilpo Järvinen) PCI device hotplug: - Add hotplug controller driver for Marvell OCTEON multi-function device where function 0 has a management console interface to enable/disable and provision various personalities for the other functions (Shijith Thotton) - Retain a reference to the pci_bus for the lifetime of a pci_slot to avoid a use-after-free when the thunderbolt driver resets USB4 host routers on boot, causing hotplug remove/add of downstream docks or other devices (Lukas Wunner) - Remove unused cpcihp struct cpci_hp_controller_ops.hardware_test (Guilherme Giacomo Simoes) - Remove unused cpqphp struct ctrl_dbg.ctrl (Christophe JAILLET) - Use pci_bus_read_dev_vendor_id() instead of hand-coded presence detection in cpqphp (Ilpo Järvinen) - Simplify cpqphp enumeration, which is already simple-minded and doesn't handle devices below hot-added bridges (Ilpo Järvinen) Virtualization: - Add ACS quirk for Wangxun FF5xxx NICs, which don't advertise an ACS capability but do isolate functions as though PCI_ACS_RR and PCI_ACS_CR were set, so the functions can be in independent IOMMU groups (Mengyuan Lou) TLP Processing Hints (TPH): - Add and document TLP Processing Hints (TPH) support so drivers can enable and disable TPH and the kernel can save/restore TPH configuration (Wei Huang) - Add TPH Steering Tag support so drivers can retrieve Steering Tag values associated with specific CPUs via an ACPI _DSM to improve performance by directing DMA writes closer to their consumers (Wei Huang) Data Object Exchange (DOE): - Wait up to 1 second for DOE Busy bit to clear before writing a request to the mailbox to avoid failures if the mailbox is still busy from a previous transfer (Gregory Price) Endpoint framework: - Skip attempts to allocate from endpoint controller memory window if the requested size is larger than the window (Damien Le Moal) - Add and document pci_epc_mem_map() and pci_epc_mem_unmap() to handle controller-specific size and alignment constraints, and add test cases to the endpoint test driver (Damien Le Moal) - Implement dwc pci_epc_ops.align_addr() so pci_epc_mem_map() can observe DWC-specific alignment requirements (Damien Le Moal) - Synchronously cancel command handler work in endpoint test before cleaning up DMA and BARs (Damien Le Moal) - Respect endpoint page size in dw_pcie_ep_align_addr() (Niklas Cassel) - Use dw_pcie_ep_align_addr() in dw_pcie_ep_raise_msi_irq() and dw_pcie_ep_raise_msix_irq() instead of open coding the equivalent (Niklas Cassel) - Avoid NULL dereference if Modem Host Interface Endpoint lacks 'mmio' DT property (Zhongqiu Han) - Release PCI domain ID of Endpoint controller parent (not controller itself) and before unregistering the controller, to avoid use-after-free (Zijun Hu) - Clear secondary (not primary) EPC in pci_epc_remove_epf() when removing the secondary controller associated with an NTB (Zijun Hu) Cadence PCIe controller driver: - Lower severity of 'phy-names' message (Bartosz Wawrzyniak) Freescale i.MX6 PCIe controller driver: - Fix suspend/resume support on i.MX6QDL, which has a hardware erratum that prevents use of L2 (Stefan Eichenberger) Intel VMD host bridge driver: - Add 0xb60b and 0xb06f Device IDs for client SKUs (Nirmal Patel) MediaTek PCIe Gen3 controller driver: - Update mediatek-gen3 DT binding to require the exact number of clocks for each SoC (Fei Shao) - Add support for DT 'max-link-speed' and 'num-lanes' properties to restrict the link speed and width (AngeloGioacchino Del Regno) Microchip PolarFlare PCIe controller driver: - Add DT and driver support for using either of the two PolarFire Root Ports (Conor Dooley) NVIDIA Tegra194 PCIe controller driver: - Move endpoint controller cleanups that depend on refclk from the host to the notifier that tells us the host has deasserted PERST#, when refclk should be valid (Manivannan Sadhasivam) Qualcomm PCIe controller driver: - Add qcom SAR2130P DT binding with an additional clock (Dmitry Baryshkov) - Enable MSI interrupts if 'global' IRQ is supported, since a previous commit unintentionally masked them (Manivannan Sadhasivam) - Move endpoint controller cleanups that depend on refclk from the host to the notifier that tells us the host has deasserted PERST#, when refclk should be valid (Manivannan Sadhasivam) - Add DT binding and driver support for IPQ9574, with Synopsys IP v5.80a and Qcom IP 1.27.0 (devi priya) - Move the OPP "operating-points-v2" table from the qcom,pcie-sm8450.yaml DT binding to qcom,pcie-common.yaml, where it can be used by other Qcom platforms (Qiang Yu) - Add 'global' SPI interrupt for events like link-up, link-down to qcom,pcie-x1e80100 DT binding so we can start enumeration when the link comes up (Qiang Yu) - Disable ASPM L0s for qcom,pcie-x1e80100 since the PHY is not tuned to support this (Qiang Yu) - Add ops_1_21_0 for SC8280X family SoC, which doesn't use the 'iommu-map' DT property and doesn't need BDF-to-SID translation (Qiang Yu) Rockchip PCIe controller driver: - Define ROCKCHIP_PCIE_AT_SIZE_ALIGN to replace magic 256 endpoint .align value (Damien Le Moal) - When unmapping an endpoint window, compute the region index instead of searching for it, and verify that the address was mapped (Damien Le Moal) - When mapping an endpoint window, verify that the address hasn't been mapped already (Damien Le Moal) - Implement pci_epc_ops.align_addr() for rockchip-ep (Damien Le Moal) - Fix MSI IRQ data mapping to observe the alignment constraint, which fixes intermittent page faults in memcpy_toio() and memcpy_fromio() (Damien Le Moal) - Rename rockchip_pcie_parse_ep_dt() to rockchip_pcie_ep_get_resources() for consistency with similar DT interfaces (Damien Le Moal) - Skip the unnecessary link train in rockchip_pcie_ep_probe() and do it only in the endpoint start operation (Damien Le Moal) - Implement pci_epc_ops.stop_link() to disable link training and controller configuration (Damien Le Moal) - Attempt link training at 5 GT/s when both partners support it (Damien Le Moal) - Add a handler for PERST# signal so we can detect host-initiated resets and start link training after PERST# is deasserted (Damien Le Moal) Synopsys DesignWare PCIe controller driver: - Clear outbound address on unmap so dw_pcie_find_index() won't match an ATU index that was already unmapped (Damien Le Moal) - Use of_property_present() instead of of_property_read_bool() when testing for presence of non-boolean DT properties (Rob Herring) - Advertise 1MB size if endpoint supports Resizable BARs, which was inadvertently lost in v6.11 (Niklas Cassel) TI J721E PCIe driver: - Add PCIe support for J722S SoC (Siddharth Vadapalli) - Delay PCIE_T_PVPERL_MS (100 ms), not just PCIE_T_PERST_CLK_US (100 us), before deasserting PERST# to ensure power and refclk are stable (Siddharth Vadapalli) TI Keystone PCIe controller driver: - Set the 'ti,keystone-pcie' mode so v3.65a devices work in Root Complex mode (Kishon Vijay Abraham I) - Try to avoid unrecoverable SError for attempts to issue config transactions when the link is down; this is racy but the best we can do (Kishon Vijay Abraham I) Miscellaneous: - Reorganize kerneldoc parameter names to match order in function signature (Julia Lawall) - Fix sysfs reset_method_store() memory leak (Todd Kjos) - Simplify pci_create_slot() (Ilpo Järvinen) - Fix incorrect printf format specifiers in pcitest (Luo Yifan) ---------------------------------------------------------------- Ajay Agarwal (1): PCI/ASPM: Disable L1 before disabling L1 PM Substates Andrea della Porta (1): PCI: of_property: Assign PCI instead of CPU bus address to dynamic PCI nodes AngeloGioacchino Del Regno (2): PCI: mediatek-gen3: Add support for setting max-link-speed limit PCI: mediatek-gen3: Add support for restricting link width Bartosz Wawrzyniak (1): PCI: cadence: Lower severity of message when phy-names property is absent in DTS Bjorn Helgaas (36): PCI: Fix typos PCI: Drop duplicate pcie_get_speed_cap(), pcie_get_width_cap() declarations PCI/pwrctrl: Rename pwrctl files to pwrctrl PCI/pwrctrl: Rename pwrctrl functions and structures Merge branch 'pci/aspm' Merge branch 'pci/bwctrl' Merge branch 'pci/doe' Merge branch 'pci/devm' Merge branch 'pci/driver-remove' Merge branch 'pci/enumeration' Merge branch 'pci/hotplug' Merge branch 'pci/hotplug-octeon' Merge branch 'pci/locking' Merge branch 'pci/of' Merge branch 'pci/pm' Merge branch 'pci/pwrctl' Merge branch 'pci/reset' Merge branch 'pci/resource' Merge branch 'pci/thunderbolt' Merge branch 'pci/tph' Merge branch 'pci/virtualization' Merge branch 'pci/dt-bindings' Merge branch 'pci/endpoint' Merge branch 'pci/controller/cadence' Merge branch 'pci/controller/dwc' Merge branch 'pci/controller/imx6' Merge branch 'pci/controller/j721e' Merge branch 'pci/controller/keystone' Merge branch 'pci/controller/mediatek' Merge branch 'pci/controller/microchip' Merge branch 'pci/controller/qcom' Merge branch 'pci/controller/rockchip' Merge branch 'pci/controller/tegra194' Merge branch 'pci/controller/vmd' Merge branch 'pci/misc' Merge branch 'pci/typos' Christophe JAILLET (1): PCI: cpqphp: Remove unused struct ctrl_dbg.ctrl Conor Dooley (2): dt-bindings: PCI: microchip,pcie-host: Add reg for Root Port 2 PCI: microchip: Add support for using either Root Port 1 or 2 Damien Le Moal (21): PCI: endpoint: Introduce pci_epc_function_is_valid() PCI: endpoint: Improve pci_epc_mem_alloc_addr() PCI: endpoint: Introduce pci_epc_mem_map()/unmap() PCI: endpoint: Update documentation PCI: endpoint: test: Use pci_epc_mem_map/unmap() PCI: dwc: endpoint: Clear outbound address on unmap PCI: dwc: endpoint: Implement the pci_epc_ops::align_addr() operation PCI: endpoint: test: Synchronously cancel command handler work PCI: rockchip-ep: Fix address translation unit programming PCI: rockchip-ep: Use a macro to define EP controller .align feature PCI: rockchip-ep: Improve rockchip_pcie_ep_unmap_addr() PCI: rockchip-ep: Improve rockchip_pcie_ep_map_addr() PCI: rockchip-ep: Implement the pci_epc_ops::align_addr() operation PCI: rockchip-ep: Fix MSI IRQ data mapping PCI: rockchip-ep: Rename rockchip_pcie_parse_ep_dt() PCI: rockchip-ep: Refactor rockchip_pcie_ep_probe() memory allocations PCI: rockchip-ep: Refactor rockchip_pcie_ep_probe() MSI-X hiding PCI: rockchip-ep: Refactor endpoint link training enable PCI: rockship-ep: Implement the pci_epc_ops::stop_link() operation PCI: rockchip-ep: Improve link training PCI: rockchip-ep: Handle PERST# signal in EP mode Dmitry Baryshkov (1): dt-bindings: PCI: qcom,pcie-sm8550: Add SAR2130P compatible Esther Shimanovich (1): PCI: Detect and trust built-in Thunderbolt chips Fei Shao (1): dt-bindings: PCI: mediatek-gen3: Allow exact number of clocks only Gregory Price (1): PCI/DOE: Poll DOE Busy bit for up to 1 second in pci_doe_send_req() Guilherme Giacomo Simoes (1): PCI: cpcihp: Remove unused struct cpci_hp_controller_ops.hardware_test Ilpo Järvinen (23): PCI: hotplug: Remove "Returns" kerneldoc from void functions PCI: Simplify pci_create_slot() logic resource: Add resource set range and size helpers PCI: Use resource_set_{range,size}() helpers PCI: Use align and resource helpers, and SZ_* in quirk_s3_64M() PCI: Add ALIGN_DOWN_IF_NONZERO() helper PCI: Remove unused PCI_SUBTRACTIVE_DECODE PCI: Move struct pci_bus_resource into bus.c PCI: Simplify pci_read_bridge_bases() logic PCI: Improve pdev_sort_resources() warning message PCI: cpqphp: Fix PCIBIOS_* return value confusion PCI: cpqphp: Use pci_bus_read_dev_vendor_id() to detect presence PCI: cpqphp: Use define to read class/revision dword PCI: cpqphp: Simplify PCI_ScanBusForNonBridge() Documentation PCI: Reformat RMW ops documentation PCI: Protect Link Control 2 Register with RMW locking PCI: Store all PCIe Supported Link Speeds PCI: Refactor pcie_update_link_speed() PCI: Abstract LBMS seen check into pcie_lbms_seen() PCI/bwctrl: Re-add BW notification portdrv as PCIe BW controller PCI/bwctrl: Add pcie_set_target_speed() to set PCIe Link Speed thermal: Add PCIe cooling driver selftests/pcie_bwctrl: Create selftests Jian-Hong Pan (2): PCI/ASPM: Add notes about enabling PCI-PM L1SS to pci_enable_link_state(_locked) PCI: vmd: Set devices to D0 before enabling PM L1 Substates Julia Lawall (1): PCI: hotplug: Reorganize kerneldoc parameter names Keith Busch (7): PCI: Make pci_stop_dev() concurrent safe PCI: Make pci_destroy_dev() concurrent safe PCI: Move __pci_walk_bus() mutex to where we need it PCI: Convert __pci_walk_bus() to be recursive PCI: Unexport pci_walk_bus_locked() PCI: Add 'reset_subordinate' to reset hierarchy below bridge PCI: Warn if a running device is unaware of reset Kishon Vijay Abraham I (2): PCI: keystone: Set mode as Root Complex for "ti,keystone-pcie" compatible PCI: keystone: Add link up check to ks_pcie_other_map_bus() Krishna chaitanya chundru (1): PCI: Enable runtime PM of the host bridge Lukas Wunner (1): PCI: Fix use-after-free of slot->bus on hot remove Luo Yifan (1): tools: PCI: Fix incorrect printf format specifiers Manivannan Sadhasivam (7): PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported PCI: qcom-ep: Move controller cleanups to qcom_pcie_perst_deassert() PCI: tegra194: Move controller cleanups to pex_ep_event_pex_rst_deassert() PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices PCI/pwrctl: Create pwrctl device only if at least one power supply is present PCI/pwrctl: Ensure that pwrctl drivers are probed before PCI client drivers PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent Mayank Rana (1): PCI: starfive: Enable controller runtime PM before probing host bridge Mengyuan Lou (1): PCI: Add ACS quirk for Wangxun FF5xxx NICs Niklas Cassel (2): PCI: dwc: ep: Use align addr function for dw_pcie_ep_raise_{msi,msix}_irq() PCI: dwc: ep: Fix advertised resizable BAR size regression Nirmal Patel (1): PCI: vmd: Add DID 8086:B06F and 8086:B60B for Intel client SKUs Philipp Stanner (15): PCI: Make pcim_request_all_regions() a public function ata: ahci: Replace deprecated PCI functions crypto: qat - replace deprecated PCI functions crypto: marvell - replace deprecated PCI functions intel_th: pci: Replace deprecated PCI functions wifi: iwlwifi: replace deprecated PCI functions ntb: idt: Replace deprecated PCI functions serial: rp2: Replace deprecated PCI functions ALSA: korg1212: Replace deprecated PCI functions PCI: Remove pcim_iomap_regions_request_all() PCI: Make pcim_iounmap_region() a public function PCI: Deprecate pcim_iounmap_regions() fpga/dfl-pci.c: Replace deprecated PCI functions gpio: Replace deprecated PCI functions ethernet: cavium: Replace deprecated PCI functions Qiang Yu (4): dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt PCI: qcom: Remove BDF2SID mapping config for SC8280X family SoC PCI: qcom: Disable ASPM L0s for X1E80100 Rick Wertenbroek (1): PCI: endpoint: Fix pci_epc_map map_size kerneldoc string Rob Herring (Arm) (2): dt-bindings: PCI: snps,dw-pcie: Drop "#interrupt-cells" from example PCI: dwc: Use of_property_present() for non-boolean properties Sergio Paracuellos (2): PCI: controller: Switch back to struct platform_driver::remove() PCI: acpiphp_ampere_altra: Switch back to struct platform_driver::remove() Shijith Thotton (1): PCI: hotplug: Add OCTEON PCI hotplug controller driver Siddharth Vadapalli (2): PCI: j721e: Add PCIe support for J722S SoC PCI: j721e: Deassert PERST# after a delay of PCIE_T_PVPERL_MS milliseconds Stefan Eichenberger (1): PCI: imx6: Fix suspend/resume support on i.MX6QDL Todd Kjos (1): PCI: Fix reset_method_store() memory leak Wang Jiang (1): PCI: endpoint: Remove surplus return statement from pci_epf_test_clean_dma_chan() Wei Huang (3): PCI: Add TLP Processing Hints (TPH) support PCI/TPH: Add Steering Tag support PCI/TPH: Add TPH documentation Yang Li (1): PCI: mediatek-gen3: Remove unneeded semicolon Zhongqiu Han (1): PCI: endpoint: epf-mhi: Avoid NULL dereference if DT lacks 'mmio' Zijun Hu (2): PCI: endpoint: Fix PCI domain ID release in pci_epc_destroy() PCI: endpoint: Clear secondary (not primary) EPC in pci_epc_remove_epf() devi priya (2): dt-bindings: PCI: qcom: Document the IPQ9574 PCIe controller PCI: qcom: Add support for IPQ9574 Documentation/ABI/testing/sysfs-bus-pci | 11 + Documentation/PCI/endpoint/pci-endpoint.rst | 29 ++ Documentation/PCI/index.rst | 1 + Documentation/PCI/pciebus-howto.rst | 14 +- Documentation/PCI/tph.rst | 132 +++++ Documentation/admin-guide/kernel-parameters.txt | 4 + .../bindings/pci/mediatek-pcie-gen3.yaml | 5 +- .../bindings/pci/microchip,pcie-host.yaml | 11 +- .../bindings/pci/plda,xpressrich3-axi-common.yaml | 14 +- .../devicetree/bindings/pci/qcom,pcie-common.yaml | 4 + .../devicetree/bindings/pci/qcom,pcie-sm8450.yaml | 4 - .../devicetree/bindings/pci/qcom,pcie-sm8550.yaml | 4 +- .../bindings/pci/qcom,pcie-x1e80100.yaml | 9 +- .../devicetree/bindings/pci/qcom,pcie.yaml | 50 ++ .../devicetree/bindings/pci/snps,dw-pcie.yaml | 1 - .../bindings/pci/starfive,jh7110-pcie.yaml | 7 + Documentation/driver-api/driver-model/devres.rst | 1 - Documentation/driver-api/pci/pci.rst | 3 + MAINTAINERS | 19 +- arch/s390/pci/pci_bus.c | 2 +- arch/x86/pci/acpi.c | 119 +++++ arch/x86/pci/fixup.c | 2 +- drivers/ata/acard-ahci.c | 6 +- drivers/ata/ahci.c | 6 +- drivers/crypto/intel/qat/qat_420xx/adf_drv.c | 11 +- drivers/crypto/intel/qat/qat_4xxx/adf_drv.c | 11 +- drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c | 14 +- drivers/crypto/marvell/octeontx2/otx2_cptvf_main.c | 13 +- drivers/fpga/dfl-pci.c | 16 +- drivers/gpio/gpio-merrifield.c | 15 +- drivers/hwtracing/intel_th/pci.c | 9 +- drivers/net/ethernet/cavium/common/cavium_ptp.c | 7 +- drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 16 +- drivers/ntb/hw/idt/ntb_hw_idt.c | 13 +- drivers/pci/Kconfig | 11 +- drivers/pci/Makefile | 3 +- drivers/pci/bus.c | 134 +++-- drivers/pci/controller/cadence/pci-j721e.c | 39 +- drivers/pci/controller/cadence/pcie-cadence.c | 4 +- drivers/pci/controller/dwc/pci-exynos.c | 2 +- drivers/pci/controller/dwc/pci-imx6.c | 57 ++- drivers/pci/controller/dwc/pci-keystone.c | 14 +- drivers/pci/controller/dwc/pcie-bt1.c | 2 +- drivers/pci/controller/dwc/pcie-designware-ep.c | 38 +- drivers/pci/controller/dwc/pcie-designware-host.c | 4 +- drivers/pci/controller/dwc/pcie-histb.c | 2 +- drivers/pci/controller/dwc/pcie-intel-gw.c | 2 +- drivers/pci/controller/dwc/pcie-kirin.c | 2 +- drivers/pci/controller/dwc/pcie-qcom-ep.c | 8 +- drivers/pci/controller/dwc/pcie-qcom.c | 19 +- drivers/pci/controller/dwc/pcie-rcar-gen4.c | 2 +- drivers/pci/controller/dwc/pcie-tegra194.c | 9 +- drivers/pci/controller/pci-aardvark.c | 2 +- drivers/pci/controller/pci-host-generic.c | 2 +- drivers/pci/controller/pci-mvebu.c | 2 +- drivers/pci/controller/pci-tegra.c | 4 +- drivers/pci/controller/pci-thunder-pem.c | 4 +- drivers/pci/controller/pci-xgene-msi.c | 2 +- drivers/pci/controller/pcie-altera-msi.c | 2 +- drivers/pci/controller/pcie-altera.c | 6 +- drivers/pci/controller/pcie-brcmstb.c | 2 +- drivers/pci/controller/pcie-hisi-error.c | 2 +- drivers/pci/controller/pcie-iproc-platform.c | 2 +- drivers/pci/controller/pcie-mediatek-gen3.c | 77 ++- drivers/pci/controller/pcie-mediatek.c | 2 +- drivers/pci/controller/pcie-mt7621.c | 2 +- drivers/pci/controller/pcie-rcar-host.c | 4 +- drivers/pci/controller/pcie-rockchip-ep.c | 440 +++++++++++++---- drivers/pci/controller/pcie-rockchip-host.c | 6 +- drivers/pci/controller/pcie-rockchip.c | 21 +- drivers/pci/controller/pcie-rockchip.h | 24 +- drivers/pci/controller/pcie-xilinx-nwl.c | 2 +- drivers/pci/controller/plda/pcie-microchip-host.c | 126 ++--- drivers/pci/controller/plda/pcie-starfive.c | 12 +- drivers/pci/controller/vmd.c | 17 +- drivers/pci/devres.c | 67 +-- drivers/pci/doe.c | 14 +- drivers/pci/ecam.c | 2 +- drivers/pci/endpoint/functions/pci-epf-mhi.c | 6 + drivers/pci/endpoint/functions/pci-epf-test.c | 380 +++++++------- drivers/pci/endpoint/pci-epc-core.c | 193 ++++++-- drivers/pci/endpoint/pci-epc-mem.c | 9 +- drivers/pci/hotplug/Kconfig | 10 + drivers/pci/hotplug/Makefile | 1 + drivers/pci/hotplug/acpiphp_ampere_altra.c | 2 +- drivers/pci/hotplug/cpci_hotplug.h | 1 - drivers/pci/hotplug/cpqphp_pci.c | 47 +- drivers/pci/hotplug/cpqphp_sysfs.c | 1 - drivers/pci/hotplug/octep_hp.c | 427 ++++++++++++++++ drivers/pci/hotplug/pci_hotplug_core.c | 8 +- drivers/pci/hotplug/pciehp_ctrl.c | 5 + drivers/pci/hotplug/pciehp_hpc.c | 2 +- drivers/pci/iov.c | 6 +- drivers/pci/of.c | 27 + drivers/pci/of_property.c | 2 +- drivers/pci/pci-sysfs.c | 26 + drivers/pci/pci.c | 98 ++-- drivers/pci/pci.h | 79 ++- drivers/pci/pcie/Makefile | 2 +- drivers/pci/pcie/aer.c | 15 +- drivers/pci/pcie/aspm.c | 100 ++-- drivers/pci/pcie/bwctrl.c | 366 ++++++++++++++ drivers/pci/pcie/portdrv.c | 9 +- drivers/pci/pcie/portdrv.h | 6 +- drivers/pci/probe.c | 77 ++- drivers/pci/pwrctl/Makefile | 6 - drivers/pci/pwrctl/core.c | 157 ------ drivers/pci/{pwrctl => pwrctrl}/Kconfig | 0 drivers/pci/pwrctrl/Makefile | 6 + drivers/pci/pwrctrl/core.c | 148 ++++++ .../pci-pwrctrl-pwrseq.c} | 34 +- drivers/pci/quirks.c | 70 +-- drivers/pci/remove.c | 32 +- drivers/pci/setup-bus.c | 41 +- drivers/pci/setup-res.c | 7 +- drivers/pci/slot.c | 24 +- drivers/pci/tph.c | 547 +++++++++++++++++++++ drivers/thermal/Kconfig | 9 + drivers/thermal/Makefile | 2 + drivers/thermal/pcie_cooling.c | 80 +++ drivers/tty/serial/rp2.c | 12 +- include/linux/ioport.h | 32 ++ include/linux/pci-bwctrl.h | 28 ++ include/linux/pci-epc.h | 38 ++ include/linux/{pci-pwrctl.h => pci-pwrctrl.h} | 22 +- include/linux/pci-tph.h | 44 ++ include/linux/pci.h | 66 +-- include/uapi/linux/pci_regs.h | 38 +- sound/pci/korg1212/korg1212.c | 6 +- tools/pci/pcitest.c | 10 +- tools/testing/selftests/Makefile | 1 + tools/testing/selftests/pcie_bwctrl/Makefile | 2 + .../pcie_bwctrl/set_pcie_cooling_state.sh | 122 +++++ .../selftests/pcie_bwctrl/set_pcie_speed.sh | 67 +++ 134 files changed, 4173 insertions(+), 1164 deletions(-) create mode 100644 Documentation/PCI/tph.rst create mode 100644 drivers/pci/hotplug/octep_hp.c create mode 100644 drivers/pci/pcie/bwctrl.c delete mode 100644 drivers/pci/pwrctl/Makefile delete mode 100644 drivers/pci/pwrctl/core.c rename drivers/pci/{pwrctl => pwrctrl}/Kconfig (100%) create mode 100644 drivers/pci/pwrctrl/Makefile create mode 100644 drivers/pci/pwrctrl/core.c rename drivers/pci/{pwrctl/pci-pwrctl-pwrseq.c => pwrctrl/pci-pwrctrl-pwrseq.c} (64%) create mode 100644 drivers/pci/tph.c create mode 100644 drivers/thermal/pcie_cooling.c create mode 100644 include/linux/pci-bwctrl.h rename include/linux/{pci-pwrctl.h => pci-pwrctrl.h} (69%) create mode 100644 include/linux/pci-tph.h create mode 100644 tools/testing/selftests/pcie_bwctrl/Makefile create mode 100755 tools/testing/selftests/pcie_bwctrl/set_pcie_cooling_state.sh create mode 100755 tools/testing/selftests/pcie_bwctrl/set_pcie_speed.sh . Date: Sat, 30 Nov 2024 18:14:44 -0600 From: Bjorn Helgaas To: Linus Torvalds Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Manivannan Sadhasivam , Brian Norris , Saurabh Sengar Subject: [GIT PULL] PCI fixes for v6.13 The following changes since commit 10099266dec8275a6899e6a27dcdfebbcc726cc7: Merge branch 'pci/typos' (2024-11-25 13:41:00 -0600) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.13-fixes-1 for you to fetch changes up to 5c8418cf4025388bedd4d65ada993f7d3786cc3a: PCI/pwrctrl: Unregister platform device only if one actually exists (2024-11-30 11:41:25 -0600) ---------------------------------------------------------------- - When removing a PCI device, only look up and remove a platform device if there is an associated device node for which there could be a platform device, to fix a merge window regression (Brian Norris) ---------------------------------------------------------------- Brian Norris (1): PCI/pwrctrl: Unregister platform device only if one actually exists drivers/pci/remove.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) . Date: Sat, 21 Dec 2024 22:12:51 +0900 From: Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= To: Linus Torvalds Cc: Bjorn Helgaas , Lorenzo Pieralisi , Manivannan Sadhasivam , Lukas Wunner , Niklas Schnelle , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [GIT PULL] PCI fixes for v6.13 Hello Linus, The following changes since commit 40384c840ea1944d7c5a392e8975ed088ecf0b37: Linux 6.13-rc1 (2024-12-01 14:28:56 -0800) are available in the Git repository at: ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.13-fixes-2 for you to fetch changes up to 774c71c52aa487001c7da9f93b10cedc9985c371: PCI/bwctrl: Enable only if more than one speed is supported (2024-12-19 16:36:36 +0000) ---------------------------------------------------------------- PCI fixes for Linux 6.13 Two small patches that are important for fixing boot time hang on Intel JHL7540 "Titan Ridge" platforms equipped with a Thunderbolt controller. The boot time issue manifests itself when a PCI Express bandwidth control is unnecessarily enabled on the Thunderbolt controller downstream ports, which only supports a link speed of 2.5 GT/s in accordance with USB4 v2 specification (p. 671, sec. 11.2.1, "PCIe Physical Layer Logical Sub-block"). As such, there is no need to enable bandwidth control on such downstream port links, which also works around the issue. Both patches were tested by the original reporter on the hardware on which the failure origin golly manifested itself. Both fixes were proven to resolve the reported boot hang issue, and both patches have been in linux-next this week with no reported problems. Signed-off-by: Krzysztof Wilczyński ---------------------------------------------------------------- Lukas Wunner (2): PCI: Honor Max Link Speed when determining supported speeds PCI/bwctrl: Enable only if more than one speed is supported drivers/pci/pci.c | 6 ++++-- drivers/pci/pcie/portdrv.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) . Date: Tue, 14 Jan 2025 12:56:29 -0600 From: Bjorn Helgaas To: Linus Torvalds Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Manivannan Sadhasivam , Lukas Wunner , Evert Vorster , Ilpo =?utf-8?B?SsOkcnZpbmVu?= Subject: [GIT PULL] PCI fixes for v6.13 The following changes since commit 40384c840ea1944d7c5a392e8975ed088ecf0b37: Linux 6.13-rc1 (2024-12-01 14:28:56 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.13-fixes-3 for you to fetch changes up to 15b8968dcb90f194d44501468b230e6e0d816d4a: PCI/bwctrl: Fix NULL pointer deref on unbind and bind (2025-01-07 14:24:06 -0600) ---------------------------------------------------------------- - Prevent bwctrl NULL pointer dereference that caused hangs on shutdown on ASUS ROG Strix SCAR 17 G733PYV (Lukas Wunner) ---------------------------------------------------------------- Lukas Wunner (1): PCI/bwctrl: Fix NULL pointer deref on unbind and bind drivers/pci/pcie/bwctrl.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) . Date: Fri, 24 Jan 2025 12:57:34 -0600 From: Bjorn Helgaas To: Linus Torvalds Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , Lorenzo Pieralisi , Manivannan Sadhasivam , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= Subject: [GIT PULL] PCI changes for v6.14 The following changes since commit 40384c840ea1944d7c5a392e8975ed088ecf0b37: Linux 6.13-rc1 (2024-12-01 14:28:56 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.14-changes for you to fetch changes up to 10ff5bbfd4b020e58fd8863e44ae59f0d4c337bf: Merge branch 'pci/misc' (2025-01-23 13:05:06 -0600) ---------------------------------------------------------------- Enumeration: - Batch sizing of multiple BARs while memory decoding is disabled instead of disabling/enabling decoding for each BAR individually; this optimizes virtualized environments where toggling decoding enable is expensive (Alex Williamson) - Add host bridge .enable_device() and .disable_device() hooks for bridges that need to configure things like Requester ID to StreamID mapping when enabling devices (Frank Li) - Extend struct pci_ecam_ops with .enable_device() and .disable_device() hooks so drivers that use pci_host_common_probe() instead of their own .probe() have a way to set the .enable_device() callbacks (Marc Zyngier) - Drop 'No bus range found' message so we don't complain when DTs don't specify the default 'bus-range = <0x00 0xff>' (Bjorn Helgaas) - Rename the drivers/pci/of_property.c struct of_pci_range to of_pci_range_entry to avoid confusion with the global of_pci_range in include/linux/of_address.h (Bjorn Helgaas) Driver binding: - Update resource request API documentation to encourage callers to supply a driver name when requesting resources (Philipp Stanner) - Export pci_intx_unmanaged() and pcim_intx() (always managed) so callers of pci_intx() (which is sometimes managed) can explicitly choose the one they need (Philipp Stanner) - Convert drivers from pci_intx() to always-managed pcim_intx() or never-managed pci_intx_unmanaged(): amd_sfh, ata (ahci, ata_piix, pata_rdc, sata_sil24, sata_sis, sata_uli, sata_vsc), bnx2x, bna, ntb, qtnfmac, rtsx, tifm_7xx1, vfio, xen-pciback (Philipp Stanner) - Remove pci_intx_unmanaged() since pci_intx() is now always unmanaged and pcim_intx() is always managed (Philipp Stanner) Error handling: - Unexport pcie_read_tlp_log() to encourage drivers to use PCI core logging rather than building their own (Ilpo Järvinen) - Move TLP Log handling to its own file (Ilpo Järvinen) - Store number of supported End-End TLP Prefixes always so we can read the correct number of DWORDs from the TLP Prefix Log (Ilpo Järvinen) - Read TLP Prefixes in addition to the Header Log in pcie_read_tlp_log() (Ilpo Järvinen) - Add pcie_print_tlp_log() to consolidate printing of TLP Header and Prefix Log (Ilpo Järvinen) - Quirk the Intel Raptor Lake-P PIO log size to accommodate vendor BIOSes that don't configure it correctly (Takashi Iwai) ASPM: - Save parent L1 PM Substates config so when we restore it along with an endpoint's config, the parent info isn't junk (Jian-Hong Pan) Power management: - Avoid D3 for Root Ports on TUXEDO Sirius Gen1 with old BIOS because the system can't wake up from suspend (Werner Sembach) Endpoint framework: - Destroy the EPC device in devm_pci_epc_destroy(), which previously didn't call devres_release() (Zijun Hu) - Finish virtual EP removal in pci_epf_remove_vepf(), which previously caused a subsequent pci_epf_add_vepf() to fail with -EBUSY (Zijun Hu) - Write BAR_MASK before iATU registers in pci_epc_set_bar() so we don't depend on the BAR_MASK reset value being larger than the requested BAR size (Niklas Cassel) - Prevent changing BAR size/flags in pci_epc_set_bar() to prevent reads from bypassing the iATU if we reduced the BAR size (Niklas Cassel) - Verify address alignment when programming iATU so we don't attempt to write bits that are read-only because of the BAR size, which could lead to directing accesses to the wrong address (Niklas Cassel) - Implement artpec6 pci_epc_features so we can rely on all drivers supporting it so we can use it in EPC core code (Niklas Cassel) - Check for BARs of fixed size to prevent endpoint drivers from trying to change their size (Niklas Cassel) - Verify that requested BAR size is a power of two when endpoint driver sets the BAR (Niklas Cassel) Endpoint framework tests: - Clear pci-epf-test dma_chan_rx, not dma_chan_tx, after freeing dma_chan_rx (Mohamed Khalfella) - Correct the DMA MEMCPY test so it doesn't fail if the Endpoint supports both DMA_PRIVATE and DMA_MEMCPY (Manivannan Sadhasivam) - Add pci-epf-test and pci_endpoint_test support for capabilities (Niklas Cassel) - Add Endpoint test for consecutive BARs (Niklas Cassel) - Remove redundant comparison from Endpoint BAR test because a > 1MB BAR can always be exactly covered by iterating with a 1MB buffer (Hans Zhang) - Move and convert PCI Endpoint tests from tools/pci to Kselftests (Manivannan Sadhasivam) Apple PCIe controller driver: - Convert StreamID mapping configuration from a bus notifier to the .enable_device() and .disable_device() callbacks (Marc Zyngier) Freescale i.MX6 PCIe controller driver: - Add Requester ID to StreamID mapping configuration when enabling devices (Frank Li) - Use DWC core suspend/resume functions for imx6 (Frank Li) - Add suspend/resume support for i.MX8MQ, i.MX8Q, and i.MX95 (Richard Zhu) - Add DT compatible string 'fsl,imx8q-pcie-ep' and driver support for i.MX8Q series (i.MX8QM, i.MX8QXP, and i.MX8DXL) Endpoints (Frank Li) - Add DT binding for optional i.MX95 Refclk and driver support to enable it if the platform hasn't enabled it (Richard Zhu) - Configure PHY based on controller being in Root Complex or Endpoint mode (Frank Li) - Rely on dbi2 and iATU base addresses from DT via dw_pcie_get_resources() instead of hardcoding them (Richard Zhu) - Deassert apps_reset in imx_pcie_deassert_core_reset() since it is asserted in imx_pcie_assert_core_reset() (Richard Zhu) - Add missing reference clock enable or disable logic for IMX6SX, IMX7D, IMX8MM (Richard Zhu) - Remove redundant imx7d_pcie_init_phy() since imx7d_pcie_enable_ref_clk() does the same thing (Richard Zhu) Freescale Layerscape PCIe controller driver: - Simplify by using syscon_regmap_lookup_by_phandle_args() instead of syscon_regmap_lookup_by_phandle() followed by of_property_read_u32_array() (Krzysztof Kozlowski) Marvell MVEBU PCIe controller driver: - Add MODULE_DEVICE_TABLE() to enable module autoloading (Liao Chen) MediaTek PCIe Gen3 controller driver: - Use clk_bulk_prepare_enable() instead of separate clk_bulk_prepare() and clk_bulk_enable() (Lorenzo Bianconi) - Rearrange reset assert/deassert so they're both done in the *_power_up() callbacks (Lorenzo Bianconi) - Document that Airoha EN7581 requires PHY init and power-on before PHY reset deassert, unlike other MediaTek Gen3 controllers (Lorenzo Bianconi) - Move Airoha EN7581 post-reset delay from the en7581 clock .enable() method to mtk_pcie_en7581_power_up() (Lorenzo Bianconi) - Sleep instead of delay during Airoha EN7581 power-up, since this is a non-atomic context (Lorenzo Bianconi) - Skip PERST# assertion on Airoha EN7581 during probe and suspend/resume to avoid a hardware defect (Lorenzo Bianconi) - Enable async probe to reduce system startup time (Douglas Anderson) Microchip PolarFlare PCIe controller driver: - Set up the inbound address translation based on whether the platform allows coherent or non-coherent DMA (Daire McNamara) - Update DT binding such that platforms are DMA-coherent by default and must specify 'dma-noncoherent' if needed (Conor Dooley) Mobiveil PCIe controller driver: - Convert mobiveil-pcie.txt to YAML and update 'interrupt-names' and 'reg-names' (Frank Li) Qualcomm PCIe controller driver: - Add DT SM8550 and SM8650 optional 'global' interrupt for link events (Neil Armstrong) - Add DT 'compatible' strings for IPQ5424 PCIe controller (Manikanta Mylavarapu) - If 'global' IRQ is supported for detection of Link Up events, tell DWC core not to wait for link up (Krishna chaitanya chundru) Renesas R-Car PCIe controller driver: - Avoid passing stack buffer as resource name (King Dix) Rockchip PCIe controller driver: - Simplify clock and reset handling by using bulk interfaces (Anand Moon) - Pass typed rockchip_pcie (not void) pointer to rockchip_pcie_disable_clocks() (Anand Moon) - Return -ENOMEM, not success, when pci_epc_mem_alloc_addr() fails (Dan Carpenter) Rockchip DesignWare PCIe controller driver: - Use dll_link_up IRQ to detect Link Up and enumerate devices so users don't have to manually rescan (Niklas Cassel) - Tell DWC core not to wait for link up since the 'sys' interrupt is required and detects Link Up events (Niklas Cassel) Synopsys DesignWare PCIe controller driver: - Don't wait for link up in DWC core if driver can detect Link Up event (Krishna chaitanya chundru) - Update ICC and OPP votes after Link Up events (Krishna chaitanya chundru) - Always stop link in dw_pcie_suspend_noirq(), which is required at least for i.MX8QM to re-establish link on resume (Richard Zhu) - Drop racy and unnecessary LTSSM state check before sending PME_TURN_OFF message in dw_pcie_suspend_noirq() (Richard Zhu) - Add struct of_pci_range.parent_bus_addr for devices that need their immediate parent bus address, not the CPU address, e.g., to program an internal Address Translation Unit (iATU) (Frank Li) TI DRA7xx PCIe controller driver: - Simplify by using syscon_regmap_lookup_by_phandle_args() instead of syscon_regmap_lookup_by_phandle() followed by of_parse_phandle_with_fixed_args() or of_property_read_u32_index() (Krzysztof Kozlowski) Xilinx Versal CPM PCIe controller driver: - Add DT binding and driver support for Xilinx Versal CPM5 (Thippeswamy Havalige) MicroSemi Switchtec management driver: - Add Microchip PCI100X device IDs (Rakesh Babu Saladi) Miscellaneous: - Move reset related sysfs code from pci.c to pci-sysfs.c where other similar code lives (Ilpo Järvinen) - Simplify reset_method_store() memory management by using __free() instead of explicit kfree() cleanup (Ilpo Järvinen) - Constify struct bin_attribute for sysfs, VPD, P2PDMA, and the IBM ACPI hotplug driver (Thomas Weißschuh) - Remove redundant PCI_VSEC_HDR and PCI_VSEC_HDR_LEN_SHIFT (Dongdong Zhang) - Correct documentation of the 'config_acs=' kernel parameter (Akihiko Odaki) ---------------------------------------------------------------- Akihiko Odaki (1): Documentation: Fix pci=config_acs= example Alex Williamson (1): PCI: Batch BAR sizing operations Anand Moon (3): PCI: rockchip: Simplify clock handling by using clk_bulk*() functions PCI: rockchip: Simplify reset control handling by using reset_control_bulk*() function PCI: rockchip: Refactor rockchip_pcie_disable_clocks() signature Bjorn Helgaas (32): PCI: Unexport of_pci_parse_bus_range() PCI: of: Drop 'No bus range found' message PCI: of: Simplify devm_of_pci_get_host_bridge_resources() interface sparc/PCI: Update reference to devm_of_pci_get_host_bridge_resources() PCI: dwc: Add dw_pcie_suspend_noirq(), dw_pcie_resume_noirq() stubs for !CONFIG_PCIE_DW_HOST PCI: of_property: Rename struct of_pci_range to of_pci_range_entry PCI: imx6: Clean up comments and whitespace PCI: dwc: Simplify config resource lookup Merge branch 'pci/aspm' Merge branch 'pci/devres' Merge branch 'pci/dpc' Merge branch 'pci/enumeration' Merge branch 'pci/err' Merge branch 'pci/of' Merge branch 'pci/pci-sysfs' Merge branch 'pci/pm' Merge branch 'pci/switchtec' Merge branch 'pci/endpoint' Merge branch 'pci/endpoint-test' Merge branch 'pci/dt-bindings' Merge branch 'pci/controller/iommu-map' Merge branch 'pci/controller/dra7xx' Merge branch 'pci/controller/dwc' Merge branch 'pci/controller/imx6' Merge branch 'pci/controller/layerscape' Merge branch 'pci/controller/mediatek' Merge branch 'pci/controller/microchip' Merge branch 'pci/controller/mvebu' Merge branch 'pci/controller/rcar-ep' Merge branch 'pci/controller/rockchip' Merge branch 'pci/controller/xilinx-cpm' Merge branch 'pci/misc' Conor Dooley (1): dt-bindings: PCI: microchip,pcie-host: Allow dma-noncoherent Daire McNamara (1): PCI: microchip: Set inbound address translation for coherent or non-coherent mode Damien Le Moal (1): PCI: rockchip: Add missing fields descriptions for struct rockchip_pcie_ep Dan Carpenter (1): PCI: rockchip-ep: Fix error code in rockchip_pcie_ep_init_ob_mem() Dongdong Zhang (1): PCI: Remove redundant PCI_VSEC_HDR and PCI_VSEC_HDR_LEN_SHIFT Douglas Anderson (1): PCI: mediatek-gen3: Enable async probe by default Frank Li (8): PCI: Add enable_device() and disable_device() callbacks for bridges PCI: imx6: Add IOMMU and ITS MSI support for i.MX95 dt-bindings: PCI: fsl,imx6q-pcie-ep: Add compatible string fsl,imx8q-pcie-ep PCI: imx6: Add i.MX8Q PCIe Endpoint (EP) support PCI: imx6: Configure PHY based on Root Complex or Endpoint mode PCI: imx6: Use DWC common suspend resume method of: address: Add parent_bus_addr to struct of_pci_range dt-bindings: PCI: mobiveil: Convert mobiveil-pcie.txt to YAML Hans Zhang (1): misc: pci_endpoint_test: Remove redundant 'remainder' test Ilpo Järvinen (11): PCI: Don't expose pcie_read_tlp_log() outside PCI subsystem PCI: Move TLP Log handling to its own file PCI: Add defines for TLP Header/Prefix log sizes PCI: Use same names in pcie_read_tlp_log() prototype and definition PCI: Use unsigned int i in pcie_read_tlp_log() PCI: Store number of supported End-End TLP Prefixes PCI/sysfs: Move reset related sysfs code to correct file PCI/sysfs: Use __free() in reset_method_store() PCI/sysfs: Remove unnecessary zero in initializer PCI: Add TLP Prefix reading to pcie_read_tlp_log() PCI: Add pcie_print_tlp_log() to print TLP Header and Prefix Log Jian-Hong Pan (1): PCI/ASPM: Save parent L1SS config in pci_save_aspm_l1ss_state() King Dix (1): PCI: rcar-ep: Fix incorrect variable used when calling devm_request_mem_region() Krishna chaitanya chundru (3): PCI: dwc: Don't wait for link up if driver can detect Link Up event PCI: qcom: Don't wait for link if we can detect Link Up PCI: qcom: Update ICC and OPP values after Link Up event Krzysztof Kozlowski (2): PCI: layerscape: Use syscon_regmap_lookup_by_phandle_args PCI: dra7xx: Use syscon_regmap_lookup_by_phandle_args Liao Chen (1): PCI: mvebu: Enable module autoloading Lorenzo Bianconi (6): PCI: mediatek-gen3: Rely on clk_bulk_prepare_enable() in mtk_pcie_en7581_power_up() PCI: mediatek-gen3: Move reset/assert callbacks in .power_up() PCI: mediatek-gen3: Add comment about initialization order in mtk_pcie_en7581_power_up() PCI: mediatek-gen3: Move reset delay in mtk_pcie_en7581_power_up() PCI: mediatek-gen3: Rely on msleep() in mtk_pcie_en7581_power_up() PCI: mediatek-gen3: Avoid PCIe resetting via PERST# for Airoha EN7581 SoC Lukas Wunner (1): PCI: Update code comment on PCI_EXP_LNKCAP_SLS for PCIe r3.0 Manikanta Mylavarapu (1): dt-bindings: PCI: qcom: Document the IPQ5424 PCIe controller Manivannan Sadhasivam (4): PCI: endpoint: pci-epf-test: Fix check for DMA MEMCPY test misc: pci_endpoint_test: Fix IOCTL return value selftests: Move PCI Endpoint tests from tools/pci to Kselftests selftests: pci_endpoint: Migrate to Kselftest framework Marc Zyngier (2): PCI: host-generic: Allow {en,dis}able_device() to be provided via pci_ecam_ops PCI: apple: Convert to {en,dis}able_device() callbacks Mohamed Khalfella (1): PCI: endpoint: pci-epf-test: Set dma_chan_rx pointer to NULL on error Neil Armstrong (1): dt-bindings: PCI: qcom,pcie-sm8550: Document 'global' interrupt Niklas Cassel (12): PCI: dwc: ep: Write BAR_MASK before iATU registers in pci_epc_set_bar() PCI: dwc: ep: Prevent changing BAR size/flags in pci_epc_set_bar() PCI: dwc: ep: Add 'address' alignment to 'size' check in dw_pcie_prog_ep_inbound_atu() PCI: artpec6: Implement dw_pcie_ep operation get_features PCI: endpoint: Add size check for fixed size BARs in pci_epc_set_bar() PCI: endpoint: Verify that requested BAR size is a power of two PCI: dwc: Fix potential truncation in dw_pcie_edma_irq_verify() PCI: dw-rockchip: Enumerate endpoints based on dll_link_up IRQ PCI: dw-rockchip: Don't wait for link since we can detect Link Up PCI: endpoint: pci-epf-test: Add support for capabilities misc: pci_endpoint_test: Add support for capabilities misc: pci_endpoint_test: Add consecutive BAR test Philipp Stanner (12): PCI: Encourage resource request API users to supply driver name PCI: Export pci_intx_unmanaged() and pcim_intx() drivers/xen: Use never-managed version of pci_intx() ntb: Use never-managed version of pci_intx() misc: Use never-managed version of pci_intx() vfio/pci: Use never-managed version of pci_intx() PCI/MSI: Use never-managed version of pci_intx() ata: Use always-managed version of pci_intx() wifi: qtnfmac: use always-managed version of pcim_intx() HID: amd_sfh: Use always-managed version of pcim_intx() net/ethernet: Use never-managed version of pci_intx() PCI: Remove devres from pci_intx() Rakesh Babu Saladi (1): PCI: switchtec: Add Microchip PCI100X device IDs Richard Zhu (10): dt-bindings: PCI: fsl,imx6q-pcie: Add Refclk for i.MX95 RC PCI: imx6: Add Refclk for i.MX95 PCIe PCI: imx6: Fetch dbi2 and iATU base addesses from DT PCI: imx6: Skip controller_id generation logic for i.MX7D PCI: imx6: Deassert apps_reset in imx_pcie_deassert_core_reset() PCI: imx6: Add missing reference clock disable logic PCI: imx6: Remove surplus imx7d_pcie_init_phy() function PCI: dwc: Always stop link in the dw_pcie_suspend_noirq PCI: dwc: Remove LTSSM state test in dw_pcie_suspend_noirq() PCI: imx6: Add i.MX8MQ, i.MX8Q and i.MX95 PM support Rick Wertenbroek (1): PCI: endpoint: Replace magic number '6' by PCI_STD_NUM_BARS Takashi Iwai (1): PCI/DPC: Quirk PIO log size for Intel Raptor Lake-P Thippeswamy Havalige (2): dt-bindings: PCI: xilinx-cpm: Add compatible string for CPM5 host1 PCI: xilinx-cpm: Add support for Versal CPM5 Root Port Controller 1 Thomas Weißschuh (4): PCI/sysfs: Constify 'struct bin_attribute' PCI/VPD: Constify 'struct bin_attribute' PCI/P2PDMA: Constify 'struct bin_attribute' PCI/ACPI: Constify 'struct bin_attribute' Werner Sembach (1): PCI: Avoid putting some root ports into D3 on TUXEDO Sirius Gen1 Wolfram Sang (1): PCI: Don't include 'pm_wakeup.h' directly Zijun Hu (3): PCI: endpoint: Destroy the EPC device in devm_pci_epc_destroy() PCI: endpoint: Simplify pci_epc_get() PCI: endpoint: Finish virtual EP removal in pci_epf_remove_vepf() Documentation/PCI/endpoint/pci-test-howto.rst | 168 ++++---- Documentation/admin-guide/kernel-parameters.txt | 2 +- .../bindings/pci/fsl,imx6q-pcie-common.yaml | 4 +- .../devicetree/bindings/pci/fsl,imx6q-pcie-ep.yaml | 39 +- .../devicetree/bindings/pci/fsl,imx6q-pcie.yaml | 25 +- .../bindings/pci/layerscape-pcie-gen4.txt | 52 --- .../devicetree/bindings/pci/mbvl,gpex40-pcie.yaml | 173 ++++++++ .../bindings/pci/microchip,pcie-host.yaml | 2 + .../devicetree/bindings/pci/mobiveil-pcie.txt | 72 ---- .../devicetree/bindings/pci/qcom,pcie-sm8550.yaml | 9 +- .../devicetree/bindings/pci/qcom,pcie.yaml | 4 + .../devicetree/bindings/pci/xilinx-versal-cpm.yaml | 1 + MAINTAINERS | 5 +- arch/sparc/kernel/pci_common.c | 2 +- arch/x86/pci/fixup.c | 30 ++ drivers/ata/ahci.c | 2 +- drivers/ata/ata_piix.c | 2 +- drivers/ata/pata_rdc.c | 2 +- drivers/ata/sata_sil24.c | 2 +- drivers/ata/sata_sis.c | 2 +- drivers/ata/sata_uli.c | 2 +- drivers/ata/sata_vsc.c | 2 +- drivers/clk/clk-en7523.c | 1 - drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 4 +- drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 2 +- drivers/misc/pci_endpoint_test.c | 354 ++++++++++------ drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 2 +- drivers/of/address.c | 2 + drivers/pci/ats.c | 2 +- drivers/pci/controller/dwc/pci-dra7xx.c | 27 +- drivers/pci/controller/dwc/pci-imx6.c | 449 +++++++++++++++------ drivers/pci/controller/dwc/pci-layerscape.c | 10 +- drivers/pci/controller/dwc/pcie-artpec6.c | 13 + drivers/pci/controller/dwc/pcie-designware-ep.c | 54 ++- drivers/pci/controller/dwc/pcie-designware-host.c | 56 ++- drivers/pci/controller/dwc/pcie-designware.c | 7 +- drivers/pci/controller/dwc/pcie-designware.h | 19 +- drivers/pci/controller/dwc/pcie-dw-rockchip.c | 69 +++- drivers/pci/controller/dwc/pcie-qcom.c | 7 +- drivers/pci/controller/pci-host-common.c | 2 + drivers/pci/controller/pci-mvebu.c | 1 + drivers/pci/controller/pcie-apple.c | 75 +--- drivers/pci/controller/pcie-mediatek-gen3.c | 115 ++++-- drivers/pci/controller/pcie-rcar-ep.c | 2 +- drivers/pci/controller/pcie-rockchip-ep.c | 5 + drivers/pci/controller/pcie-rockchip.c | 219 ++-------- drivers/pci/controller/pcie-rockchip.h | 35 +- drivers/pci/controller/pcie-xilinx-cpm.c | 50 ++- drivers/pci/controller/plda/pcie-microchip-host.c | 96 +++++ drivers/pci/controller/plda/pcie-plda-host.c | 17 +- drivers/pci/controller/plda/pcie-plda.h | 6 +- drivers/pci/devres.c | 40 +- drivers/pci/endpoint/functions/pci-epf-test.c | 25 +- drivers/pci/endpoint/pci-epc-core.c | 37 +- drivers/pci/endpoint/pci-epf-core.c | 1 + drivers/pci/hotplug/acpiphp_ibm.c | 6 +- drivers/pci/iov.c | 8 +- drivers/pci/of.c | 22 +- drivers/pci/of_property.c | 4 +- drivers/pci/p2pdma.c | 6 +- drivers/pci/pci-sysfs.c | 150 ++++++- drivers/pci/pci.c | 275 ++++--------- drivers/pci/pci.h | 23 +- drivers/pci/pcie/Makefile | 2 +- drivers/pci/pcie/aer.c | 15 +- drivers/pci/pcie/aspm.c | 35 +- drivers/pci/pcie/dpc.c | 22 +- drivers/pci/pcie/tlp.c | 115 ++++++ drivers/pci/probe.c | 107 +++-- drivers/pci/quirks.c | 18 +- drivers/pci/switch/switchtec.c | 26 ++ drivers/pci/vpd.c | 14 +- drivers/vfio/pci/vfio_pci_config.c | 5 +- include/linux/aer.h | 12 +- include/linux/of_address.h | 1 + include/linux/pci-ecam.h | 4 + include/linux/pci-epf.h | 4 +- include/linux/pci.h | 5 +- include/uapi/linux/pci_regs.h | 16 +- include/uapi/linux/pcitest.h | 1 + tools/pci/Build | 1 - tools/pci/Makefile | 58 --- tools/pci/pcitest.c | 250 ------------ tools/pci/pcitest.sh | 72 ---- tools/testing/selftests/Makefile | 1 + tools/testing/selftests/pci_endpoint/.gitignore | 2 + tools/testing/selftests/pci_endpoint/Makefile | 7 + tools/testing/selftests/pci_endpoint/config | 4 + .../selftests/pci_endpoint/pci_endpoint_test.c | 221 ++++++++++ 89 files changed, 2248 insertions(+), 1670 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pci/layerscape-pcie-gen4.txt create mode 100644 Documentation/devicetree/bindings/pci/mbvl,gpex40-pcie.yaml delete mode 100644 Documentation/devicetree/bindings/pci/mobiveil-pcie.txt create mode 100644 drivers/pci/pcie/tlp.c delete mode 100644 tools/pci/Build delete mode 100644 tools/pci/Makefile delete mode 100644 tools/pci/pcitest.c delete mode 100644 tools/pci/pcitest.sh create mode 100644 tools/testing/selftests/pci_endpoint/.gitignore create mode 100644 tools/testing/selftests/pci_endpoint/Makefile create mode 100644 tools/testing/selftests/pci_endpoint/config create mode 100644 tools/testing/selftests/pci_endpoint/pci_endpoint_test.c .