diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index ce803d1..76d779a 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -1975,17 +1975,21 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, */ if (ata_id_major_version(id) < 4 || !ata_id_has_lba(id)) { err_mask = ata_dev_init_params(dev, id[3], id[6]); - if (err_mask) { + if (err_mask == 0) { + /* current CHS translation info (id[53-58]) + * might be changed. reread the identify + * device info. + */ + flags &= ~ATA_READID_POSTRESET; + goto retry; + } else if (err_mask == AC_ERR_DEV) { + ata_dev_printk(dev, KERN_INFO, + "INIT_DEV_PARAMS rejected by device\n"); + } else { rc = -EIO; reason = "INIT_DEV_PARAMS failed"; goto err_out; } - - /* current CHS translation info (id[53-58]) might be - * changed. reread the identify device info. - */ - flags &= ~ATA_READID_POSTRESET; - goto retry; } }