]> Git Repo - linux.git/commit
PCI: Set MPS to match upstream bridge
authorKeith Busch <[email protected]>
Mon, 24 Aug 2015 13:48:16 +0000 (08:48 -0500)
committerBjorn Helgaas <[email protected]>
Mon, 24 Aug 2015 13:48:16 +0000 (08:48 -0500)
commit27d868b5e6cfaee4fec66b388e4085ff94050fa7
tree9df429169a5671c49c70b0ac34c8ba95fb1e21b7
parent9dae3a97297f71e884ed8e7664955bcacb86f010
PCI: Set MPS to match upstream bridge

Firmware typically configures the PCIe fabric with a consistent Max Payload
Size setting based on the devices present at boot.  A hot-added device
typically has the power-on default MPS setting (128 bytes), which may not
match the fabric.

The previous Linux default, in the absence of any "pci=pcie_bus_*" options,
was PCIE_BUS_TUNE_OFF, in which we never touch MPS, even for hot-added
devices.

Add a new default setting, PCIE_BUS_DEFAULT, in which we make sure every
device's MPS setting matches the upstream bridge.  This makes it more
likely that a hot-added device will work in a system with optimized MPS
configuration.

Note that if we hot-add a device that only supports 128-byte MPS, it still
likely won't work because we don't reconfigure the rest of the fabric.
Booting with "pci=pcie_bus_peer2peer" is a workaround for this because it
sets MPS to 128 for everything.

[bhelgaas: changelog, new default, rework for pci_configure_device() path]
Tested-by: Keith Busch <[email protected]>
Tested-by: Jordan Hargrave <[email protected]>
Signed-off-by: Keith Busch <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
Acked-by: Yinghai Lu <[email protected]>
drivers/pci/pci.c
drivers/pci/probe.c
drivers/pci/quirks.c
include/linux/pci.h
This page took 0.061925 seconds and 4 git commands to generate.