浏览代码

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>
Joerg Roedel 15 年之前
父节点
当前提交
d7f0776975
共有 2 个文件被更改,包括 9 次插入4 次删除
  1. 0 4
      arch/x86/kernel/amd_iommu.c
  2. 9 0
      arch/x86/kernel/amd_iommu_init.c

+ 0 - 4
arch/x86/kernel/amd_iommu.c

@@ -2330,10 +2330,6 @@ int __init amd_iommu_init_dma_ops(void)
 
 	iommu_detected = 1;
 	swiotlb = 0;
-#ifdef CONFIG_GART_IOMMU
-	gart_iommu_aperture_disabled = 1;
-	gart_iommu_aperture = 0;
-#endif
 
 	/* Make the driver finally visible to the drivers */
 	dma_ops = &amd_iommu_dma_ops;

+ 9 - 0
arch/x86/kernel/amd_iommu_init.c

@@ -1358,6 +1358,15 @@ static int __init amd_iommu_init(void)
 
 	free_unity_maps();
 
+#ifdef CONFIG_GART_IOMMU
+	/*
+	 * We failed to initialize the AMD IOMMU - try fallback to GART
+	 * if possible.
+	 */
+	gart_iommu_init();
+
+#endif
+
 	goto out;
 }