diff options
Diffstat (limited to 'drivers/ata/libata-eh.c')
-rw-r--r-- | drivers/ata/libata-eh.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 477648801a65..755fc68b5374 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -1634,11 +1634,14 @@ static int ata_eh_revalidate_and_attach(struct ata_port *ap, | |||
1634 | DPRINTK("ENTER\n"); | 1634 | DPRINTK("ENTER\n"); |
1635 | 1635 | ||
1636 | for (i = 0; i < ATA_MAX_DEVICES; i++) { | 1636 | for (i = 0; i < ATA_MAX_DEVICES; i++) { |
1637 | unsigned int action; | 1637 | unsigned int action, readid_flags = 0; |
1638 | 1638 | ||
1639 | dev = &ap->device[i]; | 1639 | dev = &ap->device[i]; |
1640 | action = ata_eh_dev_action(dev); | 1640 | action = ata_eh_dev_action(dev); |
1641 | 1641 | ||
1642 | if (ehc->i.flags & ATA_EHI_DID_RESET) | ||
1643 | readid_flags |= ATA_READID_POSTRESET; | ||
1644 | |||
1642 | if (action & ATA_EH_REVALIDATE && ata_dev_ready(dev)) { | 1645 | if (action & ATA_EH_REVALIDATE && ata_dev_ready(dev)) { |
1643 | if (ata_port_offline(ap)) { | 1646 | if (ata_port_offline(ap)) { |
1644 | rc = -EIO; | 1647 | rc = -EIO; |
@@ -1646,8 +1649,7 @@ static int ata_eh_revalidate_and_attach(struct ata_port *ap, | |||
1646 | } | 1649 | } |
1647 | 1650 | ||
1648 | ata_eh_about_to_do(ap, dev, ATA_EH_REVALIDATE); | 1651 | ata_eh_about_to_do(ap, dev, ATA_EH_REVALIDATE); |
1649 | rc = ata_dev_revalidate(dev, | 1652 | rc = ata_dev_revalidate(dev, readid_flags); |
1650 | ehc->i.flags & ATA_EHI_DID_RESET); | ||
1651 | if (rc) | 1653 | if (rc) |
1652 | break; | 1654 | break; |
1653 | 1655 | ||
@@ -1665,7 +1667,8 @@ static int ata_eh_revalidate_and_attach(struct ata_port *ap, | |||
1665 | ata_class_enabled(ehc->classes[dev->devno])) { | 1667 | ata_class_enabled(ehc->classes[dev->devno])) { |
1666 | dev->class = ehc->classes[dev->devno]; | 1668 | dev->class = ehc->classes[dev->devno]; |
1667 | 1669 | ||
1668 | rc = ata_dev_read_id(dev, &dev->class, 1, dev->id); | 1670 | rc = ata_dev_read_id(dev, &dev->class, readid_flags, |
1671 | dev->id); | ||
1669 | if (rc == 0) { | 1672 | if (rc == 0) { |
1670 | ehc->i.flags |= ATA_EHI_PRINTINFO; | 1673 | ehc->i.flags |= ATA_EHI_PRINTINFO; |
1671 | rc = ata_dev_configure(dev); | 1674 | rc = ata_dev_configure(dev); |