summaryrefslogtreecommitdiffstats
path: root/include/asm-i386/dma-mapping.h
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2007-06-20 12:23:32 +0200
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-06-20 23:27:25 +0200
commit388c19e176436707eb30a81c7e4129e08769f92b (patch)
tree168017ad573b12c35a39f52f3513c779de3fb8c8 /include/asm-i386/dma-mapping.h
parentx86_64: Fix eventd/timerfd syscalls (diff)
downloadlinux-388c19e176436707eb30a81c7e4129e08769f92b.tar.xz
linux-388c19e176436707eb30a81c7e4129e08769f92b.zip
x86: Disable DAC on VIA bridges
Several reports that VIA bridges don't support DAC and corrupt data. I don't know if it's fixed, but let's just blacklist them all for now. It can be overwritten with iommu=usedac Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to '')
-rw-r--r--include/asm-i386/dma-mapping.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/asm-i386/dma-mapping.h b/include/asm-i386/dma-mapping.h
index 183eebeebbdc..f1d72d177f68 100644
--- a/include/asm-i386/dma-mapping.h
+++ b/include/asm-i386/dma-mapping.h
@@ -123,6 +123,8 @@ dma_mapping_error(dma_addr_t dma_addr)
return 0;
}
+extern int forbid_dac;
+
static inline int
dma_supported(struct device *dev, u64 mask)
{
@@ -134,6 +136,10 @@ dma_supported(struct device *dev, u64 mask)
if(mask < 0x00ffffff)
return 0;
+ /* Work around chipset bugs */
+ if (forbid_dac > 0 && mask > 0xffffffffULL)
+ return 0;
+
return 1;
}