From e792673f18b89d9cd00bf666bc26eb5868909da9 Mon Sep 17 00:00:00 2001 From: Dennis Dalessandro Date: Mon, 30 Dec 2013 11:30:06 -0500 Subject: [PATCH] IB/qib: 3.12 backport patches Signed-off-by: Dennis Dalessandro --- ...qib-backport-qib_fs.c-before-2.6.35.patch} | 0 ...ib-backport-3.2-for-pinned_vm-field.patch} | 0 ...ath-backport-qib_fs.c-before-2.6.35.patch} | 0 ...th-backport-3.2-for-pinned_vm-field.patch} | 0 ...qib-backport-3.12-struct-pci-changes.patch | 72 +++++++++++++++++++ ...B-qib-backport-before-idr-style-init.patch | 66 +++++++++++++++++ 6 files changed, 138 insertions(+) rename patches/{0006-IB-qib-backport-qib_fs.c-before-2.6.35.patch => 0013-IB-qib-backport-qib_fs.c-before-2.6.35.patch} (100%) rename patches/{0007-IB-qib-backport-3.2-for-pinned_vm-field.patch => 0014-IB-qib-backport-3.2-for-pinned_vm-field.patch} (100%) rename patches/{0008-IB-ipath-backport-qib_fs.c-before-2.6.35.patch => 0015-IB-ipath-backport-qib_fs.c-before-2.6.35.patch} (100%) rename patches/{0009-IB-ipath-backport-3.2-for-pinned_vm-field.patch => 0016-IB-ipath-backport-3.2-for-pinned_vm-field.patch} (100%) create mode 100644 patches/0017-IB-qib-backport-3.12-struct-pci-changes.patch create mode 100644 patches/0018-IB-qib-backport-before-idr-style-init.patch diff --git a/patches/0006-IB-qib-backport-qib_fs.c-before-2.6.35.patch b/patches/0013-IB-qib-backport-qib_fs.c-before-2.6.35.patch similarity index 100% rename from patches/0006-IB-qib-backport-qib_fs.c-before-2.6.35.patch rename to patches/0013-IB-qib-backport-qib_fs.c-before-2.6.35.patch diff --git a/patches/0007-IB-qib-backport-3.2-for-pinned_vm-field.patch b/patches/0014-IB-qib-backport-3.2-for-pinned_vm-field.patch similarity index 100% rename from patches/0007-IB-qib-backport-3.2-for-pinned_vm-field.patch rename to patches/0014-IB-qib-backport-3.2-for-pinned_vm-field.patch diff --git a/patches/0008-IB-ipath-backport-qib_fs.c-before-2.6.35.patch b/patches/0015-IB-ipath-backport-qib_fs.c-before-2.6.35.patch similarity index 100% rename from patches/0008-IB-ipath-backport-qib_fs.c-before-2.6.35.patch rename to patches/0015-IB-ipath-backport-qib_fs.c-before-2.6.35.patch diff --git a/patches/0009-IB-ipath-backport-3.2-for-pinned_vm-field.patch b/patches/0016-IB-ipath-backport-3.2-for-pinned_vm-field.patch similarity index 100% rename from patches/0009-IB-ipath-backport-3.2-for-pinned_vm-field.patch rename to patches/0016-IB-ipath-backport-3.2-for-pinned_vm-field.patch diff --git a/patches/0017-IB-qib-backport-3.12-struct-pci-changes.patch b/patches/0017-IB-qib-backport-3.12-struct-pci-changes.patch new file mode 100644 index 0000000..13bdf33 --- /dev/null +++ b/patches/0017-IB-qib-backport-3.12-struct-pci-changes.patch @@ -0,0 +1,72 @@ +Deal with struct pci changes. + +From: Dennis Dalessandro + + +--- + drivers/infiniband/hw/qib/qib_pcie.c | 21 +++++++++++++++++++++ + 1 files changed, 21 insertions(+), 0 deletions(-) + +diff --git a/drivers/infiniband/hw/qib/qib_pcie.c b/drivers/infiniband/hw/qib/qib_pcie.c +index 3f14009..340845c 100644 +--- a/drivers/infiniband/hw/qib/qib_pcie.c ++++ b/drivers/infiniband/hw/qib/qib_pcie.c +@@ -283,12 +283,20 @@ int qib_pcie_params(struct qib_devdata *dd, u32 minw, u32 *nent, + goto bail; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) ++ pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSIX); ++#else + pos = dd->pcidev->msix_cap; ++#endif + if (nent && *nent && pos) { + qib_msix_setup(dd, pos, nent, entry); + ret = 0; /* did it, either MSIx or INTx */ + } else { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) ++ pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI); ++#else + pos = dd->pcidev->msi_cap; ++#endif + if (pos) + ret = qib_msi_setup(dd, pos); + else +@@ -357,7 +365,11 @@ int qib_reinit_intr(struct qib_devdata *dd) + if (!dd->msi_lo) + goto bail; + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) ++ pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI); ++#else + pos = dd->pcidev->msi_cap; ++#endif + if (!pos) { + qib_dev_err(dd, + "Can't find MSI capability, can't restore MSI settings\n"); +@@ -425,8 +437,12 @@ void qib_enable_intx(struct pci_dev *pdev) + new = cw & ~PCI_COMMAND_INTX_DISABLE; + if (new != cw) + pci_write_config_word(pdev, PCI_COMMAND, new); ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) + ++ pos = pci_find_capability(pdev, PCI_CAP_ID_MSI); ++#else + pos = pdev->msi_cap; ++#endif + if (pos) { + /* then turn off MSI */ + pci_read_config_word(pdev, pos + PCI_MSI_FLAGS, &cw); +@@ -434,7 +450,12 @@ void qib_enable_intx(struct pci_dev *pdev) + if (new != cw) + pci_write_config_word(pdev, pos + PCI_MSI_FLAGS, new); + } ++ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) ++ pos = pci_find_capability(pdev, PCI_CAP_ID_MSIX); ++#else + pos = pdev->msix_cap; ++#endif + if (pos) { + /* then turn off MSIx */ + pci_read_config_word(pdev, pos + PCI_MSIX_FLAGS, &cw); diff --git a/patches/0018-IB-qib-backport-before-idr-style-init.patch b/patches/0018-IB-qib-backport-before-idr-style-init.patch new file mode 100644 index 0000000..3d422b3 --- /dev/null +++ b/patches/0018-IB-qib-backport-before-idr-style-init.patch @@ -0,0 +1,66 @@ +Work around new idr style + +From: Dennis Dalessandro + + +--- + drivers/infiniband/hw/qib/qib_init.c | 23 +++++++++++++++++++++-- + 1 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/drivers/infiniband/hw/qib/qib_init.c b/drivers/infiniband/hw/qib/qib_init.c +index 24e802f..6dcb460 100644 +--- a/drivers/infiniband/hw/qib/qib_init.c ++++ b/drivers/infiniband/hw/qib/qib_init.c +@@ -1096,6 +1096,12 @@ struct qib_devdata *qib_alloc_devdata(struct pci_dev *pdev, size_t extra) + struct qib_devdata *dd; + int ret; + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) ++ if (!idr_pre_get(&qib_unit_table, GFP_KERNEL)) { ++ dd = ERR_PTR(-ENOMEM); ++ goto bail; ++ } ++#endif + dd = (struct qib_devdata *) ib_alloc_device(sizeof(*dd) + extra); + if (!dd) { + dd = ERR_PTR(-ENOMEM); +@@ -1106,6 +1112,7 @@ struct qib_devdata *qib_alloc_devdata(struct pci_dev *pdev, size_t extra) + qib_dbg_ibdev_init(&dd->verbs_dev); + #endif + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) + idr_preload(GFP_KERNEL); + spin_lock_irqsave(&qib_devs_lock, flags); + +@@ -1114,10 +1121,15 @@ struct qib_devdata *qib_alloc_devdata(struct pci_dev *pdev, size_t extra) + dd->unit = ret; + list_add(&dd->list, &qib_dev_list); + } +- + spin_unlock_irqrestore(&qib_devs_lock, flags); + idr_preload_end(); +- ++#else ++ spin_lock_irqsave(&qib_devs_lock, flags); ++ ret = idr_get_new(&qib_unit_table, dd, &dd->unit); ++ if (ret >= 0) ++ list_add(&dd->list, &qib_dev_list); ++ spin_unlock_irqrestore(&qib_devs_lock, flags); ++#endif + if (ret < 0) { + qib_early_err(&pdev->dev, + "Could not allocate unit ID: error %d\n", -ret); +@@ -1247,6 +1259,13 @@ static int __init qlogic_ib_init(void) + * the PCI subsystem. + */ + idr_init(&qib_unit_table); ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) ++ if (!idr_pre_get(&qib_unit_table, GFP_KERNEL)) { ++ pr_err("idr_pre_get() failed\n"); ++ ret = -ENOMEM; ++ goto bail_dev; ++ } ++#endif + + #ifdef CONFIG_INFINIBAND_QIB_DCA + dca_register_notify(&dca_notifier); -- 2.46.0