Lines Matching refs:buffer

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