diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-09 19:18:19 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-09 19:18:19 -0500 |
commit | b481b4ecf5205f8e73e8f618085dbe3e070e9e31 (patch) | |
tree | 08b008dca74ff9cd2a3eaa0d777c2249565f6365 | |
parent | 9ac95f2f90e022c16d293d7978faddf7e779a1a9 (diff) | |
parent | 9caafa6c8686e319cf4d5f3757b3972c6c522b7c (diff) |
Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
-rw-r--r-- | drivers/scsi/sata_mv.c | 11 | ||||
-rw-r--r-- | drivers/scsi/sata_sil.c | 10 |
2 files changed, 18 insertions, 3 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 | */ | ||
515 | static 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"); | |||
2246 | MODULE_DEVICE_TABLE(pci, mv_pci_tbl); | 2252 | MODULE_DEVICE_TABLE(pci, mv_pci_tbl); |
2247 | MODULE_VERSION(DRV_VERSION); | 2253 | MODULE_VERSION(DRV_VERSION); |
2248 | 2254 | ||
2255 | module_param(msi, int, 0444); | ||
2256 | MODULE_PARM_DESC(msi, "Enable use of PCI MSI (0=off, 1=on)"); | ||
2257 | |||
2249 | module_init(mv_init); | 2258 | module_init(mv_init); |
2250 | module_exit(mv_exit); | 2259 | module_exit(mv_exit); |
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c index b017f85e6d6a..17f74d3c10e7 100644 --- a/drivers/scsi/sata_sil.c +++ b/drivers/scsi/sata_sil.c | |||
@@ -231,6 +231,10 @@ MODULE_LICENSE("GPL"); | |||
231 | MODULE_DEVICE_TABLE(pci, sil_pci_tbl); | 231 | MODULE_DEVICE_TABLE(pci, sil_pci_tbl); |
232 | MODULE_VERSION(DRV_VERSION); | 232 | MODULE_VERSION(DRV_VERSION); |
233 | 233 | ||
234 | static int slow_down = 0; | ||
235 | module_param(slow_down, int, 0444); | ||
236 | MODULE_PARM_DESC(slow_down, "Sledgehammer used to work around random problems, by limiting commands to 15 sectors (0=off, 1=on)"); | ||
237 | |||
234 | 238 | ||
235 | static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) | 239 | static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) |
236 | { | 240 | { |
@@ -354,8 +358,10 @@ static void sil_dev_config(struct ata_port *ap, struct ata_device *dev) | |||
354 | } | 358 | } |
355 | 359 | ||
356 | /* limit requests to 15 sectors */ | 360 | /* limit requests to 15 sectors */ |
357 | if ((ap->flags & SIL_FLAG_MOD15WRITE) && (quirks & SIL_QUIRK_MOD15WRITE)) { | 361 | if (slow_down || |
358 | printk(KERN_INFO "ata%u(%u): applying Seagate errata fix\n", | 362 | ((ap->flags & SIL_FLAG_MOD15WRITE) && |
363 | (quirks & SIL_QUIRK_MOD15WRITE))) { | ||
364 | printk(KERN_INFO "ata%u(%u): applying Seagate errata fix (mod15write workaround)\n", | ||
359 | ap->id, dev->devno); | 365 | ap->id, dev->devno); |
360 | ap->host->max_sectors = 15; | 366 | ap->host->max_sectors = 15; |
361 | ap->host->hostt->max_sectors = 15; | 367 | ap->host->hostt->max_sectors = 15; |