• Myron Stowe's avatar
    PCI: Match Root Port's MPS to endpoint's MPSS as necessary · 9f0e8935
    Myron Stowe authored
    In commit 27d868b5 ("PCI: Set MPS to match upstream bridge"), we made
    sure every device's MPS setting matches its upstream bridge, making it more
    likely that a hot-added device will work in a system with an optimized MPS
    configuration.
    
    Recently I've started encountering systems where the endpoint device's MPSS
    capability is less than its Root Port's current MPS value, thus the
    endpoint is not capable of matching its upstream bridge's MPS setting (see:
    bugzilla via "Link:" below).  This leaves the system vulnerable - the
    upstream Root Port could respond with larger TLPs than the device can
    handle, and the device will consider them to be 'Malformed'.
    
    One could use the "pci=pcie_bus_safe" kernel parameter to work around the
    issue, but that forces a user to supply a kernel parameter to get the
    system to function reliably and may end up limiting MPS settings of other
    unrelated, sub-topologies which could benefit from maintaining their larger
    values.
    
    Augment Keith's approach to include tuning down a Root Port's MPS setting
    when its hot-added endpoint device is not capable of matching it.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200527Signed-off-by: default avatarMyron Stowe <myron.stowe@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Acked-by: default avatarJon Mason <jdmason@kudzu.us>
    Cc: Keith Busch <keith.busch@intel.com>
    Cc: Sinan Kaya <okaya@kernel.org>
    Cc: Dongdong Liu <liudongdong3@huawei.com>
    9f0e8935
probe.c 80.7 KB