aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/amd_iommu.c
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2009-11-20 10:48:58 -0500
committerJoerg Roedel <joerg.roedel@amd.com>2009-11-27 08:16:28 -0500
commite3306664eb307ae4cc93211cd9f12d0dbd49de65 (patch)
tree0e4d41b4303a57b066c451d8dbc1c4577b1533d8 /arch/x86/kernel/amd_iommu.c
parentaeb26f55337d4310840c8adc3ec7d6aebb714472 (diff)
x86/amd-iommu: Reimplement amd_iommu_flush_all_domains()
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>
Diffstat (limited to 'arch/x86/kernel/amd_iommu.c')
-rw-r--r--arch/x86/kernel/amd_iommu.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 0c4319b13014..5141f5608c5c 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -530,10 +530,12 @@ static void flush_all_domains_on_iommu(struct amd_iommu *iommu)
530 530
531void amd_iommu_flush_all_domains(void) 531void amd_iommu_flush_all_domains(void)
532{ 532{
533 struct amd_iommu *iommu; 533 struct protection_domain *domain;
534 534
535 for_each_iommu(iommu) 535 list_for_each_entry(domain, &amd_iommu_pd_list, list) {
536 flush_all_domains_on_iommu(iommu); 536 iommu_flush_tlb_pde(domain);
537 iommu_flush_complete(domain);
538 }
537} 539}
538 540
539static void flush_all_devices_for_iommu(struct amd_iommu *iommu) 541static void flush_all_devices_for_iommu(struct amd_iommu *iommu)