From patchwork Mon Mar 7 04:30:21 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar Kushwaha X-Patchwork-Id: 85682 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 E58F3B70CE for ; Mon, 7 Mar 2011 15:29:33 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753555Ab1CGE3d (ORCPT ); Sun, 6 Mar 2011 23:29:33 -0500 Received: from va3ehsobe006.messaging.microsoft.com ([216.32.180.16]:49269 "EHLO VA3EHSOBE009.bigfish.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751787Ab1CGE3c (ORCPT ); Sun, 6 Mar 2011 23:29:32 -0500 Received: from mail156-va3-R.bigfish.com (10.7.14.251) by VA3EHSOBE009.bigfish.com (10.7.40.29) with Microsoft SMTP Server id 14.1.225.8; Mon, 7 Mar 2011 04:29:32 +0000 Received: from mail156-va3 (localhost.localdomain [127.0.0.1]) by mail156-va3-R.bigfish.com (Postfix) with ESMTP id 1984CD88239; Mon, 7 Mar 2011 04:29:32 +0000 (UTC) X-SpamScore: -3 X-BigFish: VS-3(zzbb2cKzz1202hzz8275bh8275dhz2dh2a8h668h61h) X-Spam-TCS-SCL: 0:0 X-Forefront-Antispam-Report: KIP:(null); UIP:(null); IPVD:NLI; H:de01egw02.freescale.net; RD:de01egw02.freescale.net; EFVD:NLI Received: from mail156-va3 (localhost.localdomain [127.0.0.1]) by mail156-va3 (MessageSwitch) id 1299472171948790_27584; Mon, 7 Mar 2011 04:29:31 +0000 (UTC) Received: from VA3EHSMHS015.bigfish.com (unknown [10.7.14.235]) by mail156-va3.bigfish.com (Postfix) with ESMTP id D3CAC1B5005C; Mon, 7 Mar 2011 04:29:31 +0000 (UTC) Received: from de01egw02.freescale.net (192.88.165.103) by VA3EHSMHS015.bigfish.com (10.7.99.25) with Microsoft SMTP Server (TLS) id 14.1.225.8; Mon, 7 Mar 2011 04:29:31 +0000 Received: from az33smr01.freescale.net (az33smr01.freescale.net [10.64.34.199]) by de01egw02.freescale.net (8.14.3/8.14.3) with ESMTP id p274TUPp000498; Sun, 6 Mar 2011 21:29:30 -0700 (MST) Received: from localhost.localdomain ([10.232.14.58]) by az33smr01.freescale.net (8.13.1/8.13.0) with ESMTP id p274TO8i015917; Sun, 6 Mar 2011 22:29:25 -0600 (CST) From: Prabhakar Kushwaha To: CC: , , , Prabhakar Kushwaha , Ashish Kalra Subject: [PATCH] driver/FSL SATA:Fix wrong Device Error Register usage Date: Mon, 7 Mar 2011 10:00:21 +0530 Message-ID: <1299472221-3613-1-git-send-email-prabhakar@freescale.com> X-Mailer: git-send-email 1.7.3 MIME-Version: 1.0 X-OriginatorOrg: freescale.com Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org When a single device error is detected, the device under the error is indicated by the error bit set in the DER. There is a one to one mapping between register bit and devices on Port multiplier(PMP) i.e. bit 0 represents PMP device 0 and bit 1 represents PMP device 1 etc. Current implementation treats Device error register value as device number not set of bits representing multiple device on PMP. It is changed to consider bit level. No need to check for each set bit as all command is going to be aborted. Signed-off-by: Prabhakar Kushwaha Signed-off-by: Ashish Kalra --- git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (branch master) This patch is already gone through review of linuxppc-dev mail list. Making CC linuxppc-dev@lists.ozlabs.org drivers/ata/sata_fsl.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index b0214d0..895771c 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c @@ -1040,12 +1040,14 @@ static void sata_fsl_error_intr(struct ata_port *ap) /* find out the offending link and qc */ if (ap->nr_pmp_links) { + unsigned int dev_num; dereg = ioread32(hcr_base + DE); iowrite32(dereg, hcr_base + DE); iowrite32(cereg, hcr_base + CE); - if (dereg < ap->nr_pmp_links) { - link = &ap->pmp_link[dereg]; + dev_num = ffs(dereg)-1; + if (dev_num < ap->nr_pmp_links) { + link = &ap->pmp_link[dev_num]; ehi = &link->eh_info; qc = ata_qc_from_tag(ap, link->active_tag); /*