Lines Matching refs:buffer

57 	struct cma_heap_buffer *buffer = dmabuf->priv;  in cma_heap_attach()  local
65 ret = sg_alloc_table_from_pages(&a->table, buffer->pages, in cma_heap_attach()
66 buffer->pagecount, 0, in cma_heap_attach()
67 buffer->pagecount << PAGE_SHIFT, in cma_heap_attach()
80 mutex_lock(&buffer->lock); in cma_heap_attach()
81 list_add(&a->list, &buffer->attachments); in cma_heap_attach()
82 mutex_unlock(&buffer->lock); in cma_heap_attach()
90 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_detach() local
93 mutex_lock(&buffer->lock); in cma_heap_detach()
95 mutex_unlock(&buffer->lock); in cma_heap_detach()
128 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_dma_buf_begin_cpu_access() local
131 mutex_lock(&buffer->lock); in cma_heap_dma_buf_begin_cpu_access()
133 if (buffer->vmap_cnt) in cma_heap_dma_buf_begin_cpu_access()
134 invalidate_kernel_vmap_range(buffer->vaddr, buffer->len); in cma_heap_dma_buf_begin_cpu_access()
136 list_for_each_entry(a, &buffer->attachments, list) { in cma_heap_dma_buf_begin_cpu_access()
141 mutex_unlock(&buffer->lock); in cma_heap_dma_buf_begin_cpu_access()
149 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_dma_buf_end_cpu_access() local
152 mutex_lock(&buffer->lock); in cma_heap_dma_buf_end_cpu_access()
154 if (buffer->vmap_cnt) in cma_heap_dma_buf_end_cpu_access()
155 flush_kernel_vmap_range(buffer->vaddr, buffer->len); in cma_heap_dma_buf_end_cpu_access()
157 list_for_each_entry(a, &buffer->attachments, list) { in cma_heap_dma_buf_end_cpu_access()
162 mutex_unlock(&buffer->lock); in cma_heap_dma_buf_end_cpu_access()
170 struct cma_heap_buffer *buffer = vma->vm_private_data; in cma_heap_vm_fault() local
172 if (vmf->pgoff >= buffer->pagecount) in cma_heap_vm_fault()
175 return vmf_insert_pfn(vma, vmf->address, page_to_pfn(buffer->pages[vmf->pgoff])); in cma_heap_vm_fault()
184 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_mmap() local
192 vma->vm_private_data = buffer; in cma_heap_mmap()
197 static void *cma_heap_do_vmap(struct cma_heap_buffer *buffer) in cma_heap_do_vmap() argument
201 vaddr = vmap(buffer->pages, buffer->pagecount, VM_MAP, PAGE_KERNEL); in cma_heap_do_vmap()
210 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_vmap() local
214 mutex_lock(&buffer->lock); in cma_heap_vmap()
215 if (buffer->vmap_cnt) { in cma_heap_vmap()
216 buffer->vmap_cnt++; in cma_heap_vmap()
217 iosys_map_set_vaddr(map, buffer->vaddr); in cma_heap_vmap()
221 vaddr = cma_heap_do_vmap(buffer); in cma_heap_vmap()
226 buffer->vaddr = vaddr; in cma_heap_vmap()
227 buffer->vmap_cnt++; in cma_heap_vmap()
228 iosys_map_set_vaddr(map, buffer->vaddr); in cma_heap_vmap()
230 mutex_unlock(&buffer->lock); in cma_heap_vmap()
237 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_vunmap() local
239 mutex_lock(&buffer->lock); in cma_heap_vunmap()
240 if (!--buffer->vmap_cnt) { in cma_heap_vunmap()
241 vunmap(buffer->vaddr); in cma_heap_vunmap()
242 buffer->vaddr = NULL; in cma_heap_vunmap()
244 mutex_unlock(&buffer->lock); in cma_heap_vunmap()
250 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_dma_buf_release() local
251 struct cma_heap *cma_heap = buffer->heap; in cma_heap_dma_buf_release()
253 if (buffer->vmap_cnt > 0) { in cma_heap_dma_buf_release()
255 vunmap(buffer->vaddr); in cma_heap_dma_buf_release()
256 buffer->vaddr = NULL; in cma_heap_dma_buf_release()
260 kfree(buffer->pages); in cma_heap_dma_buf_release()
262 cma_release(cma_heap->cma, buffer->cma_pages, buffer->pagecount); in cma_heap_dma_buf_release()
263 kfree(buffer); in cma_heap_dma_buf_release()
285 struct cma_heap_buffer *buffer; in cma_heap_allocate() local
295 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); in cma_heap_allocate()
296 if (!buffer) in cma_heap_allocate()
299 INIT_LIST_HEAD(&buffer->attachments); in cma_heap_allocate()
300 mutex_init(&buffer->lock); in cma_heap_allocate()
301 buffer->len = size; in cma_heap_allocate()
333 buffer->pages = kmalloc_array(pagecount, sizeof(*buffer->pages), GFP_KERNEL); in cma_heap_allocate()
334 if (!buffer->pages) { in cma_heap_allocate()
340 buffer->pages[pg] = &cma_pages[pg]; in cma_heap_allocate()
342 buffer->cma_pages = cma_pages; in cma_heap_allocate()
343 buffer->heap = cma_heap; in cma_heap_allocate()
344 buffer->pagecount = pagecount; in cma_heap_allocate()
349 exp_info.size = buffer->len; in cma_heap_allocate()
351 exp_info.priv = buffer; in cma_heap_allocate()
360 kfree(buffer->pages); in cma_heap_allocate()
364 kfree(buffer); in cma_heap_allocate()