diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-05-05 15:48:10 +0200 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2009-05-28 18:10:43 +0200 |
commit | 7d7a110c6127b7fc683dc6d764555f2dbd22b054 (patch) | |
tree | e507db8006ad708189a2dbccc65c595f3ecda504 /arch/x86/kernel/amd_iommu.c | |
parent | bfd1be1857e5a3385bf146e02e6dc3dd4241bec1 (diff) | |
download | op-kernel-dev-7d7a110c6127b7fc683dc6d764555f2dbd22b054.zip op-kernel-dev-7d7a110c6127b7fc683dc6d764555f2dbd22b054.tar.gz |
amd-iommu: add function to flush tlb for all devices
This function is required for suspend/resume support with AMD IOMMU
enabled.
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 | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 826ad079..92b0e18 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c @@ -460,6 +460,24 @@ void amd_iommu_flush_all_domains(void) } } +void amd_iommu_flush_all_devices(void) +{ + struct amd_iommu *iommu; + int i; + + for (i = 0; i <= amd_iommu_last_bdf; ++i) { + if (amd_iommu_pd_table[i] == NULL) + continue; + + iommu = amd_iommu_rlookup_table[i]; + if (!iommu) + continue; + + iommu_queue_inv_dev_entry(iommu, i); + iommu_completion_wait(iommu); + } +} + /**************************************************************************** * * The functions below are used the create the page table mappings for |