From patchwork Wed May 1 21:34:47 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Langsdorf X-Patchwork-Id: 240818 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id C9B7B2C00C8 for ; Thu, 2 May 2013 07:46:39 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757650Ab3EAVqi (ORCPT ); Wed, 1 May 2013 17:46:38 -0400 Received: from smtp161.dfw.emailsrvr.com ([67.192.241.161]:43544 "EHLO smtp161.dfw.emailsrvr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757562Ab3EAVqi (ORCPT ); Wed, 1 May 2013 17:46:38 -0400 X-Greylist: delayed 636 seconds by postgrey-1.27 at vger.kernel.org; Wed, 01 May 2013 17:46:38 EDT Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp26.relay.dfw1a.emailsrvr.com (SMTP Server) with ESMTP id AC7BD807DB for ; Wed, 1 May 2013 17:36:00 -0400 (EDT) X-Virus-Scanned: OK Received: from smtp73.ord1c.emailsrvr.com (smtp73.ord1c.emailsrvr.com [108.166.43.73]) by smtp26.relay.dfw1a.emailsrvr.com (SMTP Server) with ESMTPS id 95537802DE for ; Wed, 1 May 2013 17:36:00 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp2.relay.ord1c.emailsrvr.com (SMTP Server) with ESMTP id 68BD11E80D9; Wed, 1 May 2013 17:34:49 -0400 (EDT) X-Virus-Scanned: OK Received: by smtp2.relay.ord1c.emailsrvr.com (Authenticated sender: mark.langsdorf-AT-calxeda.com) with ESMTPSA id 113C61E80AE; Wed, 1 May 2013 17:34:49 -0400 (EDT) From: Mark Langsdorf To: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, jgarzik@pobox.com Cc: Mark Langsdorf Subject: [PATCH] ata: increase retry count but shorten duration for Calxeda controller Date: Wed, 1 May 2013 16:34:47 -0500 Message-Id: <1367444087-18336-1-git-send-email-mark.langsdorf@calxeda.com> X-Mailer: git-send-email 1.8.1.2 Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org The Calxeda SATA phy intermittently fails to bring up a link with Gen3 Retrying the phy hard reset can work around the issue, but the drive may fail again. In less than 150 out of 15000 test runs, it took more than 10 tries for the link to be established (but never more than 35). Increase the retry count to guarantee the link is established. Also, the default 2 second time-out on a failed drive is too long in this situation. Shorten it to 500 ms. This was also tested 15000 times on 24 drives and none of them experienced a time out. Signed-off-by: Mark Langsdorf --- drivers/ata/sata_highbank.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/ata/sata_highbank.c b/drivers/ata/sata_highbank.c index 0d7c4c2..536936f 100644 --- a/drivers/ata/sata_highbank.c +++ b/drivers/ata/sata_highbank.c @@ -199,7 +199,7 @@ static int highbank_initialize_phys(struct device *dev, void __iomem *addr) static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class, unsigned long deadline) { - const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); + unsigned long timing[] = { 5, 100, 500}; struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; @@ -207,7 +207,7 @@ static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class, bool online; u32 sstatus; int rc; - int retry = 10; + int retry = 100; ahci_stop_engine(ap);