• Y
    PCI: Don't restrict MPS for slots below Root Ports · d4aa68f6
    Yijing Wang 提交于
    When booting with "pci=pcie_bus_safe", we previously limited the
    fabric MPS to 128 when we found:
    
      (1) A hotplug-capable Downstream Port ("dev->is_hotplug_bridge &&
          pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT"), or
    
      (2) A hotplug-capable Root Port with a slot that was either empty or
          contained a multi-function device ("dev->is_hotplug_bridge &&
          !list_is_singular(&dev->bus->devices)")
    
    Part (1) is valid, but part (2) is not.
    
    After a hot-add in the slot below a Root Port, we can reconfigure all
    MPS values in the fabric below the Root Port because the new device is
    the only thing below the Root Port and there are no active drivers.
    Therefore, there's no reason to limit the MPS for Root Ports, no
    matter what's in the slot.
    
    Test info:
    
        -+-[0000:40]-+-07.0-[0000:46]--+-00.0  Intel 82576 NIC
                                       \-00.1  Intel 82576 NIC
    
        0000:40:07.0 Root Port bridge to [bus 46] (MPS supported=256)
        0000:46:00.0 Endpoint                     (MPS supported=512)
        0000:46:00.1 Endpoint                     (MPS supported=512)
    
        # echo 0 > /sys/bus/pci/slots/7/power
        # echo 1 > /sys/bus/pci/slots/7/power
        pcieport 0000:40:07.0: PCI-E Max Payload Size set to 256/ 256 (was 256)
        pci 0000:46:00.0:      PCI-E Max Payload Size set to 256/ 512 (was 128)
        pci 0000:46:00.1:      PCI-E Max Payload Size set to 256/ 512 (was 128)
    
    Before this change, we set MPS to 128 for the Root Port and both NICs
    because the slot contained a multi-function device and
    
        dev->is_hotplug_bridge && !list_is_singular(&dev->bus->devices)
    
    was true.  After this change, we set it to 256.
    
    [bhelgaas: changelog, comments, split out upstream bridge check]
    Signed-off-by: NYijing Wang <wangyijing@huawei.com>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    Cc: Jon Mason <jdmason@kudzu.us>
    d4aa68f6
probe.c 50.9 KB