diff options
author | Jeff Garzik <jeff@garzik.org> | 2008-03-24 22:40:40 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-03-24 22:40:40 -0400 |
commit | 4cde32fc4b32e96a99063af3183acdfd54c563f0 (patch) | |
tree | 1aaf39e056f1f9470fae9e8e9bc84ee603afca64 | |
parent | c07a9c4995827a4f4bcdbd07cec40ec87467f308 (diff) |
[libata] ahci: SB600 workaround is suspect... play it safe for now
At least one report claims that a878539ef994787c447a98c2e3ba0fe3dad984ec
failed to solve lockups, whereas the old limit-to-32-bit trick worked.
Restore the 32-bit limit, but also leave the 255-sector limit in place,
because we know that's needed as well.
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r-- | drivers/ata/ahci.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 17ee6ed985d..b1eb4e24c86 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -433,6 +433,7 @@ static const struct ata_port_info ahci_port_info[] = { /* board_ahci_sb600 */ { AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL | + AHCI_HFLAG_32BIT_ONLY | AHCI_HFLAG_SECT255 | AHCI_HFLAG_NO_PMP), .flags = AHCI_FLAG_COMMON, .link_flags = AHCI_LFLAG_COMMON, @@ -1217,8 +1218,11 @@ static void ahci_dev_config(struct ata_device *dev) { struct ahci_host_priv *hpriv = dev->link->ap->host->private_data; - if (hpriv->flags & AHCI_HFLAG_SECT255) + if (hpriv->flags & AHCI_HFLAG_SECT255) { dev->max_sectors = 255; + ata_dev_printk(dev, KERN_INFO, + "SB600 AHCI: limiting to 255 sectors per cmd\n"); + } } static unsigned int ahci_dev_classify(struct ata_port *ap) |