diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-11-20 10:48:58 -0500 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2009-11-27 08:16:28 -0500 |
commit | e3306664eb307ae4cc93211cd9f12d0dbd49de65 (patch) | |
tree | 0e4d41b4303a57b066c451d8dbc1c4577b1533d8 /arch/x86/kernel/amd_iommu.c | |
parent | aeb26f55337d4310840c8adc3ec7d6aebb714472 (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.c | 8 |
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 | ||
531 | void amd_iommu_flush_all_domains(void) | 531 | void 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 | ||
539 | static void flush_all_devices_for_iommu(struct amd_iommu *iommu) | 541 | static void flush_all_devices_for_iommu(struct amd_iommu *iommu) |