[PATCH v7 0/2] PCI: Configure Root Port MPS during host probing
Ricardo Pardini
ricardo at pardini.net
Tue Dec 30 18:58:33 PST 2025
On 27/11/2025 18:09, Hans Zhang wrote:
> Current PCIe initialization exhibits a key optimization gap: Root Ports
> may operate with non-optimal Maximum Payload Size (MPS) settings. While
> downstream device configuration is handled during bus enumeration, Root
> Port MPS values inherited from firmware or hardware defaults often fail
> to utilize the full capabilities supported by controller hardware. This
> results in suboptimal data transfer efficiency throughout the PCIe
> hierarchy.
>
> This patch series addresses this by:
>
> 1. Core PCI enhancement (Patch 1):
> - Proactively configures Root Port MPS during host controller probing
> - Sets initial MPS to hardware maximum (128 << dev->pcie_mpss)
> - Conditional on PCIe bus tuning being enabled (PCIE_BUS_TUNE_OFF unset)
> and not in PCIE_BUS_PEER2PEER mode (which requires default 128 bytes)
> - Maintains backward compatibility via PCIE_BUS_TUNE_OFF check
> - Preserves standard MPS negotiation during downstream enumeration
>
> 2. Driver cleanup (Patch 2):
> - Removes redundant MPS configuration from Meson PCIe controller driver
> - Functionality is now centralized in PCI core
> - Simplifies driver maintenance long-term
>
> ---
> Changes in v7:
> - Exclude PCIE_BUS_PEER2PEER mode from Root Port MPS configuration
> - Remove redundant check for upstream bridge (Root Ports don't have one)
> - Improve commit message and code comments as per Bjorn.
Hi Hans,
I've tested on an Odroid-HC4 with a SATA SSD (via an ASM1061) by
applying your v7 on v6.19-rc3 + Bjorn's
20251103221930.1831376-1-helgaas at kernel.org ("PCI: meson: Remove
meson_pcie_link_up() timeout, message, speed check" which is required to
get the meson PCIe to work at all since 6.18). With that setup I get:
# hdparm --direct -t /dev/sda
Timing O_DIRECT disk reads: 832 MB in 3.00 seconds = 277.33 MB/sec
I've an identical machine, with a similar disk (even slightly faster, on
paper), running plain 6.12.y and there I get:
# hdparm --direct -t /dev/sda
Timing O_DIRECT disk reads: 764 MB in 3.00 seconds = 254.26 MB/sec
I repeated those a few times, not very scientific, I know; but anyway:
Tested-by: Ricardo Pardini <ricardo at pardini.net> # on Odroid-HC4
I've also feedback from another user running with this series with
success on a different meson PCIe machine, will ask them to TB as well;
they had reported a significant drop in performance since v6.18 without
this.
Thanks,
Ricardo
More information about the linux-amlogic
mailing list