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