Tomasz Chmielewski wrote:
..
The error I mentioned before - BUG: at drivers/ata/sata_mv.c:1236
mv_qc_issue() - happened on /dev/sda drive.
As it appears, my /dev/sdb drive just dies (has multiple badblocks). It
causes similar errors when I tried to dd if=/dev/ero of=/dev/sdb.
It triggered two bugs:
BUG: at drivers/ata/sata_mv.c:657 mv_start_dma()
Heh.. that one is just the driver being way too clever for itself.
This fix (below) should take care of it.
BUG: at drivers/ata/sata_mv.c:1201 mv_qc_issue()
That one should be harmless, and is likely a side-effect of
not completely resetting the engine & variables after an error.
This whole driver needs a lot of TLC, something I just might
be into doing shortly. Meanwhile:
This patch removes some unhelpful paranoia from sata_mv.c,
now choosing to actually *recover* rather than simply complain.
Signed-off-by: Mark Lord <mlord@xxxxxxxxx>
---
--- linux/drivers/ata/sata_mv.c.orig 2007-04-26 12:02:46.000000000 -0400
+++ linux/drivers/ata/sata_mv.c 2007-05-23 09:18:42.000000000 -0400
@@ -650,11 +650,8 @@
*/
static void mv_start_dma(void __iomem *base, struct mv_port_priv *pp)
{
- if (!(MV_PP_FLAG_EDMA_EN & pp->pp_flags)) {
- writelfl(EDMA_EN, base + EDMA_CMD_OFS);
- pp->pp_flags |= MV_PP_FLAG_EDMA_EN;
- }
- WARN_ON(!(EDMA_EN & readl(base + EDMA_CMD_OFS)));
+ writelfl(EDMA_EN, base + EDMA_CMD_OFS);
+ pp->pp_flags |= MV_PP_FLAG_EDMA_EN;
}
/**
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html