iommu/io-pgtable-fast: invalidate TLBs on unmap
When not using the "public" fastmap unmap API make sure we take care of invalidating the TLBs. Change-Id: Ia74d4ae7d6352bd9ff57247e9fe2ef74daa1ac1c Signed-off-by: Liam Mark <lmark@codeaurora.org>
This commit is contained in:
parent
26db194916
commit
9591d38b52
1 changed files with 2 additions and 1 deletions
|
@ -256,16 +256,17 @@ void av8l_fast_unmap_public(av8l_fast_iopte *ptep, size_t size)
|
|||
__av8l_fast_unmap(ptep, size, true);
|
||||
}
|
||||
|
||||
/* upper layer must take care of TLB invalidation */
|
||||
static size_t av8l_fast_unmap(struct io_pgtable_ops *ops, unsigned long iova,
|
||||
size_t size)
|
||||
{
|
||||
struct av8l_fast_io_pgtable *data = iof_pgtable_ops_to_data(ops);
|
||||
struct io_pgtable *iop = &data->iop;
|
||||
av8l_fast_iopte *ptep = iopte_pmd_offset(data->pmds, data->base, iova);
|
||||
unsigned long nptes = size >> AV8L_FAST_PAGE_SHIFT;
|
||||
|
||||
__av8l_fast_unmap(ptep, size, false);
|
||||
dmac_clean_range(ptep, ptep + nptes);
|
||||
iop->cfg.tlb->tlb_flush_all(iop->cookie);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue