aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/iommu/amd_iommu_init.c14
-rw-r--r--drivers/iommu/intel-iommu.c4
2 files changed, 14 insertions, 4 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index d091defc3426..59741ead7e15 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1568,13 +1568,23 @@ static int __init amd_iommu_init_pci(void)
1568 break; 1568 break;
1569 } 1569 }
1570 1570
1571 /*
1572 * Order is important here to make sure any unity map requirements are
1573 * fulfilled. The unity mappings are created and written to the device
1574 * table during the amd_iommu_init_api() call.
1575 *
1576 * After that we call init_device_table_dma() to make sure any
1577 * uninitialized DTE will block DMA, and in the end we flush the caches
1578 * of all IOMMUs to make sure the changes to the device table are
1579 * active.
1580 */
1581 ret = amd_iommu_init_api();
1582
1571 init_device_table_dma(); 1583 init_device_table_dma();
1572 1584
1573 for_each_iommu(iommu) 1585 for_each_iommu(iommu)
1574 iommu_flush_all_caches(iommu); 1586 iommu_flush_all_caches(iommu);
1575 1587
1576 ret = amd_iommu_init_api();
1577
1578 if (!ret) 1588 if (!ret)
1579 print_iommu_info(); 1589 print_iommu_info();
1580 1590
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index cfe410eedaf0..323dac9900ba 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -4602,13 +4602,13 @@ static void free_all_cpu_cached_iovas(unsigned int cpu)
4602 for (i = 0; i < g_num_of_iommus; i++) { 4602 for (i = 0; i < g_num_of_iommus; i++) {
4603 struct intel_iommu *iommu = g_iommus[i]; 4603 struct intel_iommu *iommu = g_iommus[i];
4604 struct dmar_domain *domain; 4604 struct dmar_domain *domain;
4605 u16 did; 4605 int did;
4606 4606
4607 if (!iommu) 4607 if (!iommu)
4608 continue; 4608 continue;
4609 4609
4610 for (did = 0; did < cap_ndoms(iommu->cap); did++) { 4610 for (did = 0; did < cap_ndoms(iommu->cap); did++) {
4611 domain = get_iommu_domain(iommu, did); 4611 domain = get_iommu_domain(iommu, (u16)did);
4612 4612
4613 if (!domain) 4613 if (!domain)
4614 continue; 4614 continue;