• Home
  • Raw
  • Download

Lines Matching refs:buffer

53 	struct cma_heap_buffer *buffer = dmabuf->priv;  in cma_heap_attach()  local
61 ret = sg_alloc_table_from_pages(&a->table, buffer->pages, in cma_heap_attach()
62 buffer->pagecount, 0, in cma_heap_attach()
63 buffer->pagecount << PAGE_SHIFT, in cma_heap_attach()
76 mutex_lock(&buffer->lock); in cma_heap_attach()
77 list_add(&a->list, &buffer->attachments); in cma_heap_attach()
78 mutex_unlock(&buffer->lock); in cma_heap_attach()
86 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_detach() local
89 mutex_lock(&buffer->lock); in cma_heap_detach()
91 mutex_unlock(&buffer->lock); in cma_heap_detach()
126 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_dma_buf_begin_cpu_access() local
129 mutex_lock(&buffer->lock); in cma_heap_dma_buf_begin_cpu_access()
131 if (buffer->vmap_cnt) in cma_heap_dma_buf_begin_cpu_access()
132 invalidate_kernel_vmap_range(buffer->vaddr, buffer->len); in cma_heap_dma_buf_begin_cpu_access()
134 list_for_each_entry(a, &buffer->attachments, list) { in cma_heap_dma_buf_begin_cpu_access()
139 mutex_unlock(&buffer->lock); in cma_heap_dma_buf_begin_cpu_access()
147 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_dma_buf_end_cpu_access() local
150 mutex_lock(&buffer->lock); in cma_heap_dma_buf_end_cpu_access()
152 if (buffer->vmap_cnt) in cma_heap_dma_buf_end_cpu_access()
153 flush_kernel_vmap_range(buffer->vaddr, buffer->len); in cma_heap_dma_buf_end_cpu_access()
155 list_for_each_entry(a, &buffer->attachments, list) { in cma_heap_dma_buf_end_cpu_access()
160 mutex_unlock(&buffer->lock); in cma_heap_dma_buf_end_cpu_access()
168 struct cma_heap_buffer *buffer = vma->vm_private_data; in cma_heap_vm_fault() local
170 if (vmf->pgoff > buffer->pagecount) in cma_heap_vm_fault()
173 vmf->page = buffer->pages[vmf->pgoff]; in cma_heap_vm_fault()
185 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_mmap() local
191 vma->vm_private_data = buffer; in cma_heap_mmap()
196 static void *cma_heap_do_vmap(struct cma_heap_buffer *buffer) in cma_heap_do_vmap() argument
200 vaddr = vmap(buffer->pages, buffer->pagecount, VM_MAP, PAGE_KERNEL); in cma_heap_do_vmap()
209 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_vmap() local
213 mutex_lock(&buffer->lock); in cma_heap_vmap()
214 if (buffer->vmap_cnt) { in cma_heap_vmap()
215 buffer->vmap_cnt++; in cma_heap_vmap()
216 iosys_map_set_vaddr(map, buffer->vaddr); in cma_heap_vmap()
220 vaddr = cma_heap_do_vmap(buffer); in cma_heap_vmap()
225 buffer->vaddr = vaddr; in cma_heap_vmap()
226 buffer->vmap_cnt++; in cma_heap_vmap()
227 iosys_map_set_vaddr(map, buffer->vaddr); in cma_heap_vmap()
229 mutex_unlock(&buffer->lock); in cma_heap_vmap()
236 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_vunmap() local
238 mutex_lock(&buffer->lock); in cma_heap_vunmap()
239 if (!--buffer->vmap_cnt) { in cma_heap_vunmap()
240 vunmap(buffer->vaddr); in cma_heap_vunmap()
241 buffer->vaddr = NULL; in cma_heap_vunmap()
243 mutex_unlock(&buffer->lock); in cma_heap_vunmap()
249 struct cma_heap_buffer *buffer = dmabuf->priv; in cma_heap_dma_buf_release() local
250 struct cma_heap *cma_heap = buffer->heap; in cma_heap_dma_buf_release()
252 if (buffer->vmap_cnt > 0) { in cma_heap_dma_buf_release()
254 vunmap(buffer->vaddr); in cma_heap_dma_buf_release()
255 buffer->vaddr = NULL; in cma_heap_dma_buf_release()
259 kfree(buffer->pages); in cma_heap_dma_buf_release()
261 cma_release(cma_heap->cma, buffer->cma_pages, buffer->pagecount); in cma_heap_dma_buf_release()
262 kfree(buffer); in cma_heap_dma_buf_release()
284 struct cma_heap_buffer *buffer; in cma_heap_allocate() local
294 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); in cma_heap_allocate()
295 if (!buffer) in cma_heap_allocate()
298 INIT_LIST_HEAD(&buffer->attachments); in cma_heap_allocate()
299 mutex_init(&buffer->lock); in cma_heap_allocate()
300 buffer->len = size; in cma_heap_allocate()
332 buffer->pages = kmalloc_array(pagecount, sizeof(*buffer->pages), GFP_KERNEL); in cma_heap_allocate()
333 if (!buffer->pages) { in cma_heap_allocate()
339 buffer->pages[pg] = &cma_pages[pg]; in cma_heap_allocate()
341 buffer->cma_pages = cma_pages; in cma_heap_allocate()
342 buffer->heap = cma_heap; in cma_heap_allocate()
343 buffer->pagecount = pagecount; in cma_heap_allocate()
348 exp_info.size = buffer->len; in cma_heap_allocate()
350 exp_info.priv = buffer; in cma_heap_allocate()
359 kfree(buffer->pages); in cma_heap_allocate()
363 kfree(buffer); in cma_heap_allocate()