Lines Matching defs:buffer

53 	struct cma_heap_buffer *buffer = dmabuf->priv;
61 ret = sg_alloc_table_from_pages(&a->table, buffer->pages,
62 buffer->pagecount, 0,
63 buffer->pagecount << PAGE_SHIFT,
76 mutex_lock(&buffer->lock);
77 list_add(&a->list, &buffer->attachments);
78 mutex_unlock(&buffer->lock);
86 struct cma_heap_buffer *buffer = dmabuf->priv;
89 mutex_lock(&buffer->lock);
91 mutex_unlock(&buffer->lock);
124 struct cma_heap_buffer *buffer = dmabuf->priv;
127 mutex_lock(&buffer->lock);
129 if (buffer->vmap_cnt)
130 invalidate_kernel_vmap_range(buffer->vaddr, buffer->len);
132 list_for_each_entry(a, &buffer->attachments, list) {
137 mutex_unlock(&buffer->lock);
145 struct cma_heap_buffer *buffer = dmabuf->priv;
148 mutex_lock(&buffer->lock);
150 if (buffer->vmap_cnt)
151 flush_kernel_vmap_range(buffer->vaddr, buffer->len);
153 list_for_each_entry(a, &buffer->attachments, list) {
158 mutex_unlock(&buffer->lock);
166 struct cma_heap_buffer *buffer = vma->vm_private_data;
168 if (vmf->pgoff > buffer->pagecount)
171 vmf->page = buffer->pages[vmf->pgoff];
183 struct cma_heap_buffer *buffer = dmabuf->priv;
189 vma->vm_private_data = buffer;
194 static void *cma_heap_do_vmap(struct cma_heap_buffer *buffer)
198 vaddr = vmap(buffer->pages, buffer->pagecount, VM_MAP, PAGE_KERNEL);
207 struct cma_heap_buffer *buffer = dmabuf->priv;
211 mutex_lock(&buffer->lock);
212 if (buffer->vmap_cnt) {
213 buffer->vmap_cnt++;
214 iosys_map_set_vaddr(map, buffer->vaddr);
218 vaddr = cma_heap_do_vmap(buffer);
223 buffer->vaddr = vaddr;
224 buffer->vmap_cnt++;
225 iosys_map_set_vaddr(map, buffer->vaddr);
227 mutex_unlock(&buffer->lock);
234 struct cma_heap_buffer *buffer = dmabuf->priv;
236 mutex_lock(&buffer->lock);
237 if (!--buffer->vmap_cnt) {
238 vunmap(buffer->vaddr);
239 buffer->vaddr = NULL;
241 mutex_unlock(&buffer->lock);
247 struct cma_heap_buffer *buffer = dmabuf->priv;
248 struct cma_heap *cma_heap = buffer->heap;
250 if (buffer->vmap_cnt > 0) {
251 WARN(1, "%s: buffer still mapped in the kernel\n", __func__);
252 vunmap(buffer->vaddr);
253 buffer->vaddr = NULL;
257 kfree(buffer->pages);
259 cma_release(cma_heap->cma, buffer->cma_pages, buffer->pagecount);
260 kfree(buffer);
282 struct cma_heap_buffer *buffer;
292 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);
293 if (!buffer)
296 INIT_LIST_HEAD(&buffer->attachments);
297 mutex_init(&buffer->lock);
298 buffer->len = size;
330 buffer->pages = kmalloc_array(pagecount, sizeof(*buffer->pages), GFP_KERNEL);
331 if (!buffer->pages) {
337 buffer->pages[pg] = &cma_pages[pg];
339 buffer->cma_pages = cma_pages;
340 buffer->heap = cma_heap;
341 buffer->pagecount = pagecount;
346 exp_info.size = buffer->len;
348 exp_info.priv = buffer;
357 kfree(buffer->pages);
361 kfree(buffer);