diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-09-03 09:39:23 -0400 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2009-09-03 09:55:23 -0400 |
commit | d586d7852ccd0cecb502bf4809f827e60c486af0 (patch) | |
tree | 42d01aaa0acfa6a9e73ba99db5c032653aed7a8b | |
parent | e394d72aa8b319211b8f947d151d9d50b0fde842 (diff) |
x86/amd-iommu: Add function to flush all DTEs on one IOMMU
This function flushes all DTE entries on one IOMMU for all
devices behind this IOMMU. This is required for command
buffer resetting later.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
-rw-r--r-- | arch/x86/kernel/amd_iommu.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 64cc582feb9b..2dc093370d2d 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
@@ -516,6 +516,19 @@ void amd_iommu_flush_all_domains(void) | |||
516 | flush_all_domains_on_iommu(iommu); | 516 | flush_all_domains_on_iommu(iommu); |
517 | } | 517 | } |
518 | 518 | ||
519 | static void flush_all_devices_for_iommu(struct amd_iommu *iommu) | ||
520 | { | ||
521 | int i; | ||
522 | |||
523 | for (i = 0; i <= amd_iommu_last_bdf; ++i) { | ||
524 | if (iommu != amd_iommu_rlookup_table[i]) | ||
525 | continue; | ||
526 | |||
527 | iommu_queue_inv_dev_entry(iommu, i); | ||
528 | iommu_completion_wait(iommu); | ||
529 | } | ||
530 | } | ||
531 | |||
519 | void amd_iommu_flush_all_devices(void) | 532 | void amd_iommu_flush_all_devices(void) |
520 | { | 533 | { |
521 | struct amd_iommu *iommu; | 534 | struct amd_iommu *iommu; |