diff options
Diffstat (limited to 'arch/x86_64/kernel')
-rw-r--r-- | arch/x86_64/kernel/pci-dma.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/pci-dma.c b/arch/x86_64/kernel/pci-dma.c index 651ccfb06697..9f80aad3fe2d 100644 --- a/arch/x86_64/kernel/pci-dma.c +++ b/arch/x86_64/kernel/pci-dma.c | |||
@@ -322,5 +322,17 @@ static int __init pci_iommu_init(void) | |||
322 | return 0; | 322 | return 0; |
323 | } | 323 | } |
324 | 324 | ||
325 | #ifdef CONFIG_PCI | ||
326 | /* Many VIA bridges seem to corrupt data for DAC. Disable it here */ | ||
327 | |||
328 | static __devinit void via_no_dac(struct pci_dev *dev) | ||
329 | { | ||
330 | if ((dev->class >> 8) == PCI_CLASS_BRIDGE_PCI && forbid_dac == 0) { | ||
331 | printk(KERN_INFO "PCI: VIA PCI bridge detected. Disabling DAC.\n"); | ||
332 | forbid_dac = 1; | ||
333 | } | ||
334 | } | ||
335 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_ANY_ID, via_no_dac); | ||
336 | #endif | ||
325 | /* Must execute after PCI subsystem */ | 337 | /* Must execute after PCI subsystem */ |
326 | fs_initcall(pci_iommu_init); | 338 | fs_initcall(pci_iommu_init); |