diff options
-rw-r--r-- | drivers/ata/libata-core.c | 1 | ||||
-rw-r--r-- | drivers/ata/sata_sil.c | 11 |
2 files changed, 2 insertions, 10 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index e4dea8623a71..b0d1dc3cdb2d 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -3923,6 +3923,7 @@ void ata_std_postreset(struct ata_link *link, unsigned int *classes) | |||
3923 | /* clear SError */ | 3923 | /* clear SError */ |
3924 | if (sata_scr_read(link, SCR_ERROR, &serror) == 0) | 3924 | if (sata_scr_read(link, SCR_ERROR, &serror) == 0) |
3925 | sata_scr_write(link, SCR_ERROR, serror); | 3925 | sata_scr_write(link, SCR_ERROR, serror); |
3926 | link->eh_info.serror = 0; | ||
3926 | 3927 | ||
3927 | /* is double-select really necessary? */ | 3928 | /* is double-select really necessary? */ |
3928 | if (classes[0] != ATA_DEV_NONE) | 3929 | if (classes[0] != ATA_DEV_NONE) |
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c index 025622b14efb..f5119bf40c24 100644 --- a/drivers/ata/sata_sil.c +++ b/drivers/ata/sata_sil.c | |||
@@ -394,16 +394,7 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2) | |||
394 | * it's PHYRDY CHG. | 394 | * it's PHYRDY CHG. |
395 | */ | 395 | */ |
396 | if (serror & SERR_PHYRDY_CHG) { | 396 | if (serror & SERR_PHYRDY_CHG) { |
397 | /* Trigger hotplug and accumulate SError only | 397 | ap->link.eh_info.serror |= serror; |
398 | * if the port isn't already frozen. | ||
399 | * Otherwise, PHY events during hardreset | ||
400 | * makes controllers with broken SIEN repeat | ||
401 | * probing needlessly. | ||
402 | */ | ||
403 | if (!(ap->pflags & ATA_PFLAG_FROZEN)) { | ||
404 | ata_ehi_hotplugged(&ap->link.eh_info); | ||
405 | ap->link.eh_info.serror |= serror; | ||
406 | } | ||
407 | goto freeze; | 398 | goto freeze; |
408 | } | 399 | } |
409 | 400 | ||