iommu/amd: Flush iommu tlb in dma_ops_free_addresses
authorJoerg Roedel <jroedel@suse.de>
Mon, 21 Dec 2015 17:20:03 +0000 (18:20 +0100)
committerJoerg Roedel <jroedel@suse.de>
Mon, 28 Dec 2015 16:18:52 +0000 (17:18 +0100)
Instead of setting need_flush, do the flush directly in
dma_ops_free_addresses.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd_iommu.c

index a26cd76..62a4079 100644 (file)
@@ -1648,8 +1648,10 @@ static void dma_ops_free_addresses(struct dma_ops_domain *dom,
                return;
 #endif
 
-       if ((address >> APERTURE_RANGE_SHIFT) >= dom->next_index)
-               dom->need_flush = true;
+       if (address + pages > range->next_bit) {
+               domain_flush_tlb(&dom->domain);
+               domain_flush_complete(&dom->domain);
+       }
 
        address = (address % APERTURE_RANGE_SIZE) >> PAGE_SHIFT;