diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-11-20 18:48:58 +0300 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2009-11-27 16:16:28 +0300 |
commit | e3306664eb307ae4cc93211cd9f12d0dbd49de65 (patch) | |
tree | 0e4d41b4303a57b066c451d8dbc1c4577b1533d8 | |
parent | aeb26f55337d4310840c8adc3ec7d6aebb714472 (diff) | |
download | linux-e3306664eb307ae4cc93211cd9f12d0dbd49de65.tar.xz |
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>
-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) 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) |