Patchwork sata_nv times out for BD-ROM iHOS104-08

login
register
mail settings
Submitter Tejun Heo
Date May 25, 2010, 7:34 p.m.
Message ID <4BFC2642.1050600@kernel.org>
Download mbox | patch
Permalink /patch/53575/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Tejun Heo - May 25, 2010, 7:34 p.m.
Hello,

Alright, I don't have access to mcp51 but tested with mcp55 and could
reproduce similar problem.  It seems nIEN on mcp55 is stuck once set
and iHOS104 doesn't set I on D2H FIS if nIEN is set on command H2D
FIS, which the SATA standard specifically mandates not to do.  So, the
combination of buggy mcp55 ctl handling + buggy iHOS104 nIEN handling
leads to nobody raising interrupt.

The problem is that the problem I'm seeing is not completely identical
to the one you're seeing.  The difference could be coming from
different firmware version on the drives or different controllers.

Anyways, can you please give a shot at the attached patch?

Thanks.

Patch

diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index baa8f0d..69d23c2 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -1669,7 +1669,6 @@  static void nv_mcp55_freeze(struct ata_port *ap)
 	mask = readl(mmio_base + NV_INT_ENABLE_MCP55);
 	mask &= ~(NV_INT_ALL_MCP55 << shift);
 	writel(mask, mmio_base + NV_INT_ENABLE_MCP55);
-	ata_sff_freeze(ap);
 }
 
 static void nv_mcp55_thaw(struct ata_port *ap)
@@ -1683,7 +1682,6 @@  static void nv_mcp55_thaw(struct ata_port *ap)
 	mask = readl(mmio_base + NV_INT_ENABLE_MCP55);
 	mask |= (NV_INT_MASK_MCP55 << shift);
 	writel(mask, mmio_base + NV_INT_ENABLE_MCP55);
-	ata_sff_thaw(ap);
 }
 
 static void nv_adma_error_handler(struct ata_port *ap)