aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-08-28 22:58:33 -0400
committerJeff Garzik <jeff@garzik.org>2007-08-31 04:21:13 -0400
commit16c55b038033d8f6f7601996dfae44399666d9ab (patch)
tree22fb45fb599455cadc29b0f8ac18dd4695eae8b5 /drivers/ata/libata-core.c
parent7f9992a23190418592f0810900e4f91546ec41da (diff)
libata: implement BROKEN_HPA horkage and apply it to affected drives
Some drives choke on READ_NATIVE_MAX_ADDRESS[_EXT]. Implement ATA_HORKAGE_BROKEN_HPA and apply it to affected drives. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 9cf46bf8c8d2..a3ee087223de 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1911,8 +1911,9 @@ int ata_dev_configure(struct ata_device *dev)
1911 dev->flags |= ATA_DFLAG_FLUSH_EXT; 1911 dev->flags |= ATA_DFLAG_FLUSH_EXT;
1912 } 1912 }
1913 1913
1914 if (ata_id_hpa_enabled(dev->id)) 1914 if (!(dev->horkage & ATA_HORKAGE_BROKEN_HPA) &&
1915 dev->n_sectors = ata_hpa_resize(dev); 1915 ata_id_hpa_enabled(dev->id))
1916 dev->n_sectors = ata_hpa_resize(dev);
1916 1917
1917 /* config NCQ */ 1918 /* config NCQ */
1918 ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc)); 1919 ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc));
@@ -3795,7 +3796,11 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
3795 { "ST9160821AS", "3.CLF", ATA_HORKAGE_NONCQ, }, 3796 { "ST9160821AS", "3.CLF", ATA_HORKAGE_NONCQ, },
3796 { "SAMSUNG HD401LJ", "ZZ100-15", ATA_HORKAGE_NONCQ, }, 3797 { "SAMSUNG HD401LJ", "ZZ100-15", ATA_HORKAGE_NONCQ, },
3797 3798
3798 /* Devices with NCQ limits */ 3799 /* devices which puke on READ_NATIVE_MAX */
3800 { "HDS724040KLSA80", "KFAOA20N", ATA_HORKAGE_BROKEN_HPA, },
3801 { "WDC WD3200JD-00KLB0", "WD-WCAMR1130137", ATA_HORKAGE_BROKEN_HPA },
3802 { "WDC WD2500JD-00HBB0", "WD-WMAL71490727", ATA_HORKAGE_BROKEN_HPA },
3803 { "MAXTOR 6L080L4", "A93.0500", ATA_HORKAGE_BROKEN_HPA },
3799 3804
3800 /* End Marker */ 3805 /* End Marker */
3801 { } 3806 { }