diff options
Diffstat (limited to 'arch/x86_64/kernel/pci-gart.c')
-rw-r--r-- | arch/x86_64/kernel/pci-gart.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c index 2fe23a6c361b..0c3f052ba6ce 100644 --- a/arch/x86_64/kernel/pci-gart.c +++ b/arch/x86_64/kernel/pci-gart.c | |||
@@ -228,11 +228,6 @@ static inline int need_iommu(struct device *dev, unsigned long addr, size_t size | |||
228 | int mmu = high; | 228 | int mmu = high; |
229 | if (force_iommu) | 229 | if (force_iommu) |
230 | mmu = 1; | 230 | mmu = 1; |
231 | if (no_iommu) { | ||
232 | if (high) | ||
233 | panic("PCI-DMA: high address but no IOMMU.\n"); | ||
234 | mmu = 0; | ||
235 | } | ||
236 | return mmu; | 231 | return mmu; |
237 | } | 232 | } |
238 | 233 | ||
@@ -241,11 +236,6 @@ static inline int nonforced_iommu(struct device *dev, unsigned long addr, size_t | |||
241 | u64 mask = *dev->dma_mask; | 236 | u64 mask = *dev->dma_mask; |
242 | int high = addr + size >= mask; | 237 | int high = addr + size >= mask; |
243 | int mmu = high; | 238 | int mmu = high; |
244 | if (no_iommu) { | ||
245 | if (high) | ||
246 | panic("PCI-DMA: high address but no IOMMU.\n"); | ||
247 | mmu = 0; | ||
248 | } | ||
249 | return mmu; | 239 | return mmu; |
250 | } | 240 | } |
251 | 241 | ||
@@ -379,7 +369,7 @@ static int __dma_map_cont(struct scatterlist *sg, int start, int stopat, | |||
379 | SET_LEAK(iommu_page); | 369 | SET_LEAK(iommu_page); |
380 | addr += PAGE_SIZE; | 370 | addr += PAGE_SIZE; |
381 | iommu_page++; | 371 | iommu_page++; |
382 | } | 372 | } |
383 | } | 373 | } |
384 | BUG_ON(iommu_page - iommu_start != pages); | 374 | BUG_ON(iommu_page - iommu_start != pages); |
385 | return 0; | 375 | return 0; |
@@ -634,17 +624,13 @@ static int __init pci_iommu_init(void) | |||
634 | (agp_copy_info(agp_bridge, &info) < 0); | 624 | (agp_copy_info(agp_bridge, &info) < 0); |
635 | #endif | 625 | #endif |
636 | 626 | ||
637 | if (swiotlb) { | 627 | if (swiotlb) |
638 | no_iommu = 1; | ||
639 | return -1; | 628 | return -1; |
640 | } | 629 | |
641 | |||
642 | if (no_iommu || | 630 | if (no_iommu || |
643 | (!force_iommu && end_pfn <= MAX_DMA32_PFN) || | 631 | (!force_iommu && end_pfn <= MAX_DMA32_PFN) || |
644 | !iommu_aperture || | 632 | !iommu_aperture || |
645 | (no_agp && init_k8_gatt(&info) < 0)) { | 633 | (no_agp && init_k8_gatt(&info) < 0)) { |
646 | no_iommu = 1; | ||
647 | no_iommu_init(); | ||
648 | printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n"); | 634 | printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n"); |
649 | if (end_pfn > MAX_DMA32_PFN) { | 635 | if (end_pfn > MAX_DMA32_PFN) { |
650 | printk(KERN_ERR "WARNING more than 4GB of memory " | 636 | printk(KERN_ERR "WARNING more than 4GB of memory " |