diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2006-02-09 04:30:18 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-02-09 04:30:18 -0500 |
commit | 389984cb75a5d26aa6ee9724c343bbd130cb3eec (patch) | |
tree | 7eac7923ffdcae4539897ff4275c97259be60d0d | |
parent | 8a19ac89edbe9b702c10fd2039b8cb2db4644a5f (diff) | |
parent | 9caafa6c8686e319cf4d5f3757b3972c6c522b7c (diff) |
Merge branch 'upstream-fixes'
-rw-r--r-- | drivers/scsi/sata_sil.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c index b017f85e6d6..17f74d3c10e 100644 --- a/drivers/scsi/sata_sil.c +++ b/drivers/scsi/sata_sil.c @@ -231,6 +231,10 @@ MODULE_LICENSE("GPL"); MODULE_DEVICE_TABLE(pci, sil_pci_tbl); MODULE_VERSION(DRV_VERSION); +static int slow_down = 0; +module_param(slow_down, int, 0444); +MODULE_PARM_DESC(slow_down, "Sledgehammer used to work around random problems, by limiting commands to 15 sectors (0=off, 1=on)"); + static unsigned char sil_get_device_cache_line(struct pci_dev *pdev) { @@ -354,8 +358,10 @@ static void sil_dev_config(struct ata_port *ap, struct ata_device *dev) } /* limit requests to 15 sectors */ - if ((ap->flags & SIL_FLAG_MOD15WRITE) && (quirks & SIL_QUIRK_MOD15WRITE)) { - printk(KERN_INFO "ata%u(%u): applying Seagate errata fix\n", + if (slow_down || + ((ap->flags & SIL_FLAG_MOD15WRITE) && + (quirks & SIL_QUIRK_MOD15WRITE))) { + printk(KERN_INFO "ata%u(%u): applying Seagate errata fix (mod15write workaround)\n", ap->id, dev->devno); ap->host->max_sectors = 15; ap->host->hostt->max_sectors = 15; |