Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
This commit is contained in:
@@ -509,6 +509,12 @@ static const struct mv_hw_ops mv6xxx_ops = {
|
|||||||
.reset_bus = mv_reset_pci_bus,
|
.reset_bus = mv_reset_pci_bus,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* module options
|
||||||
|
*/
|
||||||
|
static int msi; /* Use PCI msi; either zero (off, default) or non-zero */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Functions
|
* Functions
|
||||||
*/
|
*/
|
||||||
@@ -2191,7 +2197,7 @@ static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Enable interrupts */
|
/* Enable interrupts */
|
||||||
if (pci_enable_msi(pdev) == 0) {
|
if (msi && pci_enable_msi(pdev) == 0) {
|
||||||
hpriv->hp_flags |= MV_HP_FLAG_MSI;
|
hpriv->hp_flags |= MV_HP_FLAG_MSI;
|
||||||
} else {
|
} else {
|
||||||
pci_intx(pdev, 1);
|
pci_intx(pdev, 1);
|
||||||
@@ -2246,5 +2252,8 @@ MODULE_LICENSE("GPL");
|
|||||||
MODULE_DEVICE_TABLE(pci, mv_pci_tbl);
|
MODULE_DEVICE_TABLE(pci, mv_pci_tbl);
|
||||||
MODULE_VERSION(DRV_VERSION);
|
MODULE_VERSION(DRV_VERSION);
|
||||||
|
|
||||||
|
module_param(msi, int, 0444);
|
||||||
|
MODULE_PARM_DESC(msi, "Enable use of PCI MSI (0=off, 1=on)");
|
||||||
|
|
||||||
module_init(mv_init);
|
module_init(mv_init);
|
||||||
module_exit(mv_exit);
|
module_exit(mv_exit);
|
||||||
|
@@ -231,6 +231,10 @@ MODULE_LICENSE("GPL");
|
|||||||
MODULE_DEVICE_TABLE(pci, sil_pci_tbl);
|
MODULE_DEVICE_TABLE(pci, sil_pci_tbl);
|
||||||
MODULE_VERSION(DRV_VERSION);
|
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)
|
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 */
|
/* limit requests to 15 sectors */
|
||||||
if ((ap->flags & SIL_FLAG_MOD15WRITE) && (quirks & SIL_QUIRK_MOD15WRITE)) {
|
if (slow_down ||
|
||||||
printk(KERN_INFO "ata%u(%u): applying Seagate errata fix\n",
|
((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->id, dev->devno);
|
||||||
ap->host->max_sectors = 15;
|
ap->host->max_sectors = 15;
|
||||||
ap->host->hostt->max_sectors = 15;
|
ap->host->hostt->max_sectors = 15;
|
||||||
|
Reference in New Issue
Block a user