diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pci/dmar.c | 7 | ||||
-rw-r--r-- | drivers/pci/intel-iommu.c | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 22b02c6df854..437399667e5a 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
@@ -613,10 +613,13 @@ void __init detect_intel_iommu(void) | |||
613 | "x2apic and Intr-remapping.\n"); | 613 | "x2apic and Intr-remapping.\n"); |
614 | #endif | 614 | #endif |
615 | #ifdef CONFIG_DMAR | 615 | #ifdef CONFIG_DMAR |
616 | if (ret && !no_iommu && !iommu_detected && !swiotlb && | 616 | if (ret && !no_iommu && !iommu_detected && !dmar_disabled) |
617 | !dmar_disabled) | ||
618 | iommu_detected = 1; | 617 | iommu_detected = 1; |
619 | #endif | 618 | #endif |
619 | #ifdef CONFIG_X86 | ||
620 | if (ret) | ||
621 | x86_init.iommu.iommu_init = intel_iommu_init; | ||
622 | #endif | ||
620 | } | 623 | } |
621 | early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size); | 624 | early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size); |
622 | dmar_tbl = NULL; | 625 | dmar_tbl = NULL; |
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index b1e97e682500..43d755a2e14a 100644 --- a/drivers/pci/intel-iommu.c +++ b/drivers/pci/intel-iommu.c | |||
@@ -3231,7 +3231,7 @@ int __init intel_iommu_init(void) | |||
3231 | * Check the need for DMA-remapping initialization now. | 3231 | * Check the need for DMA-remapping initialization now. |
3232 | * Above initialization will also be used by Interrupt-remapping. | 3232 | * Above initialization will also be used by Interrupt-remapping. |
3233 | */ | 3233 | */ |
3234 | if (no_iommu || swiotlb || dmar_disabled) | 3234 | if (no_iommu || dmar_disabled) |
3235 | return -ENODEV; | 3235 | return -ENODEV; |
3236 | 3236 | ||
3237 | iommu_init_mempool(); | 3237 | iommu_init_mempool(); |
@@ -3252,7 +3252,9 @@ int __init intel_iommu_init(void) | |||
3252 | "PCI-DMA: Intel(R) Virtualization Technology for Directed I/O\n"); | 3252 | "PCI-DMA: Intel(R) Virtualization Technology for Directed I/O\n"); |
3253 | 3253 | ||
3254 | init_timer(&unmap_timer); | 3254 | init_timer(&unmap_timer); |
3255 | force_iommu = 1; | 3255 | #ifdef CONFIG_SWIOTLB |
3256 | swiotlb = 0; | ||
3257 | #endif | ||
3256 | dma_ops = &intel_dma_ops; | 3258 | dma_ops = &intel_dma_ops; |
3257 | 3259 | ||
3258 | init_iommu_sysfs(); | 3260 | init_iommu_sysfs(); |