aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-02-09 19:18:19 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-09 19:18:19 -0500
commitb481b4ecf5205f8e73e8f618085dbe3e070e9e31 (patch)
tree08b008dca74ff9cd2a3eaa0d777c2249565f6365
parent9ac95f2f90e022c16d293d7978faddf7e779a1a9 (diff)
parent9caafa6c8686e319cf4d5f3757b3972c6c522b7c (diff)
Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
-rw-r--r--drivers/scsi/sata_mv.c11
-rw-r--r--drivers/scsi/sata_sil.c10
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 */
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);
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");
231MODULE_DEVICE_TABLE(pci, sil_pci_tbl); 231MODULE_DEVICE_TABLE(pci, sil_pci_tbl);
232MODULE_VERSION(DRV_VERSION); 232MODULE_VERSION(DRV_VERSION);
233 233
234static int slow_down = 0;
235module_param(slow_down, int, 0444);
236MODULE_PARM_DESC(slow_down, "Sledgehammer used to work around random problems, by limiting commands to 15 sectors (0=off, 1=on)");
237
234 238
235static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) 239static 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;