diff options
Diffstat (limited to 'arch/x86/kernel/pci-dma.c')
-rw-r--r-- | arch/x86/kernel/pci-dma.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index 745579bc8256..1a041bcf506b 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c | |||
@@ -32,6 +32,8 @@ int no_iommu __read_mostly; | |||
32 | /* Set this to 1 if there is a HW IOMMU in the system */ | 32 | /* Set this to 1 if there is a HW IOMMU in the system */ |
33 | int iommu_detected __read_mostly = 0; | 33 | int iommu_detected __read_mostly = 0; |
34 | 34 | ||
35 | int iommu_pass_through; | ||
36 | |||
35 | dma_addr_t bad_dma_address __read_mostly = 0; | 37 | dma_addr_t bad_dma_address __read_mostly = 0; |
36 | EXPORT_SYMBOL(bad_dma_address); | 38 | EXPORT_SYMBOL(bad_dma_address); |
37 | 39 | ||
@@ -210,6 +212,10 @@ static __init int iommu_setup(char *p) | |||
210 | if (!strncmp(p, "soft", 4)) | 212 | if (!strncmp(p, "soft", 4)) |
211 | swiotlb = 1; | 213 | swiotlb = 1; |
212 | #endif | 214 | #endif |
215 | if (!strncmp(p, "pt", 2)) { | ||
216 | iommu_pass_through = 1; | ||
217 | return 1; | ||
218 | } | ||
213 | 219 | ||
214 | gart_parse_options(p); | 220 | gart_parse_options(p); |
215 | 221 | ||
@@ -290,6 +296,8 @@ static int __init pci_iommu_init(void) | |||
290 | void pci_iommu_shutdown(void) | 296 | void pci_iommu_shutdown(void) |
291 | { | 297 | { |
292 | gart_iommu_shutdown(); | 298 | gart_iommu_shutdown(); |
299 | |||
300 | amd_iommu_shutdown(); | ||
293 | } | 301 | } |
294 | /* Must execute after PCI subsystem */ | 302 | /* Must execute after PCI subsystem */ |
295 | fs_initcall(pci_iommu_init); | 303 | fs_initcall(pci_iommu_init); |