summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorLey Foon Tan2016-06-21 10:53:12 +0200
committerBjorn Helgaas2016-07-22 22:58:02 +0200
commitc622032ebc538cb3869c312ae3ad235a99da84b6 (patch)
tree183273b78f61a74c3ca54be92a0fff176cb2dbcc /drivers/pci
parentPCI: altera: Reorder read/write functions (diff)
downloadkernel-qcow2-linux-c622032ebc538cb3869c312ae3ad235a99da84b6.tar.gz
kernel-qcow2-linux-c622032ebc538cb3869c312ae3ad235a99da84b6.tar.xz
kernel-qcow2-linux-c622032ebc538cb3869c312ae3ad235a99da84b6.zip
PCI: altera: Check link status before retrain link
Check the link status before retraining. If the link is not up, don't bother trying to retrain it. [bhelgaas: split code move to separate patch, changelog] Signed-off-by: Ley Foon Tan <lftan@altera.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/host/pcie-altera.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/host/pcie-altera.c b/drivers/pci/host/pcie-altera.c
index a1e782263dec..b61025ee07de 100644
--- a/drivers/pci/host/pcie-altera.c
+++ b/drivers/pci/host/pcie-altera.c
@@ -100,6 +100,10 @@ static bool altera_pcie_link_is_up(struct altera_pcie *pcie)
static void altera_pcie_retrain(struct pci_dev *dev)
{
u16 linkcap, linkstat;
+ struct altera_pcie *pcie = dev->bus->sysdata;
+
+ if (!altera_pcie_link_is_up(pcie))
+ return;
/*
* Set the retrain bit if the PCIe rootport support > 2.5GB/s, but