aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2010-05-31 09:05:20 -0400
committerJoerg Roedel <joerg.roedel@amd.com>2010-06-01 04:20:15 -0400
commitd7f0776975334070a93370ae048fda0c31a91c38 (patch)
treee1eb9681756be538f8108a1b1fd54f8b1eb0e294 /arch
parente82752d8b5a7e0a5e4d607fd8713549e2a4e2741 (diff)
x86/amd-iommu: Fall back to GART if initialization fails
This patch implements a fallback to the GART IOMMU if this is possible and the AMD IOMMU initialization failed. Otherwise the fallback would be nommu which is very problematic on machines with more than 4GB of memory or swiotlb which hurts io-performance. Cc: stable@kernel.org Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/amd_iommu.c4
-rw-r--r--arch/x86/kernel/amd_iommu_init.c9
2 files changed, 9 insertions, 4 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 8a9aaa8412c9..0d20286d78c6 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -2330,10 +2330,6 @@ int __init amd_iommu_init_dma_ops(void)
2330 2330
2331 iommu_detected = 1; 2331 iommu_detected = 1;
2332 swiotlb = 0; 2332 swiotlb = 0;
2333#ifdef CONFIG_GART_IOMMU
2334 gart_iommu_aperture_disabled = 1;
2335 gart_iommu_aperture = 0;
2336#endif
2337 2333
2338 /* Make the driver finally visible to the drivers */ 2334 /* Make the driver finally visible to the drivers */
2339 dma_ops = &amd_iommu_dma_ops; 2335 dma_ops = &amd_iommu_dma_ops;
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 1405346c62b4..3cc63e2b8dd4 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -1358,6 +1358,15 @@ free:
1358 1358
1359 free_unity_maps(); 1359 free_unity_maps();
1360 1360
1361#ifdef CONFIG_GART_IOMMU
1362 /*
1363 * We failed to initialize the AMD IOMMU - try fallback to GART
1364 * if possible.
1365 */
1366 gart_iommu_init();
1367
1368#endif
1369
1361 goto out; 1370 goto out;
1362} 1371}
1363 1372