libata: improve HPA error handling
There's no point in retrying and eventually failing device detection when the device rejects READ_NATIVE_MAX[_EXT]. Disable HPA unlocking if READ_NATIVE_MAX[_EXT] is rejected as done when SET_MAX[_EXT] is rejected. This allows some old drives to work even if they aren't blacklisted. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
1ffc151fcd
commit
dda7aba119
@ -1416,12 +1416,12 @@ static int ata_hpa_resize(struct ata_device *dev)
|
||||
/* read native max address */
|
||||
rc = ata_read_native_max_address(dev, &native_sectors);
|
||||
if (rc) {
|
||||
/* If HPA isn't going to be unlocked, skip HPA
|
||||
* resizing from the next try.
|
||||
/* If device aborted the command or HPA isn't going to
|
||||
* be unlocked, skip HPA resizing.
|
||||
*/
|
||||
if (!ata_ignore_hpa) {
|
||||
if (rc == -EACCES || !ata_ignore_hpa) {
|
||||
ata_dev_printk(dev, KERN_WARNING, "HPA support seems "
|
||||
"broken, will skip HPA handling\n");
|
||||
"broken, skipping HPA handling\n");
|
||||
dev->horkage |= ATA_HORKAGE_BROKEN_HPA;
|
||||
|
||||
/* we can continue if device aborted the command */
|
||||
|
Loading…
Reference in New Issue
Block a user