Lines Matching +full:shared +full:- +full:memory
1 // SPDX-License-Identifier: GPL-2.0-only
6 #include <linux/dma-buf.h>
16 struct gen_pool *genpool = poolm->private_data; in pool_op_gen_alloc()
17 size_t s = roundup(size, 1 << genpool->min_alloc_order); in pool_op_gen_alloc()
21 return -ENOMEM; in pool_op_gen_alloc()
24 shm->kaddr = (void *)va; in pool_op_gen_alloc()
25 shm->paddr = gen_pool_virt_to_phys(genpool, va); in pool_op_gen_alloc()
26 shm->size = s; in pool_op_gen_alloc()
33 gen_pool_free(poolm->private_data, (unsigned long)shm->kaddr, in pool_op_gen_free()
34 shm->size); in pool_op_gen_free()
35 shm->kaddr = NULL; in pool_op_gen_free()
40 gen_pool_destroy(poolm->private_data); in pool_op_gen_destroy_poolmgr()
51 * tee_shm_pool_alloc_res_mem() - Create a shared memory pool from reserved
52 * memory range
53 * @priv_info: Information for driver private shared memory pool
54 * @dmabuf_info: Information for dma-buf shared memory pool
72 * Create the pool for driver private shared memory in tee_shm_pool_alloc_res_mem()
74 rc = tee_shm_pool_mgr_alloc_res_mem(priv_info->vaddr, priv_info->paddr, in tee_shm_pool_alloc_res_mem()
75 priv_info->size, in tee_shm_pool_alloc_res_mem()
82 * Create the pool for dma_buf shared memory in tee_shm_pool_alloc_res_mem()
84 rc = tee_shm_pool_mgr_alloc_res_mem(dmabuf_info->vaddr, in tee_shm_pool_alloc_res_mem()
85 dmabuf_info->paddr, in tee_shm_pool_alloc_res_mem()
86 dmabuf_info->size, PAGE_SHIFT); in tee_shm_pool_alloc_res_mem()
111 const size_t page_mask = PAGE_SIZE - 1; in tee_shm_pool_mgr_alloc_res_mem()
117 return ERR_PTR(-EINVAL); in tee_shm_pool_mgr_alloc_res_mem()
121 return ERR_PTR(-ENOMEM); in tee_shm_pool_mgr_alloc_res_mem()
123 mgr->private_data = gen_pool_create(min_alloc_order, -1); in tee_shm_pool_mgr_alloc_res_mem()
124 if (!mgr->private_data) { in tee_shm_pool_mgr_alloc_res_mem()
125 rc = -ENOMEM; in tee_shm_pool_mgr_alloc_res_mem()
129 gen_pool_set_algo(mgr->private_data, gen_pool_best_fit, NULL); in tee_shm_pool_mgr_alloc_res_mem()
130 rc = gen_pool_add_virt(mgr->private_data, vaddr, paddr, size, -1); in tee_shm_pool_mgr_alloc_res_mem()
132 gen_pool_destroy(mgr->private_data); in tee_shm_pool_mgr_alloc_res_mem()
136 mgr->ops = &pool_ops_generic; in tee_shm_pool_mgr_alloc_res_mem()
148 return mgr && mgr->ops && mgr->ops->alloc && mgr->ops->free && in check_mgr_ops()
149 mgr->ops->destroy_poolmgr; in check_mgr_ops()
158 return ERR_PTR(-EINVAL); in tee_shm_pool_alloc()
162 return ERR_PTR(-ENOMEM); in tee_shm_pool_alloc()
164 pool->private_mgr = priv_mgr; in tee_shm_pool_alloc()
165 pool->dma_buf_mgr = dmabuf_mgr; in tee_shm_pool_alloc()
172 * tee_shm_pool_free() - Free a shared memory pool
173 * @pool: The shared memory pool to free
175 * There must be no remaining shared memory allocated from this pool when
180 if (pool->private_mgr) in tee_shm_pool_free()
181 tee_shm_pool_mgr_destroy(pool->private_mgr); in tee_shm_pool_free()
182 if (pool->dma_buf_mgr) in tee_shm_pool_free()
183 tee_shm_pool_mgr_destroy(pool->dma_buf_mgr); in tee_shm_pool_free()