[PATCH 5/12] repost: cciss: disable DMA prefetch on P600

From: Mike Miller (OS Dev)
Date: Mon Nov 06 2006 - 15:20:01 EST


PATCH 5 of 12

This patch unconditionally disables DMA prefetch on the P600 controller. An
ASIC bug may result in prefetching beyond the end of physical memory.
Please consider this for inclusion.

Thanks,
mikem

Signed-off-by: Mike Miller <mike.miller@xxxxxx>

--------------------------------------------------------------------------------

---

drivers/block/cciss.c | 11 +++++++++++
drivers/block/cciss_cmd.h | 1 +
2 files changed, 12 insertions(+)

diff -puN drivers/block/cciss.c~cciss_p600_dma_for_lx2619-rc4 drivers/block/cciss.c
--- linux-2.6/drivers/block/cciss.c~cciss_p600_dma_for_lx2619-rc4 2006-11-06 13:16:01.000000000 -0600
+++ linux-2.6-root/drivers/block/cciss.c 2006-11-06 13:27:24.000000000 -0600
@@ -2997,6 +2997,17 @@ static int cciss_pci_init(ctlr_info_t *c
}
#endif

+ /* Disabling DMA prefetch for the P600
+ * An ASIC bug may result in a prefetch beyond
+ * physical memory.
+ */
+ if(board_id == 0x3225103C) {
+ __u32 dma_prefetch;
+ dma_prefetch = readl(c->vaddr + I2O_DMA1_CFG);
+ dma_prefetch |= 0x8000;
+ writel(dma_prefetch, c->vaddr + I2O_DMA1_CFG);
+ }
+
#ifdef CCISS_DEBUG
printk("Trying to put board into Simple mode\n");
#endif /* CCISS_DEBUG */
diff -puN drivers/block/cciss_cmd.h~cciss_p600_dma_for_lx2619-rc4 drivers/block/cciss_cmd.h
--- linux-2.6/drivers/block/cciss_cmd.h~cciss_p600_dma_for_lx2619-rc4 2006-11-06 13:16:01.000000000 -0600
+++ linux-2.6-root/drivers/block/cciss_cmd.h 2006-11-06 13:26:42.000000000 -0600
@@ -55,6 +55,7 @@
#define I2O_INT_MASK 0x34
#define I2O_IBPOST_Q 0x40
#define I2O_OBPOST_Q 0x44
+#define I2O_DMA1_CFG 0x214

//Configuration Table
#define CFGTBL_ChangeReq 0x00000001l
_
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/