aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>2014-01-17 16:32:37 +1100
committerEli Qiao <taget@linux.vnet.ibm.com>2014-01-22 10:26:25 +0800
commit02c55cb7f958ea030c92bef485b680dbbde1fcd9 (patch)
treefeaa7ba9378a03d9cb55e5ac665d63eb154cd2ba
parenta8893ba19ef7ba8bb39143b02d428f957a5771d4 (diff)
downloadpowerkvm-02c55cb7f958ea030c92bef485b680dbbde1fcd9.tar.gz
pci: add "fundamental reset" quirk
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
-rw-r--r--drivers/pci/quirks.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index df4655c5c1388..6f11db71b0911 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3185,6 +3185,19 @@ reset_complete:
return 0;
}
+static int reset_fundamental(struct pci_dev *dev, int probe)
+{
+ if (probe)
+ return 0;
+
+ pci_set_pcie_reset_state(dev, pcie_hot_reset);
+ msleep(250);
+ pci_set_pcie_reset_state(dev, pcie_deassert_reset);
+ msleep(1800);
+
+ return 0;
+}
+
#define PCI_DEVICE_ID_INTEL_82599_SFP_VF 0x10ed
#define PCI_DEVICE_ID_INTEL_IVB_M_VGA 0x0156
#define PCI_DEVICE_ID_INTEL_IVB_M2_VGA 0x0166
@@ -3198,6 +3211,14 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
reset_ivb_igd },
{ PCI_VENDOR_ID_INTEL, PCI_ANY_ID,
reset_intel_generic_dev },
+
+ { PCI_VENDOR_ID_IBM, PCI_ANY_ID,
+ reset_fundamental },
+ { PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
+ reset_fundamental },
+ { PCI_VENDOR_ID_TI, PCI_ANY_ID,
+ reset_fundamental },
+
{ 0 }
};