From f0cd0196a93f2c83d89d1b8767fe79f0c357700d Mon Sep 17 00:00:00 2001 From: Mike Miller Date: Wed, 6 Dec 2006 20:35:04 -0800 Subject: [PATCH] --- yaml --- r: 42747 b: refs/heads/master c: f92e2f5f889803306e50c06e17ee330403e91b8d h: refs/heads/master i: 42745: 412d998ba7b76ed975bb15323e2f6bdb4936f986 42743: 7a3db4b500558c599154d5407aa3c80e28d18af6 v: v3 --- [refs] | 2 +- trunk/drivers/block/cciss.c | 11 +++++++++++ trunk/drivers/block/cciss_cmd.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index dc14389f5bfe..5ac183c4c980 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: de9239167158c0210c5b9a709d67cea1b6f8ae56 +refs/heads/master: f92e2f5f889803306e50c06e17ee330403e91b8d diff --git a/trunk/drivers/block/cciss.c b/trunk/drivers/block/cciss.c index 4899ab27f781..a17223c43aeb 100644 --- a/trunk/drivers/block/cciss.c +++ b/trunk/drivers/block/cciss.c @@ -3003,6 +3003,17 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev) } #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 --git a/trunk/drivers/block/cciss_cmd.h b/trunk/drivers/block/cciss_cmd.h index 4af7c4c0c7af..b2147cca5acd 100644 --- a/trunk/drivers/block/cciss_cmd.h +++ b/trunk/drivers/block/cciss_cmd.h @@ -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