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

Commit f6f41eb9 authored by Stepan Moskovchenko's avatar Stepan Moskovchenko Committed by Daniel Walker
Browse files

msm: iommu: Don't flush page tables if no devices attached



Don't flush the page tables on an IOMMU domain if there are
no IOMMU devices attached to the domain. The act of
attaching to the domain will cause an implicit flush of
those areas if the page tables are configured to not be L2
cacheable.

Signed-off-by: default avatarStepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: default avatarDaniel Walker <dwalker@codeaurora.org>
parent 516cbc79
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -50,13 +50,16 @@ static void __flush_iotlb(struct iommu_domain *domain)
	unsigned long *fl_table = priv->pgtable;
	int i;

	if (!list_empty(&priv->list_attached)) {
		dmac_flush_range(fl_table, fl_table + SZ_16K);

		for (i = 0; i < NUM_FL_PTE; i++)
			if ((fl_table[i] & 0x03) == FL_TYPE_TABLE) {
			void *sl_table = __va(fl_table[i] & FL_BASE_MASK);
				void *sl_table = __va(fl_table[i] &
								FL_BASE_MASK);
				dmac_flush_range(sl_table, sl_table + SZ_4K);
			}
	}
#endif

	list_for_each_entry(ctx_drvdata, &priv->list_attached, attached_elm) {