Răsfoiți Sursa

iommu/amd: Flush iommu tlb in dma_ops_free_addresses

Instead of setting need_flush, do the flush directly in
dma_ops_free_addresses.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Joerg Roedel 9 ani în urmă
părinte
comite
d41ab09896
1 a modificat fișierele cu 4 adăugiri și 2 ștergeri
  1. 4 2
      drivers/iommu/amd_iommu.c

+ 4 - 2
drivers/iommu/amd_iommu.c

@@ -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;