Browse Source

x86/amd-iommu: Make sure a device is assigned in passthrough mode

When the IOMMU driver runs in passthrough mode it has to
make sure that every device not assigned to an IOMMU-API
domain must be put into the passthrough domain instead of
keeping it unassigned.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Joerg Roedel 15 years ago
parent
commit
21129f786f
1 changed files with 9 additions and 0 deletions
  1. 9 0
      arch/x86/kernel/amd_iommu.c

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

@@ -1141,6 +1141,15 @@ static void __detach_device(struct protection_domain *domain, u16 devid)
 
 
 	/* ready */
 	/* ready */
 	spin_unlock(&domain->lock);
 	spin_unlock(&domain->lock);
+
+	/*
+	 * If we run in passthrough mode the device must be assigned to the
+	 * passthrough domain if it is detached from any other domain
+	 */
+	if (iommu_pass_through) {
+		struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
+		__attach_device(iommu, pt_domain, devid);
+	}
 }
 }
 
 
 /*
 /*