Lines Matching refs:msm_obj

125 static void sync_for_device(struct msm_gem_object *msm_obj)  in sync_for_device()  argument
127 struct device *dev = msm_obj->base.dev->dev; in sync_for_device()
129 dma_map_sgtable(dev, msm_obj->sgt, DMA_BIDIRECTIONAL, 0); in sync_for_device()
132 static void sync_for_cpu(struct msm_gem_object *msm_obj) in sync_for_cpu() argument
134 struct device *dev = msm_obj->base.dev->dev; in sync_for_cpu()
136 dma_unmap_sgtable(dev, msm_obj->sgt, DMA_BIDIRECTIONAL, 0); in sync_for_cpu()
142 struct msm_gem_object *msm_obj = to_msm_bo(obj); in update_lru_active() local
144 GEM_WARN_ON(!msm_obj->pages); in update_lru_active()
146 if (msm_obj->pin_count) { in update_lru_active()
148 } else if (msm_obj->madv == MSM_MADV_WILLNEED) { in update_lru_active()
151 GEM_WARN_ON(msm_obj->madv != MSM_MADV_DONTNEED); in update_lru_active()
160 struct msm_gem_object *msm_obj = to_msm_bo(obj); in update_lru_locked() local
162 msm_gem_assert_locked(&msm_obj->base); in update_lru_locked()
164 if (!msm_obj->pages) { in update_lru_locked()
165 GEM_WARN_ON(msm_obj->pin_count); in update_lru_locked()
184 struct msm_gem_object *msm_obj = to_msm_bo(obj); in get_pages() local
188 if (!msm_obj->pages) { in get_pages()
203 msm_obj->pages = p; in get_pages()
205 msm_obj->sgt = drm_prime_pages_to_sg(obj->dev, p, npages); in get_pages()
206 if (IS_ERR(msm_obj->sgt)) { in get_pages()
207 void *ptr = ERR_CAST(msm_obj->sgt); in get_pages()
210 msm_obj->sgt = NULL; in get_pages()
217 if (msm_obj->flags & MSM_BO_WC) in get_pages()
218 sync_for_device(msm_obj); in get_pages()
223 return msm_obj->pages; in get_pages()
228 struct msm_gem_object *msm_obj = to_msm_bo(obj); in put_pages() local
237 if (msm_obj->pages) { in put_pages()
238 if (msm_obj->sgt) { in put_pages()
243 if (msm_obj->flags & MSM_BO_WC) in put_pages()
244 sync_for_cpu(msm_obj); in put_pages()
246 sg_free_table(msm_obj->sgt); in put_pages()
247 kfree(msm_obj->sgt); in put_pages()
248 msm_obj->sgt = NULL; in put_pages()
253 drm_gem_put_pages(obj, msm_obj->pages, true, false); in put_pages()
255 msm_obj->pages = NULL; in put_pages()
262 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_get_pages_locked() local
266 if (msm_obj->madv > madv) { in msm_gem_get_pages_locked()
268 msm_obj->madv, madv); in msm_gem_get_pages_locked()
317 static pgprot_t msm_gem_pgprot(struct msm_gem_object *msm_obj, pgprot_t prot) in msm_gem_pgprot() argument
319 if (msm_obj->flags & MSM_BO_WC) in msm_gem_pgprot()
328 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_fault() local
345 if (GEM_WARN_ON(msm_obj->madv != MSM_MADV_WILLNEED)) { in msm_gem_fault()
481 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_prot() local
484 if (!(msm_obj->flags & MSM_BO_GPU_READONLY)) in msm_gem_prot()
487 if (msm_obj->flags & MSM_BO_MAP_PRIV) in msm_gem_prot()
490 if (msm_obj->flags & MSM_BO_CACHED_COHERENT) in msm_gem_prot()
498 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_pin_vma_locked() local
508 return msm_gem_vma_map(vma, prot, msm_obj->sgt); in msm_gem_pin_vma_locked()
514 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_unpin_locked() local
519 msm_obj->pin_count--; in msm_gem_unpin_locked()
520 GEM_WARN_ON(msm_obj->pin_count < 0); in msm_gem_unpin_locked()
533 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_unpin_active() local
535 msm_obj->pin_count--; in msm_gem_unpin_active()
536 GEM_WARN_ON(msm_obj->pin_count < 0); in msm_gem_unpin_active()
723 struct msm_gem_object *msm_obj = to_msm_bo(obj); in get_vaddr() local
744 msm_obj->vmap_count++; in get_vaddr()
746 if (!msm_obj->vaddr) { in get_vaddr()
747 msm_obj->vaddr = vmap(pages, obj->size >> PAGE_SHIFT, in get_vaddr()
748 VM_MAP, msm_gem_pgprot(msm_obj, PAGE_KERNEL)); in get_vaddr()
749 if (msm_obj->vaddr == NULL) { in get_vaddr()
755 return msm_obj->vaddr; in get_vaddr()
758 msm_obj->vmap_count--; in get_vaddr()
792 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_put_vaddr_locked() local
795 GEM_WARN_ON(msm_obj->vmap_count < 1); in msm_gem_put_vaddr_locked()
797 msm_obj->vmap_count--; in msm_gem_put_vaddr_locked()
814 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_madvise() local
820 if (msm_obj->madv != __MSM_MADV_PURGED) in msm_gem_madvise()
821 msm_obj->madv = madv; in msm_gem_madvise()
823 madv = msm_obj->madv; in msm_gem_madvise()
841 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_purge() local
844 GEM_WARN_ON(!is_purgeable(msm_obj)); in msm_gem_purge()
857 msm_obj->madv = __MSM_MADV_PURGED; in msm_gem_purge()
879 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_evict() local
882 GEM_WARN_ON(is_unevictable(msm_obj)); in msm_gem_evict()
894 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_vunmap() local
898 if (!msm_obj->vaddr || GEM_WARN_ON(!is_vunmapable(msm_obj))) in msm_gem_vunmap()
901 vunmap(msm_obj->vaddr); in msm_gem_vunmap()
902 msm_obj->vaddr = NULL; in msm_gem_vunmap()
949 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_describe() local
965 if (msm_obj->pages) { in msm_gem_describe()
970 switch (msm_obj->madv) { in msm_gem_describe()
988 msm_obj->flags, msm_gem_active(obj) ? 'A' : 'I', in msm_gem_describe()
990 off, msm_obj->vaddr); in msm_gem_describe()
992 seq_printf(m, " %08zu %9s %-32s\n", obj->size, madv, msm_obj->name); in msm_gem_describe()
1033 struct msm_gem_object *msm_obj; in msm_gem_describe_objects() local
1036 list_for_each_entry(msm_obj, list, node) { in msm_gem_describe_objects()
1037 struct drm_gem_object *obj = &msm_obj->base; in msm_gem_describe_objects()
1058 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_free_object() local
1064 list_del(&msm_obj->node); in msm_gem_free_object()
1103 GEM_WARN_ON(msm_obj->vaddr); in msm_gem_free_object()
1108 kvfree(msm_obj->pages); in msm_gem_free_object()
1110 drm_prime_gem_destroy(obj, msm_obj->sgt); in msm_gem_free_object()
1116 if (msm_obj->flags & MSM_BO_NO_SHARE) { in msm_gem_free_object()
1126 kfree(msm_obj->metadata); in msm_gem_free_object()
1127 kfree(msm_obj); in msm_gem_free_object()
1132 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_object_mmap() local
1135 vma->vm_page_prot = msm_gem_pgprot(msm_obj, vm_get_page_prot(vma->vm_flags)); in msm_gem_object_mmap()
1175 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_status() local
1178 if (msm_obj->pages) in msm_gem_status()
1181 if (msm_obj->madv == MSM_MADV_DONTNEED) in msm_gem_status()
1213 struct msm_gem_object *msm_obj; in msm_gem_new_impl() local
1229 msm_obj = kzalloc(sizeof(*msm_obj), GFP_KERNEL); in msm_gem_new_impl()
1230 if (!msm_obj) in msm_gem_new_impl()
1233 msm_obj->flags = flags; in msm_gem_new_impl()
1234 msm_obj->madv = MSM_MADV_WILLNEED; in msm_gem_new_impl()
1236 INIT_LIST_HEAD(&msm_obj->node); in msm_gem_new_impl()
1238 *obj = &msm_obj->base; in msm_gem_new_impl()
1247 struct msm_gem_object *msm_obj; in msm_gem_new() local
1263 msm_obj = to_msm_bo(obj); in msm_gem_new()
1279 list_add_tail(&msm_obj->node, &priv->objects); in msm_gem_new()
1297 struct msm_gem_object *msm_obj; in msm_gem_import() local
1312 msm_obj = to_msm_bo(obj); in msm_gem_import()
1314 msm_obj->sgt = sgt; in msm_gem_import()
1315 msm_obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); in msm_gem_import()
1316 if (!msm_obj->pages) { in msm_gem_import()
1322 ret = drm_prime_sg_to_page_array(sgt, msm_obj->pages, npages); in msm_gem_import()
1333 list_add_tail(&msm_obj->node, &priv->objects); in msm_gem_import()
1394 struct msm_gem_object *msm_obj = to_msm_bo(bo); in msm_gem_object_set_name() local
1401 vsnprintf(msm_obj->name, sizeof(msm_obj->name), fmt, ap); in msm_gem_object_set_name()