Commit 570f7e331f5f for kernel

commit 570f7e331f5febb30f1384817463c7e42b65ca7d
Merge: b6b019a1d9b9 9324becc398a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sun Aug 23 12:44:10 2026 -0700

    Merge tag 'pci-v7.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci

    Pull PCI updates from Bjorn Helgaas:
     "Resource management:

       - Add hotplug reservation only once (not at each level of the
         hierarchy) so bridge windows don't grow more than necessary (Ilpo
         Järvinen)

      Driver binding:

       - Rework device matching so device ID lifetime only needs to cover
         the probe path since dynamic IDs can be removed at any time (Gary
         Guo)

      Error handling:

       - Update mappings of AER errors to agent & layer and log them for
         each individual error when multiple errors detected (Lukas Wunner)

       - Log Error Source only once, not twice in separate messages (Lukas
         Wunner)

       - Emit TLP Log only for unmasked errors (Lukas Wunner)

       - Support Advisory Non-Fatal Errors (Lukas Wunner)

       - Allow DPC on all Downstream Ports, not just Root Ports, when OS
         controls AER (Darshit Shah)

      ASPM:

       - Program the same ASPM Control values for every function of
         multi-function devices, as recommended by the PCIe spec (Krishna
         Chaitanya Chundru)

       - Avoid L0s for Realtek RTS525A, where it causes an AER interrupt
         storm (Max Lee)

       - Avoid ASPM L0s, L1, and L1 PM Substates based on 'aspm-no-l0s',
         'aspm-no-l1' [1], and 'aspm-no-l1ss' DT properties (Krishna
         Chaitanya Chundru)

      Power management:

       - Allow D3 for native hotplug-capable Root Ports on non-x86 platforms
         (we avoid D3 for these ports on x86 because some old platforms
         didn't validate it) (Manivannan Sadhasivam)

       - Allow portdrv to claim Ports even if they don't support services
         (AER, PME, DPC, hotplug, etc) so it can do power management (Brian
         Norris)

      Power control:

       - Add support for PCIe WAKE# interrupt when described via DT (Krishna
         Chaitanya Chundru)

       - For the TC9563 PCIe switch:

           - Take a reference on the I2C adapter to avoid uninterruptible
             hang when unloading an I2C module while in-use (Johan Hovold)

           - Update DT binding and driver to restrict Tx Amplitude, DFE and
             N_FTS to USP, DSP1 and DSP2 (Manivannan Sadhasivam)

           - Power off only external-facing ports (DSP1, DSP2), leaving USP
             and DSP3 (aka VDSP) powered up (Manivannan Sadhasivam)

           - Move integrated MAC Endpoint out of the list of internal ports
             and configure it separately (Manivannan Sadhasivam)

      Virtualization:

       - Add ACS quirk for Pericom PI7C9X2G608 switches (Tim Harvey)

       - Fix a long-standing bug in the Intel PCH Root Port MPC ACS quirk
         that didn't update the intended INTEL_MPC_REG_IRBNCE bit because it
         used a 16-bit config write when a 32-bit write was intended
         (Mohamad Raizudeen)

      Procfs:

       - Avoid spurious runtime PM wakeup on config space accesses that are
         outside config space and fail before reaching PCI (Krzysztof
         Wilczyński)

       - Warn on user-space writes to kernel-exclusive config space regions,
         as we already do for sysfs (Krzysztof Wilczyński)

       - Check credentials of opener, not reader, for config space reads, as
         we already do for sysfs (Krzysztof Wilczyński)

      Sysfs:

       - In pci_write_legacy_io(), avoid out-of-bounds reads from the user
         buffer and fix incorrect ioport write data (1-byte writes on
         little-endian powerpc, 2- and 4-byte writes on big-endian powerpc)
         (Krzysztof Wilczyński)

       - In pci_read_legacy_io(), fix incorrect ioport read data for 2- and
         4-byte reads on big-endian powerpc (Krzysztof Wilczyński)

       - Fix I/O port accessor argument order in Alpha pci_legacy_write()
         (Krzysztof Wilczyński)

       - Avoid spurious runtime PM wakeup on config space accesses that are
         outside config space and fail before reaching PCI (Krzysztof
         Wilczyński)

       - Return -EINVAL, not -ENODEV, for mmap of I/O BAR that fails because
         the arch doesn't support it, as we do for procfs (Krzysztof
         Wilczyński)

       - Check for LOCKDOWN_PCI_ACCESS for legacy_io and legacy_mem, as we
         do for other config space accessors (Krzysztof Wilczyński)

      Peer-to-peer DMA:

       - Add Nvidia Vera Rubin to list of platforms that support P2PDMA
         (Leon Romanovsky)

      Endpoint framework:

       - Check doorbell SUCCESS bit in pci_endpoint_test to avoid treating
         some failures as successes (Niklas Cassel)

       - Fail doorbell test when the trigger IRQ is missed (Niklas Cassel)

      New native PCIe controller drivers:

       - Add DT binding and driver for NVIDIA Tegra264 (Thierry Reding)

      Native PCIe controllers:

       - Use common wait time definitions for PCIe link monitoring instead
         of defining driver-private duplicates (Thierry Reding)

      Generic host bridge driver:

       - Fix NULL pointer dereference that caused enumeration failures on
         32-bit CAM systems (Steffen Persvold)

      Amlogic Meson PCIe controller driver:

       - Correct the PERST# GPIO state so it remains asserted until power
         and REFCLK become stable to fix enumeration failure (Ronald
         Claveau)

      ASPEED PCIe controller driver:

       - Switch to irq_domain_create_linear() so we can obsolete
         irq_domain_add_linear() (Jiri Slaby)

      Cadence PCIe controller driver:

       - Add MODULE_DEVICE_TABLE to generate module aliases for OF-based
         module autoloading (Pengpeng Hou)

       - Add debugfs 'ltssm_status' file for LGA- and HPA-based Cadence
         controllers (Hans Zhang)

       - Support up to x4 (not x2) lanes for J200 (Takuma Fujiwara)

       - Fix host/endpoint dependencies for cadence-plat driver to fix link
         error when cadence-plat is built-in but the host or endpoint driver
         is modular (Aksh Garg)

      Freescale i.MX6 PCIe controller driver:

       - Add imx6 intr/aer/pme interrupt lines for i.MX95 (Richard Zhu)

       - Remove PERST# checking from pci_host_common_parse_port() so callers
         can decide whether to fall back to legacy DT binding with PERST# in
         the host bridge (Sherry Sun)

       - Fix build issues when PCI_PWRCTRL_GENERIC or PCI_HOST_COMMON is a
         module (Arnd Bergmann)

       - Create pwrctrl devices only once by doing it from imx_pcie_probe()
         instead of imx_pcie_host_init(), which is used during both probe
         and resume (Sherry Sun)

       - Use 'dw_pcie_rp->skip_pwrctrl_off' to avoid powering off devices
         during suspend to preserve wakeup capability (Sherry Sun)

       - Add runtime PM support for i.MX95 to allow dynamic power management
         when the link is idle (Richard Zhu)

      Intel VMD host bridge driver:

       - Support device ID 0x28C1 and assume that BIOS has already
         enumerated the hierarchy below VMD and stored bus range info for OS
         to use (Nirmal Patel)

       - Add support for VMCONFIG BUS_RESTRICT_CFG=3, which makes it
         possible to enumerate downstream devices on Intel Arrow Lake-HX
         systems and probably others (Ali Alaei)

       - Pay attention to _OSC negotiation for VMD hierarchy only when
         running on bare metal, not when running in a VM (Nirmal Patel)

       - Add Nova Lake (NVL) and Dunlow (DNL) Device IDs (Szymon Durawa)

      MediaTek PCIe controller driver:

       - Add support for PCIe controller in EcoNet EN7528 and EN751221 SoCs
         (Caleb James DeLisle)

      MediaTek PCIe Gen3 controller driver:

       - Add mediatek-gen3 'memory-region' for restricted DMA buffer
         (Chen-Yu Tsai)

      NVIDIA Tegra264 PCIe controller driver:

       - Distinguish Tegra264 C0 PCIe controller for internal GPU from C1-C5
         controllers so the unit address matches the first 'reg' entry
         (Thierry Reding)

       - Add Tegra264 Root Port stanzas to prepare for generic WAKE#
         handling (Thierry Reding)

      Qualcomm PCIe controller driver:

       - Add IPQ9650 compatible with global interrupt (Kathiravan
         Thirumoorthy)

       - Add IPQ5210 compatible with IPQ9574 fallback (Varadarajan
         Narayanan)

       - Add DT binding and driver support for Hawi SoC (Matthew Leung)

       - Skip PERST# GPIOs provided by downstream PCIe devices, which should
         be handled by drivers of those devices (Manivannan Sadhasivam)

       - Stop advertising Attention Button Present (no Qcom SoCs support
         Attention Buttons) so pciehp can use Presence Detect Changed events
         (Qiang Yu)

      Renesas R-Car PCIe controller driver:

       - Add rcar-gen4-pci-host optional 'msi-parent' for GIT ITS (Marek
         Vasut)

       - When MSI is enabled but iMSI-RX is not used, configure AXIINTC to
         allow GIT ITS to handle MSI (Marek Vasut)

       - Refactor GIC600 implementation to make it easier to add platforms
         that only support 32-bit addressing (Marek Vasut)

       - Add Renesas R-Car Gen4 S4/V4H/V4M to the list of GIC600
         integrations that only support 32-bit addressing (Marek Vasut)

      Renesas RZ/G3S PCIe controller driver:

       - Add DT binding and driver support for RZ/V2H(P) SoC, which contains
         two PCIe controllers, configured either as a single x4 link or two
         independent x2 link controllers (Lad Prabhakar)

      SpacemiT K1 PCIe controller driver:

       - Add missing MODULE_DEVICE_TABLE() to generate module alias info for
         OF-based module autoloading (Pengpeng Hou)

      StarFive PCIe controller driver:

       - Fix resource leaks on error paths in host_init() (Ali Tariq)

       - Fix runtime PM handling and teardown ordering to avoid register
         access while power or clocks are disabled (Ali Tariq)

       - Check for runtime PM resume failure to avoid register access while
         power or clocks are disabled (Ali Tariq)

      Synopsys DesignWare PCIe controller driver:

       - Add LECARC PMU IDs to the DWC RAS/DES VSEC list so it can take
         advantage of the existing debugfs support for silicon debug, error
         injection, and event counters (Brett Zhou)

       - Factor pcie_valid_speed() and pci_bus_speed2lnkctl2() out of bwctrl
         so they can be shared by the DWC core (Hans Zhang)

       - Flush MSI writes from endpoint before unmapping the iATU, as we
         already do for MSI-X writes (Niklas Cassel)

       - Unmap MSI iATU window before mapping MSI-X window, to avoid a
         subsequent MSI write using a disabled aperture and losing the
         interrupt (Niklas Cassel)

       - Change endpoint .pre_init() and .init() callbacks to return errors
         and handle them (Marek Vasut)

      UltraRISC PCIe controller driver:

       - Add 'core', 'dbi', and 'aux' clocks to DT binding and manage them
         in the driver (Jia Wang)

       - Use module_platform_driver() since this may be built as a module,
         though not removable because IRQs can't be safely disposed (Jia
         Wang)

      MicroSemi Switchtec management driver:

       - Add Microchip PCI1008 device ID and include it in NTB DMA alias
         quirk (Logan Gunthorpe)

      Miscellaneous:

       - Document how to write PCI Host Controller drivers (Manivannan
         Sadhasivam)

       - Fix typos in documentation (D'Orus Tsitera)

       - Use %pe format specifier to print error pointers so we get symbolic
         errname when available (Krzysztof Wilczyński)"

    * tag 'pci-v7.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci: (124 commits)
      PCI: vmd: Add Nova Lake (NVL) and Dunlow (DNL) Device IDs
      PCI: tegra264: Add Tegra264 support
      dt-bindings: PCI: tegra264: Switch to PCIe Root Port bindings
      dt-bindings: PCI: tegra264: Strictly distinguish C0 from C1-C5
      PCI/AER: Support Advisory Non-Fatal Errors
      PCI: Fix 32-bit config write in Intel PCH Root Port MPC ACS quirk
      PCI: dwc: Handle return value from endpoint .pre_init callback
      PCI: dwc: Handle return value from endpoint .init callback
      PCI: dwc: Add PCI ID for LECARC PCIe PMU
      PCI/ASPM: Mask ASPM states based on Devicetree properties
      PCI/ASPM: Disable/restore ASPM on every function for multi-function devices
      Documentation: PCI: Document how to write PCI Host Controller drivers
      PCI/ASPM: Use pcie_capability_clear_and_set_word() for ASPM disable/restore
      PCI: Add support for PCIe WAKE# interrupt
      PCI: Allow D3 for native hotplug-capable Root Ports on non-x86 platforms
      dt-bindings: PCI: Correct white-space style
      PCI/ASPM: Avoid L0s for Realtek RTS525A
      PCI: ultrarisc: Use module_platform_driver()
      PCI: ultrarisc: Get and enable DP1000 PCIe controller clocks
      dt-bindings: PCI: ultrarisc: Add required DP1000 PCIe clocks
      ...

diff --cc arch/arm64/Kconfig
index a269f73b7653,b9e17ce475e6..b5a51b0ef944
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@@ -1405,27 -1382,14 +1405,36 @@@ config NVIDIA_CARMEL_CNP_ERRATU

  	  If unsure, say Y.

 +config NVIDIA_OLYMPUS_1027_ERRATUM
 +	bool "NVIDIA Olympus: device store/load ordering erratum"
 +	default y
 +	help
 +	  This option adds an alternative code sequence to work around an
 +	  NVIDIA Olympus core erratum where a Device-nGnR* store can be
 +	  observed by a peripheral after a younger Device-nGnR* load to the
 +	  same peripheral. This breaks the program order that drivers rely
 +	  on for MMIO and can leave a device in an incorrect state.
 +
 +	  The workaround inserts a DMB OSH immediately before raw MMIO loads.
 +	  The erratum cannot occur when a DMB that orders loads appears
 +	  between the store and load, preventing the younger load from being
 +	  observed before the older store.
 +
 +	  The alternatives framework patches in DMB OSH only when an affected
 +	  CPU is detected. Other CPUs execute a NOP in its place. Disabling
 +	  this option leaves the original MMIO read instruction stream
 +	  unchanged.
 +
 +	  If unsure, say Y.
++
+ config RENESAS_ERRATUM_GEN4GICITS1
+ 	bool "Renesas R-Car Gen4: GIC600 can not access physical addresses above 4 GiB"
+ 	default y
+ 	help
+ 	  The Renesas R-Car Gen4 S4/V4H/V4M GIC600 SoC integrations have AXI
+ 	  addressing limited to the first 32-bit of physical address space.
+
+ 	  If unsure, say Y.

  config ROCKCHIP_ERRATUM_3568002
  	bool "Rockchip 3568002: GIC600 can not access physical addresses higher than 4GB"