Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit acea0018 authored by David Woodhouse's avatar David Woodhouse
Browse files

intel-iommu: Defer the iotlb flush and iova free for intel_unmap_sg() too.



I see no reason why we did this _only_ in intel_unmap_page().

Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 3d39cecc
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -2815,11 +2815,18 @@ static void intel_unmap_sg(struct device *hwdev, struct scatterlist *sglist,
	/* free page tables */
	dma_pte_free_pagetable(domain, start_pfn, last_pfn);

	if (intel_iommu_strict) {
		iommu_flush_iotlb_psi(iommu, domain->id, start_pfn,
			      (last_pfn - start_pfn + 1));

				      last_pfn - start_pfn + 1);
		/* free iova */
		__free_iova(&domain->iovad, iova);
	} else {
		add_unmap(domain, iova);
		/*
		 * queue up the release of the unmap to save the 1/6th of the
		 * cpu used up by the iotlb flush operation...
		 */
	}
}

static int intel_nontranslate_map_sg(struct device *hddev,