Lines Matching refs:r

130 static void reg_shm_unmap_helper(struct mobj_reg_shm *r)  in reg_shm_unmap_helper()  argument
132 assert(r->mm); in reg_shm_unmap_helper()
133 assert(r->mm->pool->shift == SMALL_PAGE_SHIFT); in reg_shm_unmap_helper()
134 core_mmu_unmap_pages(tee_mm_get_smem(r->mm), r->mm->size); in reg_shm_unmap_helper()
135 tee_mm_free(r->mm); in reg_shm_unmap_helper()
136 r->mm = NULL; in reg_shm_unmap_helper()
154 struct mobj_reg_shm *r = to_mobj_reg_shm(mobj); in mobj_reg_shm_free() local
157 if (r->guarded && !r->releasing) { in mobj_reg_shm_free()
166 reg_shm_free_helper(r); in mobj_reg_shm_free()
174 r->release_frees = true; in mobj_reg_shm_free()
198 struct mobj_reg_shm *r = to_mobj_reg_shm(mobj); in mobj_reg_shm_inc_map() local
203 if (refcount_inc(&r->mapcount)) in mobj_reg_shm_inc_map()
208 if (!refcount_val(&r->mapcount)) in mobj_reg_shm_inc_map()
221 if (!r->mm) { in mobj_reg_shm_inc_map()
222 sz = ROUNDUP(mobj->size + r->page_offset, SMALL_PAGE_SIZE); in mobj_reg_shm_inc_map()
223 r->mm = tee_mm_alloc(&core_virt_shm_pool, sz); in mobj_reg_shm_inc_map()
224 if (!r->mm) { in mobj_reg_shm_inc_map()
229 res = core_mmu_map_pages(tee_mm_get_smem(r->mm), r->pages, in mobj_reg_shm_inc_map()
233 tee_mm_free(r->mm); in mobj_reg_shm_inc_map()
234 r->mm = NULL; in mobj_reg_shm_inc_map()
239 refcount_set(&r->mapcount, 1); in mobj_reg_shm_inc_map()
248 struct mobj_reg_shm *r = to_mobj_reg_shm(mobj); in mobj_reg_shm_dec_map() local
251 if (!refcount_dec(&r->mapcount)) in mobj_reg_shm_dec_map()
263 if (!refcount_val(&r->mapcount) && r->mm) in mobj_reg_shm_dec_map()
264 reg_shm_unmap_helper(r); in mobj_reg_shm_dec_map()
318 static TEE_Result check_reg_shm_conflict(struct mobj_reg_shm *r, paddr_t pa, in check_reg_shm_conflict() argument
323 for (n = 0; n < r->mobj.size / SMALL_PAGE_SIZE; n++) in check_reg_shm_conflict()
324 if (core_is_buffer_intersect(pa, size, r->pages[n], in check_reg_shm_conflict()
331 static TEE_Result check_protmem_conflict(struct mobj_reg_shm *r) in check_protmem_conflict() argument
337 res = check_reg_shm_conflict(r, m->pa, m->mobj.size); in check_protmem_conflict()
455 struct mobj_reg_shm *r = NULL; in mobj_reg_shm_release_by_cookie() local
464 r = reg_shm_find_unlocked(cookie); in mobj_reg_shm_release_by_cookie()
465 if (!r || r->guarded || r->releasing) in mobj_reg_shm_release_by_cookie()
466 r = NULL; in mobj_reg_shm_release_by_cookie()
468 r->releasing = true; in mobj_reg_shm_release_by_cookie()
472 if (!r) in mobj_reg_shm_release_by_cookie()
475 mobj_put(&r->mobj); in mobj_reg_shm_release_by_cookie()
492 if (r->release_frees) { in mobj_reg_shm_release_by_cookie()
493 reg_shm_free_helper(r); in mobj_reg_shm_release_by_cookie()
494 r = NULL; in mobj_reg_shm_release_by_cookie()
498 if (!r) in mobj_reg_shm_release_by_cookie()
552 struct mobj_reg_shm *r = NULL; in check_reg_shm_list_conflict() local
555 SLIST_FOREACH(r, &reg_shm_list, next) { in check_reg_shm_list_conflict()
556 res = check_reg_shm_conflict(r, pa, size); in check_reg_shm_list_conflict()
638 struct mobj_protmem *r = to_mobj_protmem(mobj); in mobj_protmem_free() local
641 if (!r->releasing) { in mobj_protmem_free()
643 protmem_free_helper(r); in mobj_protmem_free()
647 r->release_frees = true; in mobj_protmem_free()