sata_nv: make sure link is brough up online when skipping hardreset
PATCH 1/1 sata_nv: make sure link is brough up online when skipping hardreset
prereset doesn't bring link online if hardreset is about to happen and nv_hardreset() may skip if conditions are not right so softreset may be entered with non-working link status if the system firmware didn't bring it up before entering OS code which can happen during resume. This patch makes nv_hardreset() to bring up the link if it's skipping reset.
This bug was reported by [email protected] in the following bug entry.
http://bugzilla.kernel.org/show_bug.cgi?id=14329
--- drivers/ata/sata_nv.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
drivers/ata/sata_nv.c +15 -3
@@ -1594,9 +1594,21 @@ static int nv_hardreset(struct ata_link *link, unsigned int *class, !ata_dev_enabled(link->device)) sata_link_hardreset(link, sata_deb_timing_hotplug, deadline, NULL, NULL); - else if (!(ehc->i.flags & ATA_EHI_QUIET)) -ata_link_printk (link,KERN_INFO , -"nv: skipping hardreset on occupied port\n" ); + else { +const unsigned long *timing =sata_ehc_deb_timing (ehc); +int rc; + +if (!(ehc->i.flags &ATA_EHI_QUIET )) +ata_link_printk (link,KERN_INFO ,"nv: skipping " +"hardreset on occupied port\n" ); + +/* make sure the link is online */ + rc =sata_link_resume (link, timing, deadline); +/* whine about phy resume failure but proceed */ +if (rc && rc != -EOPNOTSUPP ) +ata_link_printk (link,KERN_WARNING ,"failed to resume " +"link (errno=%d)\n" , rc); + }/* device signature acquisition is unreliable */ return -EAGAIN ;
Quoted 9 lines · Tejun Heo
prereset doesn't bring link online if hardreset is about to happen and
nv_hardreset()may skip if conditions are not right so softreset may be entered with non-working link status if the system firmware didn't bring it up before entering OS code which can happen during resume. This patch makesnv_hardreset()to bring up the link if it's skipping reset.This bug was reported by [email protected] in the following bug entry.
Quoted 8 lines
http://bugzilla.kernel.org/show_bug.cgi?id=14329--- drivers/ata/sata_nv.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
applied -- man, what a pain this chip is