aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ata/ahci.c3
-rw-r--r--drivers/ata/libata-core.c1
-rw-r--r--drivers/ata/libata-eh.c26
-rw-r--r--drivers/ata/libata-sff.c1
4 files changed, 8 insertions, 23 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index a69bcca4eb1b..3071a2341be3 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1365,7 +1365,6 @@ static int ahci_hardreset(struct ata_link *link, unsigned int *class,
1365 1365
1366 ahci_start_engine(ap); 1366 ahci_start_engine(ap);
1367 1367
1368 *class = ATA_DEV_NONE;
1369 if (online) 1368 if (online)
1370 *class = ahci_dev_classify(ap); 1369 *class = ahci_dev_classify(ap);
1371 1370
@@ -1394,7 +1393,6 @@ static int ahci_vt8251_hardreset(struct ata_link *link, unsigned int *class,
1394 /* vt8251 doesn't clear BSY on signature FIS reception, 1393 /* vt8251 doesn't clear BSY on signature FIS reception,
1395 * request follow-up softreset. 1394 * request follow-up softreset.
1396 */ 1395 */
1397 *class = ATA_DEV_NONE;
1398 return online ? -EAGAIN : rc; 1396 return online ? -EAGAIN : rc;
1399} 1397}
1400 1398
@@ -1439,7 +1437,6 @@ static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class,
1439 if (rc) 1437 if (rc)
1440 ahci_kick_engine(ap, 0); 1438 ahci_kick_engine(ap, 0);
1441 } 1439 }
1442 *class = ATA_DEV_NONE;
1443 return rc; 1440 return rc;
1444} 1441}
1445 1442
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 2da579b46bdd..51876b93c1b7 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3701,7 +3701,6 @@ int sata_std_hardreset(struct ata_link *link, unsigned int *class,
3701 3701
3702 /* do hardreset */ 3702 /* do hardreset */
3703 rc = sata_link_hardreset(link, timing, deadline, &online, NULL); 3703 rc = sata_link_hardreset(link, timing, deadline, &online, NULL);
3704 *class = ATA_DEV_NONE;
3705 return online ? -EAGAIN : rc; 3704 return online ? -EAGAIN : rc;
3706} 3705}
3707 3706
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index d8c4a45dcf26..4ec1397434c0 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2055,20 +2055,10 @@ static int ata_do_reset(struct ata_link *link, ata_reset_fn_t reset,
2055 if (rc) 2055 if (rc)
2056 return rc; 2056 return rc;
2057 2057
2058 /* If any class isn't ATA_DEV_UNKNOWN, consider classification 2058 /* convert all ATA_DEV_UNKNOWN to ATA_DEV_NONE */
2059 * is complete and convert all ATA_DEV_UNKNOWN to
2060 * ATA_DEV_NONE.
2061 */
2062 ata_link_for_each_dev(dev, link) 2059 ata_link_for_each_dev(dev, link)
2063 if (classes[dev->devno] != ATA_DEV_UNKNOWN) 2060 if (classes[dev->devno] == ATA_DEV_UNKNOWN)
2064 break; 2061 classes[dev->devno] = ATA_DEV_NONE;
2065
2066 if (dev) {
2067 ata_link_for_each_dev(dev, link) {
2068 if (classes[dev->devno] == ATA_DEV_UNKNOWN)
2069 classes[dev->devno] = ATA_DEV_NONE;
2070 }
2071 }
2072 2062
2073 return 0; 2063 return 0;
2074} 2064}
@@ -2079,15 +2069,15 @@ static int ata_eh_followup_srst_needed(struct ata_link *link,
2079{ 2069{
2080 if (link->flags & ATA_LFLAG_NO_SRST) 2070 if (link->flags & ATA_LFLAG_NO_SRST)
2081 return 0; 2071 return 0;
2082 if (rc == -EAGAIN) 2072 if (rc == -EAGAIN) {
2083 return 1; 2073 if (classify)
2074 return 1;
2075 rc = 0;
2076 }
2084 if (rc != 0) 2077 if (rc != 0)
2085 return 0; 2078 return 0;
2086 if ((link->ap->flags & ATA_FLAG_PMP) && ata_is_host_link(link)) 2079 if ((link->ap->flags & ATA_FLAG_PMP) && ata_is_host_link(link))
2087 return 1; 2080 return 1;
2088 if (classify && !(link->flags & ATA_LFLAG_ASSUME_CLASS) &&
2089 classes[0] == ATA_DEV_UNKNOWN)
2090 return 1;
2091 return 0; 2081 return 0;
2092} 2082}
2093 2083
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index f464ca1fa261..5be8a6058dac 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -1929,7 +1929,6 @@ int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
1929 1929
1930 rc = sata_link_hardreset(link, timing, deadline, &online, 1930 rc = sata_link_hardreset(link, timing, deadline, &online,
1931 ata_sff_check_ready); 1931 ata_sff_check_ready);
1932 *class = ATA_DEV_NONE;
1933 if (online) 1932 if (online)
1934 *class = ata_sff_dev_classify(link->device, 1, NULL); 1933 *class = ata_sff_dev_classify(link->device, 1, NULL);
1935 1934