From patchwork Wed Sep 25 14:46:28 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yxlraid@gmail.com X-Patchwork-Id: 277894 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 6868A2C00D1 for ; Thu, 26 Sep 2013 00:47:33 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755586Ab3IYOrc (ORCPT ); Wed, 25 Sep 2013 10:47:32 -0400 Received: from mail-pd0-f171.google.com ([209.85.192.171]:51902 "EHLO mail-pd0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755550Ab3IYOrb (ORCPT ); Wed, 25 Sep 2013 10:47:31 -0400 Received: by mail-pd0-f171.google.com with SMTP id g10so6164337pdj.2 for ; Wed, 25 Sep 2013 07:47:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=bsIjFq9vdvNQ2+qtDBV3FIb+HGUWWDtC+clNBQc5ztk=; b=05Wjoyf/04UvcleCrpN3tvgaBbSJcEtZMx7vIlcsdHxC724Jxsm4C+ijqqCwFItW7x 47Sr4dbJpB+mNYKPNKOr36dvvbAdKCHOAQ38SIEThSEmYETdB/9hjlhPNHQzyyArdHL6 kLfzhLiCCE8Xmzn1thYVFnTxidBT4adcDctwUuGwRO99V4+q9HfVze+bu4JiWCshb4lY 7zmMEXTkZIe2VT7BRMAYEvsLdBcIvINoTTvgvXI0DfUfgXW9PRfRj1T1ES36bsAcB/QY Myukg7jNgikWMcbpozXJ4JtQO2l2LeA9YW8i0JQ3e33BwDd7EbFVgq1puUORjKITN9jl UlxQ== X-Received: by 10.68.25.170 with SMTP id d10mr34297015pbg.78.1380120451114; Wed, 25 Sep 2013 07:47:31 -0700 (PDT) Received: from localhost.localdomain ([49.221.166.148]) by mx.google.com with ESMTPSA id om2sm48131453pbc.30.1969.12.31.16.00.00 (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 25 Sep 2013 07:47:30 -0700 (PDT) From: Xiangliang Yu To: tj@kernel.org Cc: linux-ide@vger.kernel.org, Xiangliang Yu Subject: [PATCH 1/1] AHCI: disabled FBS before softreset handling. According to chapter 9.3.9 in AHCI spec, controller should disable FBS before softreset. Date: Wed, 25 Sep 2013 22:46:28 +0800 Message-Id: <1380120388-13375-1-git-send-email-yxlraid@gmail.com> X-Mailer: git-send-email 1.7.1 Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Signed-off-by: Xiangliang Yu --- drivers/ata/libahci.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index acfd0f7..8d024a4 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -1267,9 +1267,11 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class, { struct ata_port *ap = link->ap; struct ahci_host_priv *hpriv = ap->host->private_data; + struct ahci_port_priv *pp = ap->private_data; const char *reason = NULL; unsigned long now, msecs; struct ata_taskfile tf; + bool flag = FALSE; int rc; DPRINTK("ENTER\n"); @@ -1279,6 +1281,11 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class, if (rc && rc != -EOPNOTSUPP) ata_link_warn(link, "failed to reset engine (errno=%d)\n", rc); + if (!ata_is_host_link(link) && pp->fbs_enabled) { + ahci_disable_fbs(ap); + flag = TRUE; + } + ata_tf_init(link->device, &tf); /* issue the first D2H Register FIS */ @@ -1319,6 +1326,9 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class, } else *class = ahci_dev_classify(ap); + if (flag) + ahci_enable_fbs(ap); + DPRINTK("EXIT, class=%u\n", *class); return 0;