Patchwork ahci: remove pmp link online check in FBS EH

login
register
mail settings
Submitter Shane Huang
Date June 8, 2013, 8 a.m.
Message ID <1370678416-2133-1-git-send-email-shane.huang@amd.com>
Download mbox | patch
Permalink /patch/249932/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Shane Huang - June 8, 2013, 8 a.m.
ata_link_online() check in ahci_error_intr() is unnecessary, it should
be removed otherwise may lead to lockup with FBS enabled PMP.
http://marc.info/?l=linux-ide&m=137050421603272&w=2

Reported-by: Yu Liu <liuyu.ac@gmail.com>
Signed-off-by: Shane Huang <shane.huang@amd.com>
Cc: stable@vger.kernel.org
---
 drivers/ata/libahci.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Liu Yu - June 9, 2013, 9:59 a.m.
On Sat, Jun 8, 2013 at 4:00 PM, Shane Huang <shane.huang@amd.com> wrote:
>
> ata_link_online() check in ahci_error_intr() is unnecessary, it should
> be removed otherwise may lead to lockup with FBS enabled PMP.
> http://marc.info/?l=linux-ide&m=137050421603272&w=2
>

This works for me.
Thanks Shane and Tejun!

Liu Yu
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tejun Heo - June 9, 2013, 9:59 p.m.
On Sat, Jun 08, 2013 at 04:00:16PM +0800, Shane Huang wrote:
> ata_link_online() check in ahci_error_intr() is unnecessary, it should
> be removed otherwise may lead to lockup with FBS enabled PMP.
> http://marc.info/?l=linux-ide&m=137050421603272&w=2
> 
> Reported-by: Yu Liu <liuyu.ac@gmail.com>
> Signed-off-by: Shane Huang <shane.huang@amd.com>
> Cc: stable@vger.kernel.org

Applied to libata/for-3.10-fixes.  Thanks.

Patch

diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index a70ff15..7b9bdd8 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -1560,8 +1560,7 @@  static void ahci_error_intr(struct ata_port *ap, u32 irq_stat)
 		u32 fbs = readl(port_mmio + PORT_FBS);
 		int pmp = fbs >> PORT_FBS_DWE_OFFSET;
 
-		if ((fbs & PORT_FBS_SDE) && (pmp < ap->nr_pmp_links) &&
-		    ata_link_online(&ap->pmp_link[pmp])) {
+		if ((fbs & PORT_FBS_SDE) && (pmp < ap->nr_pmp_links)) {
 			link = &ap->pmp_link[pmp];
 			fbs_need_dec = true;
 		}