Browse Source

[SCSI] ipr: add MSI support

Enable MSI if available/supported.

Signed-off-by: Wayne Boyer <wayneb@linux.vnet.ibm.com>
Acked-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Wayne Boyer 16 years ago
parent
commit
5a9ef25b14
2 changed files with 9 additions and 2 deletions
  1. 7 0
      drivers/scsi/ipr.c
  2. 2 2
      drivers/scsi/ipr.h

+ 7 - 0
drivers/scsi/ipr.c

@@ -7147,6 +7147,7 @@ static void ipr_free_all_resources(struct ipr_ioa_cfg *ioa_cfg)
 
 
 	ENTER;
 	ENTER;
 	free_irq(pdev->irq, ioa_cfg);
 	free_irq(pdev->irq, ioa_cfg);
+	pci_disable_msi(pdev);
 	iounmap(ioa_cfg->hdw_dma_regs);
 	iounmap(ioa_cfg->hdw_dma_regs);
 	pci_release_regions(pdev);
 	pci_release_regions(pdev);
 	ipr_free_mem(ioa_cfg);
 	ipr_free_mem(ioa_cfg);
@@ -7432,6 +7433,11 @@ static int __devinit ipr_probe_ioa(struct pci_dev *pdev,
 		goto out;
 		goto out;
 	}
 	}
 
 
+	if (!(rc = pci_enable_msi(pdev)))
+		dev_info(&pdev->dev, "MSI enabled\n");
+	else if (ipr_debug)
+		dev_info(&pdev->dev, "Cannot enable MSI\n");
+
 	dev_info(&pdev->dev, "Found IOA with IRQ: %d\n", pdev->irq);
 	dev_info(&pdev->dev, "Found IOA with IRQ: %d\n", pdev->irq);
 
 
 	host = scsi_host_alloc(&driver_template, sizeof(*ioa_cfg));
 	host = scsi_host_alloc(&driver_template, sizeof(*ioa_cfg));
@@ -7574,6 +7580,7 @@ out_release_regions:
 out_scsi_host_put:
 out_scsi_host_put:
 	scsi_host_put(host);
 	scsi_host_put(host);
 out_disable:
 out_disable:
+	pci_disable_msi(pdev);
 	pci_disable_device(pdev);
 	pci_disable_device(pdev);
 	goto out;
 	goto out;
 }
 }

+ 2 - 2
drivers/scsi/ipr.h

@@ -37,8 +37,8 @@
 /*
 /*
  * Literals
  * Literals
  */
  */
-#define IPR_DRIVER_VERSION "2.4.1"
-#define IPR_DRIVER_DATE "(April 24, 2007)"
+#define IPR_DRIVER_VERSION "2.4.2"
+#define IPR_DRIVER_DATE "(January 21, 2009)"
 
 
 /*
 /*
  * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding
  * IPR_MAX_CMD_PER_LUN: This defines the maximum number of outstanding