Lines Matching refs:pagetable
36 static size_t calc_pgsize(struct msm_iommu_pagetable *pagetable,
46 pgsizes = pagetable->pgsize_bitmap & GENMASK(__fls(size), 0);
62 pgsizes = pagetable->pgsize_bitmap & ~GENMASK(pgsize_idx, 0);
94 struct msm_iommu_pagetable *pagetable = to_pagetable(mmu);
95 struct io_pgtable_ops *ops = pagetable->pgtbl_ops;
100 pgsize = calc_pgsize(pagetable, iova, iova, size, &count);
110 iommu_flush_iotlb_all(to_msm_iommu(pagetable->parent)->domain);
118 struct msm_iommu_pagetable *pagetable = to_pagetable(mmu);
119 struct io_pgtable_ops *ops = pagetable->pgtbl_ops;
132 pgsize = calc_pgsize(pagetable, addr, phys, size, &count);
156 struct msm_iommu_pagetable *pagetable = to_pagetable(mmu);
157 struct msm_iommu *iommu = to_msm_iommu(pagetable->parent);
159 dev_get_drvdata(pagetable->parent->dev);
162 * If this is the last attached pagetable for the parent,
168 free_io_pgtable_ops(pagetable->pgtbl_ops);
169 kfree(pagetable);
175 struct msm_iommu_pagetable *pagetable;
180 pagetable = to_pagetable(mmu);
183 *ttbr = pagetable->ttbr;
186 *asid = pagetable->asid;
206 struct msm_iommu_pagetable *pagetable = cookie;
209 if (!pm_runtime_get_if_in_use(pagetable->iommu_dev))
212 adreno_smmu = dev_get_drvdata(pagetable->parent->dev);
214 pagetable->tlb->tlb_flush_all((void *)adreno_smmu->cookie);
216 pm_runtime_put_autosuspend(pagetable->iommu_dev);
222 struct msm_iommu_pagetable *pagetable = cookie;
225 if (!pm_runtime_get_if_in_use(pagetable->iommu_dev))
228 adreno_smmu = dev_get_drvdata(pagetable->parent->dev);
230 pagetable->tlb->tlb_flush_walk(iova, size, granule, (void *)adreno_smmu->cookie);
232 pm_runtime_put_autosuspend(pagetable->iommu_dev);
253 struct msm_iommu_pagetable *pagetable;
258 /* Get the pagetable configuration from the domain */
269 pagetable = kzalloc(sizeof(*pagetable), GFP_KERNEL);
270 if (!pagetable)
273 msm_mmu_init(&pagetable->base, parent->dev, &pagetable_funcs,
283 pagetable->pgtbl_ops = alloc_io_pgtable_ops(ARM_64_LPAE_S1,
284 &ttbr0_cfg, pagetable);
286 if (!pagetable->pgtbl_ops) {
287 kfree(pagetable);
292 * If this is the first pagetable that we've allocated, send it back to
298 free_io_pgtable_ops(pagetable->pgtbl_ops);
299 kfree(pagetable);
305 pagetable->parent = parent;
306 pagetable->tlb = ttbr1_cfg->tlb;
307 pagetable->iommu_dev = ttbr1_cfg->iommu_dev;
308 pagetable->pgsize_bitmap = ttbr0_cfg.pgsize_bitmap;
309 pagetable->ttbr = ttbr0_cfg.arm_lpae_s1_cfg.ttbr;
317 pagetable->asid = 0;
319 return &pagetable->base;