PCI core will initialize device MSI/MSI-X capability in
pci_msi_init_pci_dev(). So device driver should use
pci_dev->msi_cap/msix_cap to determine whether the device
support MSI/MSI-X instead of using
pci_find_capability(pci_dev, PCI_CAP_ID_MSI/MSIX).
Access to PCIe device config space again will consume more time.

Signed-off-by: Yijing Wang <wangyij...@huawei.com>
Cc: Mike Marciniszyn <infinip...@intel.com>
Cc: Roland Dreier <rol...@kernel.org>
Cc: Sean Hefty <sean.he...@intel.com>
Cc: Hal Rosenstock <hal.rosenst...@gmail.com>
Cc: linux-rdma@vger.kernel.org
---
 drivers/infiniband/hw/qib/qib_pcie.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/hw/qib/qib_pcie.c 
b/drivers/infiniband/hw/qib/qib_pcie.c
index c574ec7..3f14009 100644
--- a/drivers/infiniband/hw/qib/qib_pcie.c
+++ b/drivers/infiniband/hw/qib/qib_pcie.c
@@ -283,12 +283,12 @@ int qib_pcie_params(struct qib_devdata *dd, u32 minw, u32 
*nent,
                goto bail;
        }
 
-       pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSIX);
+       pos = dd->pcidev->msix_cap;
        if (nent && *nent && pos) {
                qib_msix_setup(dd, pos, nent, entry);
                ret = 0; /* did it, either MSIx or INTx */
        } else {
-               pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI);
+               pos = dd->pcidev->msi_cap;
                if (pos)
                        ret = qib_msi_setup(dd, pos);
                else
@@ -357,7 +357,7 @@ int qib_reinit_intr(struct qib_devdata *dd)
        if (!dd->msi_lo)
                goto bail;
 
-       pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI);
+       pos = dd->pcidev->msi_cap;
        if (!pos) {
                qib_dev_err(dd,
                        "Can't find MSI capability, can't restore MSI 
settings\n");
@@ -426,7 +426,7 @@ void qib_enable_intx(struct pci_dev *pdev)
        if (new != cw)
                pci_write_config_word(pdev, PCI_COMMAND, new);
 
-       pos = pci_find_capability(pdev, PCI_CAP_ID_MSI);
+       pos = pdev->msi_cap;
        if (pos) {
                /* then turn off MSI */
                pci_read_config_word(pdev, pos + PCI_MSI_FLAGS, &cw);
@@ -434,7 +434,7 @@ void qib_enable_intx(struct pci_dev *pdev)
                if (new != cw)
                        pci_write_config_word(pdev, pos + PCI_MSI_FLAGS, new);
        }
-       pos = pci_find_capability(pdev, PCI_CAP_ID_MSIX);
+       pos = pdev->msix_cap;
        if (pos) {
                /* then turn off MSIx */
                pci_read_config_word(pdev, pos + PCI_MSIX_FLAGS, &cw);
-- 
1.7.1


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to