PCI: Allow PCI express root ports to find themselves
If the pci_find_pcie_root_port() function is called on a root port itself, return the root port rather than NULL. This effectively reverts commit0e40523287
("PCI: fix oops when try to find Root Port for a PCI device") which added an extra check that would now be redundant. Fixes:a99b646afa
("PCI: Disable PCIe Relaxed Ordering if unsupported") Fixes:c56d4450eb
("PCI: Turn off Request Attributes to avoid Chelsio T5 Completion erratum") Signed-off-by: Thierry Reding <treding@nvidia.com> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Tested-by: Shawn Lin <shawn.lin@rock-chips.com> Tested-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cdbeb633ca
commit
b6f6d56c91
|
@ -514,7 +514,7 @@ EXPORT_SYMBOL(pci_find_resource);
|
|||
*/
|
||||
struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev)
|
||||
{
|
||||
struct pci_dev *bridge, *highest_pcie_bridge = NULL;
|
||||
struct pci_dev *bridge, *highest_pcie_bridge = dev;
|
||||
|
||||
bridge = pci_upstream_bridge(dev);
|
||||
while (bridge && pci_is_pcie(bridge)) {
|
||||
|
@ -522,11 +522,10 @@ struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev)
|
|||
bridge = pci_upstream_bridge(bridge);
|
||||
}
|
||||
|
||||
if (highest_pcie_bridge &&
|
||||
pci_pcie_type(highest_pcie_bridge) == PCI_EXP_TYPE_ROOT_PORT)
|
||||
return highest_pcie_bridge;
|
||||
if (pci_pcie_type(highest_pcie_bridge) != PCI_EXP_TYPE_ROOT_PORT)
|
||||
return NULL;
|
||||
|
||||
return NULL;
|
||||
return highest_pcie_bridge;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_find_pcie_root_port);
|
||||
|
||||
|
|
Loading…
Reference in New Issue