Lines Matching refs:bo
19 struct panfrost_gem_object *bo = to_panfrost_bo(obj); in panfrost_gem_free_object() local
29 list_del_init(&bo->base.madv_list); in panfrost_gem_free_object()
36 WARN_ON_ONCE(!list_empty(&bo->mappings.list)); in panfrost_gem_free_object()
38 if (bo->sgts) { in panfrost_gem_free_object()
40 int n_sgt = bo->base.base.size / SZ_2M; in panfrost_gem_free_object()
43 if (bo->sgts[i].sgl) { in panfrost_gem_free_object()
44 dma_unmap_sgtable(pfdev->dev, &bo->sgts[i], in panfrost_gem_free_object()
46 sg_free_table(&bo->sgts[i]); in panfrost_gem_free_object()
49 kvfree(bo->sgts); in panfrost_gem_free_object()
52 drm_gem_shmem_free(&bo->base); in panfrost_gem_free_object()
56 panfrost_gem_mapping_get(struct panfrost_gem_object *bo, in panfrost_gem_mapping_get() argument
61 mutex_lock(&bo->mappings.lock); in panfrost_gem_mapping_get()
62 list_for_each_entry(iter, &bo->mappings.list, node) { in panfrost_gem_mapping_get()
69 mutex_unlock(&bo->mappings.lock); in panfrost_gem_mapping_get()
106 void panfrost_gem_teardown_mappings_locked(struct panfrost_gem_object *bo) in panfrost_gem_teardown_mappings_locked() argument
110 list_for_each_entry(mapping, &bo->mappings.list, node) in panfrost_gem_teardown_mappings_locked()
119 struct panfrost_gem_object *bo = to_panfrost_bo(obj); in panfrost_gem_open() local
120 unsigned long color = bo->noexec ? PANFROST_BO_NOEXEC : 0; in panfrost_gem_open()
131 mapping->obj = bo; in panfrost_gem_open()
139 if (!bo->noexec) in panfrost_gem_open()
152 if (!bo->is_heap) { in panfrost_gem_open()
158 mutex_lock(&bo->mappings.lock); in panfrost_gem_open()
159 WARN_ON(bo->base.madv != PANFROST_MADV_WILLNEED); in panfrost_gem_open()
160 list_add_tail(&mapping->node, &bo->mappings.list); in panfrost_gem_open()
161 mutex_unlock(&bo->mappings.lock); in panfrost_gem_open()
172 struct panfrost_gem_object *bo = to_panfrost_bo(obj); in panfrost_gem_close() local
175 mutex_lock(&bo->mappings.lock); in panfrost_gem_close()
176 list_for_each_entry(iter, &bo->mappings.list, node) { in panfrost_gem_close()
183 mutex_unlock(&bo->mappings.lock); in panfrost_gem_close()
190 struct panfrost_gem_object *bo = to_panfrost_bo(obj); in panfrost_gem_pin() local
192 if (bo->is_heap) in panfrost_gem_pin()
195 return drm_gem_shmem_pin_locked(&bo->base); in panfrost_gem_pin()
200 struct panfrost_gem_object *bo = to_panfrost_bo(obj); in panfrost_gem_status() local
203 if (bo->base.base.import_attach || bo->base.pages) in panfrost_gem_status()
206 if (bo->base.madv == PANFROST_MADV_DONTNEED) in panfrost_gem_status()
214 struct panfrost_gem_object *bo = to_panfrost_bo(obj); in panfrost_gem_rss() local
216 if (bo->is_heap) { in panfrost_gem_rss()
217 return bo->heap_rss_size; in panfrost_gem_rss()
218 } else if (bo->base.pages) { in panfrost_gem_rss()
219 WARN_ON(bo->heap_rss_size); in panfrost_gem_rss()
220 return bo->base.base.size; in panfrost_gem_rss()
271 struct panfrost_gem_object *bo; in panfrost_gem_create() local
281 bo = to_panfrost_bo(&shmem->base); in panfrost_gem_create()
282 bo->noexec = !!(flags & PANFROST_BO_NOEXEC); in panfrost_gem_create()
283 bo->is_heap = !!(flags & PANFROST_BO_HEAP); in panfrost_gem_create()
285 return bo; in panfrost_gem_create()
294 struct panfrost_gem_object *bo; in panfrost_gem_prime_import_sg_table() local
300 bo = to_panfrost_bo(obj); in panfrost_gem_prime_import_sg_table()
301 bo->noexec = true; in panfrost_gem_prime_import_sg_table()