aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2006-02-02 16:17:06 -0500
committerJeff Garzik <jgarzik@pobox.com>2006-02-02 16:17:06 -0500
commitddef9bb367b19383df627e388cb4c01c86ddba6c (patch)
tree6cb2b3315ee11037c92971255638b340e69a849f
parentb4103333d7904310d34de18d85e51e3d74f00a3b (diff)
[libata sata_mv] do not enable PCI MSI by default
Several bug reports have come in, noting that disabling CONFIG_PCI_MSI has fixed their problems with this driver. This may be generic system issues, but there is also the probability of unimplemented hardware errata workarounds. Until this ream of bug reports is sorted out, we can get them going in non-MSI interrupt mode. As such, this change adds an 'msi' module option, which defaults to off.
-rw-r--r--drivers/scsi/sata_mv.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c
index cd54244058b5..6fddf17a3b70 100644
--- a/drivers/scsi/sata_mv.c
+++ b/drivers/scsi/sata_mv.c
@@ -510,6 +510,12 @@ static const struct mv_hw_ops mv6xxx_ops = {
510}; 510};
511 511
512/* 512/*
513 * module options
514 */
515static int msi; /* Use PCI msi; either zero (off, default) or non-zero */
516
517
518/*
513 * Functions 519 * Functions
514 */ 520 */
515 521
@@ -2191,7 +2197,7 @@ static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
2191 } 2197 }
2192 2198
2193 /* Enable interrupts */ 2199 /* Enable interrupts */
2194 if (pci_enable_msi(pdev) == 0) { 2200 if (msi && pci_enable_msi(pdev) == 0) {
2195 hpriv->hp_flags |= MV_HP_FLAG_MSI; 2201 hpriv->hp_flags |= MV_HP_FLAG_MSI;
2196 } else { 2202 } else {
2197 pci_intx(pdev, 1); 2203 pci_intx(pdev, 1);
@@ -2246,5 +2252,8 @@ MODULE_LICENSE("GPL");
2246MODULE_DEVICE_TABLE(pci, mv_pci_tbl); 2252MODULE_DEVICE_TABLE(pci, mv_pci_tbl);
2247MODULE_VERSION(DRV_VERSION); 2253MODULE_VERSION(DRV_VERSION);
2248 2254
2255module_param(msi, int, 0444);
2256MODULE_PARM_DESC(msi, "Enable use of PCI MSI (0=off, 1=on)");
2257
2249module_init(mv_init); 2258module_init(mv_init);
2250module_exit(mv_exit); 2259module_exit(mv_exit);