IB/ipath: Fix IRQ for PCI Express HCAs
authorRoland Dreier <rolandd@cisco.com>
Tue, 12 Dec 2006 19:50:20 +0000 (11:50 -0800)
committerRoland Dreier <rolandd@cisco.com>
Tue, 12 Dec 2006 19:50:20 +0000 (11:50 -0800)
Commit 51f65ebc ("IB/ipath - program intconfig register using new HT
irq hook"), which fixed interrupts for HyperTransport HCAs, broke PCI
Express HCAs, because for those HCAs, the driver uses the value of
pdev->irq before pci_enable_msi() and ends up getting a totally bogus
IRQ number.  Fix this by using the value of pdev->irq after
pci_enable_msi().

Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_iba6120.c

index 397da3483af17dc1a3766208610639ff11fbbd63..ae8bf9950c6d43bad85bcda0863af08468cfb681 100644 (file)
@@ -851,12 +851,12 @@ static int ipath_setup_pe_config(struct ipath_devdata *dd,
        int pos, ret;
 
        dd->ipath_msi_lo = 0;   /* used as a flag during reset processing */
-       dd->ipath_irq = pdev->irq;
        ret = pci_enable_msi(dd->pcidev);
        if (ret)
                ipath_dev_err(dd, "pci_enable_msi failed: %d, "
                              "interrupts may not work\n", ret);
        /* continue even if it fails, we may still be OK... */
+       dd->ipath_irq = pdev->irq;
 
        if ((pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI))) {
                u16 control;