public inbox for linux-pci@vger.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: linux-pci@vger.kernel.org
Cc: Jim Quinlan <james.quinlan@broadcom.com>,
	Florian Fainelli <florian.fainelli@broadcom.com>,
	Hans Zhang <18255117159@163.com>,
	Niklas Cassel <cassel@kernel.org>,
	bcm-kernel-feedback-list@broadcom.com,
	linux-kernel@vger.kernel.org, Bjorn Helgaas <bhelgaas@google.com>
Subject: Re: [PATCH v1] PCI: Remove MPS/MRRS Kconfig settings
Date: Fri, 3 Apr 2026 17:11:44 -0500	[thread overview]
Message-ID: <20260403221144.GA429611@bhelgaas> (raw)
In-Reply-To: <20260326221311.1356180-1-bhelgaas@google.com>

On Thu, Mar 26, 2026 at 05:13:11PM -0500, Bjorn Helgaas wrote:
> This reverts b0e85c3c8554 ("PCI: Add Kconfig options for MPS/MRRS
> strategy"), which allowed build-time selection of the "off", "default",
> "safe", "performance", or "peer2peer" strategies for MPS and MRRS
> configuration.  These strategies can be selected at boot-time using the
> "pci=pcie_bus_tune_*" kernel parameters.
> 
> Per the discussion mentioned below, these Kconfig options were added to
> work around a hardware defect in a WiFi device used in a cable modem.  The
> defect occurred only when the device was configured with MPS=128, and
> Kconfig was a way to avoid that setting.  It was easier for the modem
> vendor to use Kconfig and update the kernel image than to change the kernel
> parameters.
> 
> Neither Kconfig nor kernel parameters are a complete solution because the
> WiFi device may be used in other systems where it may be configured with
> MPS=128 and be susceptible to the defect.
> 
> Remove the Kconfig settings to simplify the MPS code.  If we can identify
> the WiFi device in question, we may be able to make a generic quirk to
> avoid the problem on all system.
> 
> This is not a fix and should not be backported to previous kernels.
> 
> Link: https://lore.kernel.org/all/CA+-6iNzd0RJO0L021qz8CKrSviSst6QehY-QtJxz_-EVY0Hj0Q@mail.gmail.com
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

I applied this on pci/misc for v7.1.

> ---
>  drivers/pci/Kconfig | 62 ---------------------------------------------
>  drivers/pci/pci.c   | 10 --------
>  2 files changed, 72 deletions(-)
> 
> diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
> index e3f848ffb52a..f1330d219763 100644
> --- a/drivers/pci/Kconfig
> +++ b/drivers/pci/Kconfig
> @@ -252,68 +252,6 @@ config PCI_DYNAMIC_OF_NODES
>  	  Once this option is selected, the device tree nodes will be generated
>  	  for all PCI bridges.
>  
> -choice
> -	prompt "PCI Express hierarchy optimization setting"
> -	default PCIE_BUS_DEFAULT
> -	depends on PCI && EXPERT
> -	help
> -	  MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
> -	  device parameters that affect performance and the ability to
> -	  support hotplug and peer-to-peer DMA.
> -
> -	  The following choices set the MPS and MRRS optimization strategy
> -	  at compile-time.  The choices are the same as those offered for
> -	  the kernel command-line parameter 'pci', i.e.,
> -	  'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
> -	  'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
> -
> -	  This is a compile-time setting and can be overridden by the above
> -	  command-line parameters.  If unsure, choose PCIE_BUS_DEFAULT.
> -
> -config PCIE_BUS_TUNE_OFF
> -	bool "Tune Off"
> -	depends on PCI
> -	help
> -	  Use the BIOS defaults; don't touch MPS at all.  This is the same
> -	  as booting with 'pci=pcie_bus_tune_off'.
> -
> -config PCIE_BUS_DEFAULT
> -	bool "Default"
> -	depends on PCI
> -	help
> -	  Default choice; ensure that the MPS matches upstream bridge.
> -
> -config PCIE_BUS_SAFE
> -	bool "Safe"
> -	depends on PCI
> -	help
> -	  Use largest MPS that boot-time devices support.  If you have a
> -	  closed system with no possibility of adding new devices, this
> -	  will use the largest MPS that's supported by all devices.  This
> -	  is the same as booting with 'pci=pcie_bus_safe'.
> -
> -config PCIE_BUS_PERFORMANCE
> -	bool "Performance"
> -	depends on PCI
> -	help
> -	  Use MPS and MRRS for best performance.  Ensure that a given
> -	  device's MPS is no larger than its parent MPS, which allows us to
> -	  keep all switches/bridges to the max MPS supported by their
> -	  parent.  This is the same as booting with 'pci=pcie_bus_perf'.
> -
> -config PCIE_BUS_PEER2PEER
> -	bool "Peer2peer"
> -	depends on PCI
> -	help
> -	  Set MPS = 128 for all devices.  MPS configuration effected by the
> -	  other options could cause the MPS on one root port to be
> -	  different than that of the MPS on another, which may cause
> -	  hot-added devices or peer-to-peer DMA to fail.  Set MPS to the
> -	  smallest possible value (128B) system-wide to avoid these issues.
> -	  This is the same as booting with 'pci=pcie_bus_peer2peer'.
> -
> -endchoice
> -
>  config VGA_ARB
>  	bool "VGA Arbitration" if EXPERT
>  	default y
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 8479c2e1f74f..274c6685344e 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -120,17 +120,7 @@ unsigned long pci_hotplug_bus_size = DEFAULT_HOTPLUG_BUS_SIZE;
>  
>  
>  /* PCIe MPS/MRRS strategy; can be overridden by kernel command-line param */
> -#ifdef CONFIG_PCIE_BUS_TUNE_OFF
> -enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_TUNE_OFF;
> -#elif defined CONFIG_PCIE_BUS_SAFE
> -enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_SAFE;
> -#elif defined CONFIG_PCIE_BUS_PERFORMANCE
> -enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_PERFORMANCE;
> -#elif defined CONFIG_PCIE_BUS_PEER2PEER
> -enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_PEER2PEER;
> -#else
>  enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_DEFAULT;
> -#endif
>  
>  /*
>   * The default CLS is used if arch didn't set CLS explicitly and not
> -- 
> 2.51.0
> 

      reply	other threads:[~2026-04-03 22:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-26 22:13 [PATCH v1] PCI: Remove MPS/MRRS Kconfig settings Bjorn Helgaas
2026-04-03 22:11 ` Bjorn Helgaas [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260403221144.GA429611@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=18255117159@163.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=bhelgaas@google.com \
    --cc=cassel@kernel.org \
    --cc=florian.fainelli@broadcom.com \
    --cc=james.quinlan@broadcom.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox