Lines Matching refs:msm_obj

24 	struct msm_gem_object *msm_obj = to_msm_bo(obj);  in physaddr()  local
26 return (((dma_addr_t)msm_obj->vram_node->start) << PAGE_SHIFT) + in physaddr()
32 struct msm_gem_object *msm_obj = to_msm_bo(obj); in use_pages() local
33 return !msm_obj->vram_node; in use_pages()
50 static void sync_for_device(struct msm_gem_object *msm_obj) in sync_for_device() argument
52 struct device *dev = msm_obj->base.dev->dev; in sync_for_device()
54 dma_map_sgtable(dev, msm_obj->sgt, DMA_BIDIRECTIONAL, 0); in sync_for_device()
57 static void sync_for_cpu(struct msm_gem_object *msm_obj) in sync_for_cpu() argument
59 struct device *dev = msm_obj->base.dev->dev; in sync_for_cpu()
61 dma_unmap_sgtable(dev, msm_obj->sgt, DMA_BIDIRECTIONAL, 0); in sync_for_cpu()
67 struct msm_gem_object *msm_obj = to_msm_bo(obj); in update_lru_active() local
69 GEM_WARN_ON(!msm_obj->pages); in update_lru_active()
71 if (msm_obj->pin_count) { in update_lru_active()
73 } else if (msm_obj->madv == MSM_MADV_WILLNEED) { in update_lru_active()
76 GEM_WARN_ON(msm_obj->madv != MSM_MADV_DONTNEED); in update_lru_active()
85 struct msm_gem_object *msm_obj = to_msm_bo(obj); in update_lru_locked() local
87 msm_gem_assert_locked(&msm_obj->base); in update_lru_locked()
89 if (!msm_obj->pages) { in update_lru_locked()
90 GEM_WARN_ON(msm_obj->pin_count); in update_lru_locked()
110 struct msm_gem_object *msm_obj = to_msm_bo(obj); in get_pages_vram() local
121 ret = drm_mm_insert_node(&priv->vram.mm, msm_obj->vram_node, npages); in get_pages_vram()
139 struct msm_gem_object *msm_obj = to_msm_bo(obj); in get_pages() local
143 if (!msm_obj->pages) { in get_pages()
159 msm_obj->pages = p; in get_pages()
161 msm_obj->sgt = drm_prime_pages_to_sg(obj->dev, p, npages); in get_pages()
162 if (IS_ERR(msm_obj->sgt)) { in get_pages()
163 void *ptr = ERR_CAST(msm_obj->sgt); in get_pages()
166 msm_obj->sgt = NULL; in get_pages()
173 if (msm_obj->flags & MSM_BO_WC) in get_pages()
174 sync_for_device(msm_obj); in get_pages()
179 return msm_obj->pages; in get_pages()
184 struct msm_gem_object *msm_obj = to_msm_bo(obj); in put_pages_vram() local
188 drm_mm_remove_node(msm_obj->vram_node); in put_pages_vram()
191 kvfree(msm_obj->pages); in put_pages_vram()
196 struct msm_gem_object *msm_obj = to_msm_bo(obj); in put_pages() local
198 if (msm_obj->pages) { in put_pages()
199 if (msm_obj->sgt) { in put_pages()
204 if (msm_obj->flags & MSM_BO_WC) in put_pages()
205 sync_for_cpu(msm_obj); in put_pages()
207 sg_free_table(msm_obj->sgt); in put_pages()
208 kfree(msm_obj->sgt); in put_pages()
209 msm_obj->sgt = NULL; in put_pages()
213 drm_gem_put_pages(obj, msm_obj->pages, true, false); in put_pages()
217 msm_obj->pages = NULL; in put_pages()
225 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_pin_pages_locked() local
229 if (GEM_WARN_ON(msm_obj->madv > madv)) { in msm_gem_pin_pages_locked()
231 msm_obj->madv, madv); in msm_gem_pin_pages_locked()
280 static pgprot_t msm_gem_pgprot(struct msm_gem_object *msm_obj, pgprot_t prot) in msm_gem_pgprot() argument
282 if (msm_obj->flags & MSM_BO_WC) in msm_gem_pgprot()
291 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_fault() local
308 if (GEM_WARN_ON(msm_obj->madv != MSM_MADV_WILLNEED)) { in msm_gem_fault()
368 struct msm_gem_object *msm_obj = to_msm_bo(obj); in add_vma() local
377 list_add_tail(&vma->list, &msm_obj->vmas); in add_vma()
385 struct msm_gem_object *msm_obj = to_msm_bo(obj); in lookup_vma() local
390 list_for_each_entry(vma, &msm_obj->vmas, list) { in lookup_vma()
416 struct msm_gem_object *msm_obj = to_msm_bo(obj); in put_iova_spaces() local
421 list_for_each_entry(vma, &msm_obj->vmas, list) { in put_iova_spaces()
434 struct msm_gem_object *msm_obj = to_msm_bo(obj); in put_iova_vmas() local
439 list_for_each_entry_safe(vma, tmp, &msm_obj->vmas, list) { in put_iova_vmas()
477 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_pin_vma_locked() local
481 if (!(msm_obj->flags & MSM_BO_GPU_READONLY)) in msm_gem_pin_vma_locked()
484 if (msm_obj->flags & MSM_BO_MAP_PRIV) in msm_gem_pin_vma_locked()
487 if (msm_obj->flags & MSM_BO_CACHED_COHERENT) in msm_gem_pin_vma_locked()
496 return msm_gem_vma_map(vma, prot, msm_obj->sgt, obj->size); in msm_gem_pin_vma_locked()
502 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_unpin_locked() local
507 msm_obj->pin_count--; in msm_gem_unpin_locked()
508 GEM_WARN_ON(msm_obj->pin_count < 0); in msm_gem_unpin_locked()
521 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_unpin_active() local
523 msm_obj->pin_count--; in msm_gem_unpin_active()
524 GEM_WARN_ON(msm_obj->pin_count < 0); in msm_gem_unpin_active()
697 struct msm_gem_object *msm_obj = to_msm_bo(obj); in get_vaddr() local
718 msm_obj->vmap_count++; in get_vaddr()
720 if (!msm_obj->vaddr) { in get_vaddr()
721 msm_obj->vaddr = vmap(pages, obj->size >> PAGE_SHIFT, in get_vaddr()
722 VM_MAP, msm_gem_pgprot(msm_obj, PAGE_KERNEL)); in get_vaddr()
723 if (msm_obj->vaddr == NULL) { in get_vaddr()
729 return msm_obj->vaddr; in get_vaddr()
732 msm_obj->vmap_count--; in get_vaddr()
766 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_put_vaddr_locked() local
769 GEM_WARN_ON(msm_obj->vmap_count < 1); in msm_gem_put_vaddr_locked()
771 msm_obj->vmap_count--; in msm_gem_put_vaddr_locked()
788 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_madvise() local
794 if (msm_obj->madv != __MSM_MADV_PURGED) in msm_gem_madvise()
795 msm_obj->madv = madv; in msm_gem_madvise()
797 madv = msm_obj->madv; in msm_gem_madvise()
815 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_purge() local
818 GEM_WARN_ON(!is_purgeable(msm_obj)); in msm_gem_purge()
833 msm_obj->madv = __MSM_MADV_PURGED; in msm_gem_purge()
855 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_evict() local
858 GEM_WARN_ON(is_unevictable(msm_obj)); in msm_gem_evict()
870 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_vunmap() local
874 if (!msm_obj->vaddr || GEM_WARN_ON(!is_vunmapable(msm_obj))) in msm_gem_vunmap()
877 vunmap(msm_obj->vaddr); in msm_gem_vunmap()
878 msm_obj->vaddr = NULL; in msm_gem_vunmap()
925 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_describe() local
941 if (msm_obj->pages) { in msm_gem_describe()
946 switch (msm_obj->madv) { in msm_gem_describe()
964 msm_obj->flags, msm_gem_active(obj) ? 'A' : 'I', in msm_gem_describe()
966 off, msm_obj->vaddr); in msm_gem_describe()
968 seq_printf(m, " %08zu %9s %-32s\n", obj->size, madv, msm_obj->name); in msm_gem_describe()
970 if (!list_empty(&msm_obj->vmas)) { in msm_gem_describe()
974 list_for_each_entry(vma, &msm_obj->vmas, list) { in msm_gem_describe()
1007 struct msm_gem_object *msm_obj; in msm_gem_describe_objects() local
1010 list_for_each_entry(msm_obj, list, node) { in msm_gem_describe_objects()
1011 struct drm_gem_object *obj = &msm_obj->base; in msm_gem_describe_objects()
1032 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_free_object() local
1037 list_del(&msm_obj->node); in msm_gem_free_object()
1043 GEM_WARN_ON(msm_obj->vaddr); in msm_gem_free_object()
1048 kvfree(msm_obj->pages); in msm_gem_free_object()
1052 drm_prime_gem_destroy(obj, msm_obj->sgt); in msm_gem_free_object()
1061 kfree(msm_obj); in msm_gem_free_object()
1066 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_object_mmap() local
1069 vma->vm_page_prot = msm_gem_pgprot(msm_obj, vm_get_page_prot(vma->vm_flags)); in msm_gem_object_mmap()
1100 struct msm_gem_object *msm_obj = to_msm_bo(obj); in msm_gem_status() local
1103 if (msm_obj->pages) in msm_gem_status()
1106 if (msm_obj->madv == MSM_MADV_DONTNEED) in msm_gem_status()
1135 struct msm_gem_object *msm_obj; in msm_gem_new_impl() local
1151 msm_obj = kzalloc(sizeof(*msm_obj), GFP_KERNEL); in msm_gem_new_impl()
1152 if (!msm_obj) in msm_gem_new_impl()
1155 msm_obj->flags = flags; in msm_gem_new_impl()
1156 msm_obj->madv = MSM_MADV_WILLNEED; in msm_gem_new_impl()
1158 INIT_LIST_HEAD(&msm_obj->node); in msm_gem_new_impl()
1159 INIT_LIST_HEAD(&msm_obj->vmas); in msm_gem_new_impl()
1161 *obj = &msm_obj->base; in msm_gem_new_impl()
1170 struct msm_gem_object *msm_obj; in msm_gem_new() local
1195 msm_obj = to_msm_bo(obj); in msm_gem_new()
1239 list_add_tail(&msm_obj->node, &priv->objects); in msm_gem_new()
1257 struct msm_gem_object *msm_obj; in msm_gem_import() local
1278 msm_obj = to_msm_bo(obj); in msm_gem_import()
1280 msm_obj->sgt = sgt; in msm_gem_import()
1281 msm_obj->pages = kvmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); in msm_gem_import()
1282 if (!msm_obj->pages) { in msm_gem_import()
1288 ret = drm_prime_sg_to_page_array(sgt, msm_obj->pages, npages); in msm_gem_import()
1299 list_add_tail(&msm_obj->node, &priv->objects); in msm_gem_import()
1361 struct msm_gem_object *msm_obj = to_msm_bo(bo); in msm_gem_object_set_name() local
1368 vsnprintf(msm_obj->name, sizeof(msm_obj->name), fmt, ap); in msm_gem_object_set_name()