Thread (6 messages) flat view 6 messages, 3 authors, 2014-06-23

Re: [PATCH v1 2/3] ata: Fix the link down in first attempt for the APM X-Gene SoC AHCI SATA host controller driver.

From: Tejun Heo <tj@kernel.org>
Date: 2014-06-23 18:29:29
Also in: linux-arm-kernel, linux-ide, linux-scsi

Hello,

On Mon, Jun 23, 2014 at 03:45:37PM +0530, Suman Tripathi wrote:
quoted hunk ↗ jump to hunk
@@ -234,15 +237,20 @@ static int xgene_ahci_do_hardreset(struct ata_link *link,
 	u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
 	void __iomem *port_mmio = ahci_port_base(ap);
 	struct ata_taskfile tf;
+	int link_down_retry = 0;
 	int rc;
 	u32 val;

-	/* clear D2H reception area to properly wait for D2H FIS */
-	ata_tf_init(link->device, &tf);
-	tf.command = ATA_BUSY;
-	ata_tf_to_fis(&tf, 0, 0, d2h_fis);
-	rc = sata_link_hardreset(link, timing, deadline, online,
+	do {
+		/* clear D2H reception area to properly wait for D2H FIS */
+		ata_tf_init(link->device, &tf);
+		tf.command = ATA_BUSY;
+		ata_tf_to_fis(&tf, 0, 0, d2h_fis);
+		rc = sata_link_hardreset(link, timing, deadline, online,
 				 ahci_check_ready);
+		if (*online)
+			break;
+	} while (link_down_retry++ < MAX_LINK_DOWN_RETRY);
Hmm... so it's retrying w/o extending deadline if the link is reported
to be offline.  This definitely needs comment explaining what's going
on.  Wouldn't it make more sense to change @timing instead rather than
retrying resets?  sata_sil24 already does something similar.  Does,
f.e., using sata_deb_timing_long for @timing make the problem go away?

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help