aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/cciss.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-17 12:08:13 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-17 12:08:13 -0400
commitb6257a9036f06878a0f02354d5a07f155e1cfee0 (patch)
treec0e12e3568199b748ebc7c1f9cf4005ae5da5f36 /drivers/block/cciss.c
parentc548f08a4f7b89b93c805e0c4024b8302afa7121 (diff)
parentf5c0dde4c66421a3a2d7d6fa604a712c9b0744e5 (diff)
Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block: [SCSI] Remove full sg table memset() [SCSI] ide-scsi: remove usage of sg_last() Fix loop terminating conditions in fill_sg(). [BLOCK] Clear sg entry before filling in blk_rq_map_sg() IA64: iommu uses sg_next with an invalid sg element cciss: disable DMA refetch on Smart Array P600 swiotlb: fix map_sg failure handling SPARC64: fix iommu sg chaining [SCSI] ide-scsi: use scsi_sg_count() instead of ->use_sg
Diffstat (limited to 'drivers/block/cciss.c')
-rw-r--r--drivers/block/cciss.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index ca56a0e5cd5e..7c2cfde08f18 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -3076,15 +3076,20 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
3076 } 3076 }
3077#endif 3077#endif
3078 3078
3079 /* Disabling DMA prefetch for the P600 3079 /* Disabling DMA prefetch and refetch for the P600.
3080 * An ASIC bug may result in a prefetch beyond 3080 * An ASIC bug may result in accesses to invalid memory addresses.
3081 * physical memory. 3081 * We've disabled prefetch for some time now. Testing with XEN
3082 * kernels revealed a bug in the refetch if dom0 resides on a P600.
3082 */ 3083 */
3083 if(board_id == 0x3225103C) { 3084 if(board_id == 0x3225103C) {
3084 __u32 dma_prefetch; 3085 __u32 dma_prefetch;
3086 __u32 dma_refetch;
3085 dma_prefetch = readl(c->vaddr + I2O_DMA1_CFG); 3087 dma_prefetch = readl(c->vaddr + I2O_DMA1_CFG);
3086 dma_prefetch |= 0x8000; 3088 dma_prefetch |= 0x8000;
3087 writel(dma_prefetch, c->vaddr + I2O_DMA1_CFG); 3089 writel(dma_prefetch, c->vaddr + I2O_DMA1_CFG);
3090 pci_read_config_dword(pdev, PCI_COMMAND_PARITY, &dma_refetch);
3091 dma_refetch |= 0x1;
3092 pci_write_config_dword(pdev, PCI_COMMAND_PARITY, dma_refetch);
3088 } 3093 }
3089 3094
3090#ifdef CCISS_DEBUG 3095#ifdef CCISS_DEBUG