Lines Matching refs:mm
29 struct mm_struct *mm; member
45 arm_smmu_share_asid(struct mm_struct *mm, u16 asid) in arm_smmu_share_asid() argument
57 if (cd->mm) { in arm_smmu_share_asid()
58 if (WARN_ON(cd->mm != mm)) in arm_smmu_share_asid()
92 static struct arm_smmu_ctx_desc *arm_smmu_alloc_shared_cd(struct mm_struct *mm) in arm_smmu_alloc_shared_cd() argument
101 mmgrab(mm); in arm_smmu_alloc_shared_cd()
103 asid = arm64_mm_context_get(mm); in arm_smmu_alloc_shared_cd()
118 ret = arm_smmu_share_asid(mm, asid); in arm_smmu_alloc_shared_cd()
156 cd->ttbr = virt_to_phys(mm->pgd); in arm_smmu_alloc_shared_cd()
164 cd->mm = mm; in arm_smmu_alloc_shared_cd()
173 arm64_mm_context_put(mm); in arm_smmu_alloc_shared_cd()
175 mmdrop(mm); in arm_smmu_alloc_shared_cd()
183 arm64_mm_context_put(cd->mm); in arm_smmu_free_shared_cd()
184 mmdrop(cd->mm); in arm_smmu_free_shared_cd()
199 struct mm_struct *mm, in arm_smmu_mm_arch_invalidate_secondary_tlbs() argument
232 arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, start, size); in arm_smmu_mm_arch_invalidate_secondary_tlbs()
235 static void arm_smmu_mm_release(struct mmu_notifier *mn, struct mm_struct *mm) in arm_smmu_mm_release() argument
250 arm_smmu_write_ctx_desc(smmu_domain, mm->pasid, &quiet_cd); in arm_smmu_mm_release()
253 arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, 0, 0); in arm_smmu_mm_release()
273 struct mm_struct *mm) in arm_smmu_mmu_notifier_get() argument
280 if (smmu_mn->mn.mm == mm) { in arm_smmu_mmu_notifier_get()
286 cd = arm_smmu_alloc_shared_cd(mm); in arm_smmu_mmu_notifier_get()
301 ret = mmu_notifier_register(&smmu_mn->mn, mm); in arm_smmu_mmu_notifier_get()
307 ret = arm_smmu_write_ctx_desc(smmu_domain, mm->pasid, cd); in arm_smmu_mmu_notifier_get()
324 struct mm_struct *mm = smmu_mn->mn.mm; in arm_smmu_mmu_notifier_put() local
332 arm_smmu_write_ctx_desc(smmu_domain, mm->pasid, NULL); in arm_smmu_mmu_notifier_put()
340 arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, 0, 0); in arm_smmu_mmu_notifier_put()
349 __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) in __arm_smmu_sva_bind() argument
362 if (bond->mm == mm) { in __arm_smmu_sva_bind()
372 bond->mm = mm; in __arm_smmu_sva_bind()
376 bond->smmu_mn = arm_smmu_mmu_notifier_get(smmu_domain, mm); in __arm_smmu_sva_bind()
541 struct mm_struct *mm = domain->mm; in arm_smmu_sva_remove_dev_pasid() local
547 if (t->mm == mm) { in arm_smmu_sva_remove_dev_pasid()
566 struct mm_struct *mm = domain->mm; in arm_smmu_sva_set_dev_pasid() local
569 handle = __arm_smmu_sva_bind(dev, mm); in arm_smmu_sva_set_dev_pasid()