x86/amd-iommu: Reimplement amd_iommu_flush_all_domains()
authorJoerg Roedel <joerg.roedel@amd.com>
Fri, 20 Nov 2009 15:48:58 +0000 (16:48 +0100)
committerJoerg Roedel <joerg.roedel@amd.com>
Fri, 27 Nov 2009 13:16:28 +0000 (14:16 +0100)
This patch reimplementes the amd_iommu_flush_all_domains
function to use the global protection domain list instead
of flushing every domain on every IOMMU.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
arch/x86/kernel/amd_iommu.c

index 0c4319b1301455aba6e3d7795570a0952b8c615f..5141f5608c5c92b47d0ac19af809725455d3ad75 100644 (file)
@@ -530,10 +530,12 @@ static void flush_all_domains_on_iommu(struct amd_iommu *iommu)
 
 void amd_iommu_flush_all_domains(void)
 {
-       struct amd_iommu *iommu;
+       struct protection_domain *domain;
 
-       for_each_iommu(iommu)
-               flush_all_domains_on_iommu(iommu);
+       list_for_each_entry(domain, &amd_iommu_pd_list, list) {
+               iommu_flush_tlb_pde(domain);
+               iommu_flush_complete(domain);
+       }
 }
 
 static void flush_all_devices_for_iommu(struct amd_iommu *iommu)