diff mbox

[RFC] PCI: Change default MPS behavior

Message ID 1481070027-9096-1-git-send-email-jon.mason@broadcom.com
State Changes Requested
Headers show

Commit Message

Jon Mason Dec. 7, 2016, 12:20 a.m. UTC
Not all systems have a BIOS or firmware to preconfigure the PCIE MPS
prior to Linux booting.  Without any firmware to pre-setup the MPS, the
PCIE_BUS_DEFAULT will simply set everything to 0 (128b).  This behavior
causes these systems to have non-optimal MPS values.  To get around this
issue, change the default value of pcie_bus_config to be PCIE_BUS_SAFE.
This configures all systems to use better values for the MPS, at the
expense of any potential HW errata that might not like being changed.

Signed-off-by: Jon Mason <jon.mason@broadcom.com>
---
 drivers/pci/pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Keith Busch Dec. 7, 2016, 7:15 p.m. UTC | #1
On Tue, Dec 06, 2016 at 07:20:27PM -0500, Jon Mason wrote:
> Not all systems have a BIOS or firmware to preconfigure the PCIE MPS
> prior to Linux booting.  Without any firmware to pre-setup the MPS, the
> PCIE_BUS_DEFAULT will simply set everything to 0 (128b).  This behavior
> causes these systems to have non-optimal MPS values.  To get around this
> issue, change the default value of pcie_bus_config to be PCIE_BUS_SAFE.
> This configures all systems to use better values for the MPS, at the
> expense of any potential HW errata that might not like being changed.

Wouldn't it be better to provide the kernel parameter to override the
default on such platforms? The PCIE_BUS_SAFE sets the MPS to the lowest
common denominator below the root port, which may be less optimal than
the default behavior for hot plug.
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index ba34907..94d574e 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -88,7 +88,7 @@  unsigned long pci_hotplug_mem_size = DEFAULT_HOTPLUG_MEM_SIZE;
 #define DEFAULT_HOTPLUG_BUS_SIZE	1
 unsigned long pci_hotplug_bus_size = DEFAULT_HOTPLUG_BUS_SIZE;
 
-enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_DEFAULT;
+enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_SAFE;
 
 /*
  * The default CLS is used if arch didn't set CLS explicitly and not