Commit 6a8c6748 authored by Lu Baolu's avatar Lu Baolu Committed by Joerg Roedel

iommu/vt-d: Don't enable iommu's which have been ignored

The iommu driver will ignore some iommu units if there's no
device under its scope or those devices have been explicitly
set to bypass the DMA translation. Don't enable those iommu
units, otherwise the devices under its scope won't work.

Fixes: d8190dc6 ("iommu/vt-d: Enable DMA remapping after rmrr mapped")
Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent c57b260a
...@@ -3268,7 +3268,12 @@ static int __init init_dmars(void) ...@@ -3268,7 +3268,12 @@ static int __init init_dmars(void)
goto error; goto error;
} }
for_each_active_iommu(iommu, drhd) { for_each_iommu(iommu, drhd) {
if (drhd->ignored) {
iommu_disable_translation(iommu);
continue;
}
/* /*
* Find the max pasid size of all IOMMU's in the system. * Find the max pasid size of all IOMMU's in the system.
* We need to ensure the system pasid table is no bigger * We need to ensure the system pasid table is no bigger
...@@ -4821,7 +4826,7 @@ int __init intel_iommu_init(void) ...@@ -4821,7 +4826,7 @@ int __init intel_iommu_init(void)
/* Finally, we enable the DMA remapping hardware. */ /* Finally, we enable the DMA remapping hardware. */
for_each_iommu(iommu, drhd) { for_each_iommu(iommu, drhd) {
if (!translation_pre_enabled(iommu)) if (!drhd->ignored && !translation_pre_enabled(iommu))
iommu_enable_translation(iommu); iommu_enable_translation(iommu);
iommu_disable_protect_mem_regions(iommu); iommu_disable_protect_mem_regions(iommu);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment