From a7a42962b735cef6abb2a157f9a132519773a621 Mon Sep 17 00:00:00 2001 From: "Mike Miller (OS Dev)" Date: Wed, 17 Oct 2007 10:10:04 +0200 Subject: [PATCH] --- yaml --- r: 70901 b: refs/heads/master c: 8bf50f71cbfc7d043f0f135da72b3feefeaa0eb8 h: refs/heads/master i: 70899: 6eaac88c55b21aad8252bdf2e3a847fafef04355 v: v3 --- [refs] | 2 +- trunk/drivers/block/cciss.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 906996a99842..85377c7067fa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9e91fdb32d449a6b57f8236a793ae2f3df79b4d8 +refs/heads/master: 8bf50f71cbfc7d043f0f135da72b3feefeaa0eb8 diff --git a/trunk/drivers/block/cciss.c b/trunk/drivers/block/cciss.c index 3fb7e8bc436d..e330c26c5ad9 100644 --- a/trunk/drivers/block/cciss.c +++ b/trunk/drivers/block/cciss.c @@ -3035,15 +3035,20 @@ 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. + /* Disabling DMA prefetch and refetch for the P600. + * An ASIC bug may result in accesses to invalid memory addresses. + * We've disabled prefetch for some time now. Testing with XEN + * kernels revealed a bug in the refetch if dom0 resides on a P600. */ if(board_id == 0x3225103C) { __u32 dma_prefetch; + __u32 dma_refetch; dma_prefetch = readl(c->vaddr + I2O_DMA1_CFG); dma_prefetch |= 0x8000; writel(dma_prefetch, c->vaddr + I2O_DMA1_CFG); + pci_read_config_dword(pdev, PCI_COMMAND_PARITY, &dma_refetch); + dma_refetch |= 0x1; + pci_write_config_dword(pdev, PCI_COMMAND_PARITY, dma_refetch); } #ifdef CCISS_DEBUG