Skip to content

Commit

Permalink
msm: iommu: Don't flush page tables if no devices attached
Browse files Browse the repository at this point in the history
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: Stepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
  • Loading branch information
Stepan Moskovchenko authored and Daniel Walker committed Nov 30, 2010
1 parent 516cbc7 commit f6f41eb
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions arch/arm/mach-msm/iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,16 @@ static void __flush_iotlb(struct iommu_domain *domain)
unsigned long *fl_table = priv->pgtable;
int i;

dmac_flush_range(fl_table, fl_table + SZ_16K);
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);
dmac_flush_range(sl_table, sl_table + SZ_4K);
}
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);
dmac_flush_range(sl_table, sl_table + SZ_4K);
}
}
#endif

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

0 comments on commit f6f41eb

Please sign in to comment.