aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/iommu/intel-iommu.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 5d7383775bf1..0ba078bc0f32 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1389,7 +1389,7 @@ static void iommu_disable_protect_mem_regions(struct intel_iommu *iommu)
1389 raw_spin_unlock_irqrestore(&iommu->register_lock, flags); 1389 raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
1390} 1390}
1391 1391
1392static int iommu_enable_translation(struct intel_iommu *iommu) 1392static void iommu_enable_translation(struct intel_iommu *iommu)
1393{ 1393{
1394 u32 sts; 1394 u32 sts;
1395 unsigned long flags; 1395 unsigned long flags;
@@ -1403,10 +1403,9 @@ static int iommu_enable_translation(struct intel_iommu *iommu)
1403 readl, (sts & DMA_GSTS_TES), sts); 1403 readl, (sts & DMA_GSTS_TES), sts);
1404 1404
1405 raw_spin_unlock_irqrestore(&iommu->register_lock, flags); 1405 raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
1406 return 0;
1407} 1406}
1408 1407
1409static int iommu_disable_translation(struct intel_iommu *iommu) 1408static void iommu_disable_translation(struct intel_iommu *iommu)
1410{ 1409{
1411 u32 sts; 1410 u32 sts;
1412 unsigned long flag; 1411 unsigned long flag;
@@ -1420,7 +1419,6 @@ static int iommu_disable_translation(struct intel_iommu *iommu)
1420 readl, (!(sts & DMA_GSTS_TES)), sts); 1419 readl, (!(sts & DMA_GSTS_TES)), sts);
1421 1420
1422 raw_spin_unlock_irqrestore(&iommu->register_lock, flag); 1421 raw_spin_unlock_irqrestore(&iommu->register_lock, flag);
1423 return 0;
1424} 1422}
1425 1423
1426 1424
@@ -2860,11 +2858,7 @@ static int __init init_dmars(void)
2860 2858
2861 iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL); 2859 iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL);
2862 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); 2860 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH);
2863 2861 iommu_enable_translation(iommu);
2864 ret = iommu_enable_translation(iommu);
2865 if (ret)
2866 goto free_iommu;
2867
2868 iommu_disable_protect_mem_regions(iommu); 2862 iommu_disable_protect_mem_regions(iommu);
2869 } 2863 }
2870 2864
@@ -3578,10 +3572,8 @@ static int init_iommu_hw(void)
3578 3572
3579 iommu->flush.flush_context(iommu, 0, 0, 0, 3573 iommu->flush.flush_context(iommu, 0, 0, 0,
3580 DMA_CCMD_GLOBAL_INVL); 3574 DMA_CCMD_GLOBAL_INVL);
3581 iommu->flush.flush_iotlb(iommu, 0, 0, 0, 3575 iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH);
3582 DMA_TLB_GLOBAL_FLUSH); 3576 iommu_enable_translation(iommu);
3583 if (iommu_enable_translation(iommu))
3584 return 1;
3585 iommu_disable_protect_mem_regions(iommu); 3577 iommu_disable_protect_mem_regions(iommu);
3586 } 3578 }
3587 3579