Lines Matching refs:buffer
94 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_attach() local
102 table = dup_sg_table(&buffer->sg_table); in system_heap_attach()
112 a->uncached = buffer->uncached; in system_heap_attach()
115 mutex_lock(&buffer->lock); in system_heap_attach()
116 list_add(&a->list, &buffer->attachments); in system_heap_attach()
117 mutex_unlock(&buffer->lock); in system_heap_attach()
125 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_detach() local
128 mutex_lock(&buffer->lock); in system_heap_detach()
130 mutex_unlock(&buffer->lock); in system_heap_detach()
172 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_dma_buf_begin_cpu_access() local
175 mutex_lock(&buffer->lock); in system_heap_dma_buf_begin_cpu_access()
177 if (buffer->vmap_cnt) in system_heap_dma_buf_begin_cpu_access()
178 invalidate_kernel_vmap_range(buffer->vaddr, buffer->len); in system_heap_dma_buf_begin_cpu_access()
180 if (!buffer->uncached) { in system_heap_dma_buf_begin_cpu_access()
181 list_for_each_entry(a, &buffer->attachments, list) { in system_heap_dma_buf_begin_cpu_access()
187 mutex_unlock(&buffer->lock); in system_heap_dma_buf_begin_cpu_access()
195 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_dma_buf_end_cpu_access() local
198 mutex_lock(&buffer->lock); in system_heap_dma_buf_end_cpu_access()
200 if (buffer->vmap_cnt) in system_heap_dma_buf_end_cpu_access()
201 flush_kernel_vmap_range(buffer->vaddr, buffer->len); in system_heap_dma_buf_end_cpu_access()
203 if (!buffer->uncached) { in system_heap_dma_buf_end_cpu_access()
204 list_for_each_entry(a, &buffer->attachments, list) { in system_heap_dma_buf_end_cpu_access()
210 mutex_unlock(&buffer->lock); in system_heap_dma_buf_end_cpu_access()
217 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_mmap() local
218 struct sg_table *table = &buffer->sg_table; in system_heap_mmap()
223 if (buffer->uncached) in system_heap_mmap()
240 static void *system_heap_do_vmap(struct system_heap_buffer *buffer) in system_heap_do_vmap() argument
242 struct sg_table *table = &buffer->sg_table; in system_heap_do_vmap()
243 int npages = PAGE_ALIGN(buffer->len) / PAGE_SIZE; in system_heap_do_vmap()
253 if (buffer->uncached) in system_heap_do_vmap()
272 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_vmap() local
276 mutex_lock(&buffer->lock); in system_heap_vmap()
277 if (buffer->vmap_cnt) { in system_heap_vmap()
278 buffer->vmap_cnt++; in system_heap_vmap()
279 iosys_map_set_vaddr(map, buffer->vaddr); in system_heap_vmap()
283 vaddr = system_heap_do_vmap(buffer); in system_heap_vmap()
289 buffer->vaddr = vaddr; in system_heap_vmap()
290 buffer->vmap_cnt++; in system_heap_vmap()
291 iosys_map_set_vaddr(map, buffer->vaddr); in system_heap_vmap()
293 mutex_unlock(&buffer->lock); in system_heap_vmap()
300 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_vunmap() local
302 mutex_lock(&buffer->lock); in system_heap_vunmap()
303 if (!--buffer->vmap_cnt) { in system_heap_vunmap()
304 vunmap(buffer->vaddr); in system_heap_vunmap()
305 buffer->vaddr = NULL; in system_heap_vunmap()
307 mutex_unlock(&buffer->lock); in system_heap_vunmap()
311 static int system_heap_zero_buffer(struct system_heap_buffer *buffer) in system_heap_zero_buffer() argument
313 struct sg_table *sgt = &buffer->sg_table; in system_heap_zero_buffer()
331 struct system_heap_buffer *buffer = dmabuf->priv; in system_heap_dma_buf_release() local
337 system_heap_zero_buffer(buffer); in system_heap_dma_buf_release()
339 table = &buffer->sg_table; in system_heap_dma_buf_release()
350 kfree(buffer); in system_heap_dma_buf_release()
391 struct system_heap_buffer *buffer; in system_heap_do_allocate() local
402 buffer = kzalloc(sizeof(*buffer), GFP_KERNEL); in system_heap_do_allocate()
403 if (!buffer) in system_heap_do_allocate()
406 INIT_LIST_HEAD(&buffer->attachments); in system_heap_do_allocate()
407 mutex_init(&buffer->lock); in system_heap_do_allocate()
408 buffer->heap = heap; in system_heap_do_allocate()
409 buffer->len = len; in system_heap_do_allocate()
410 buffer->uncached = uncached; in system_heap_do_allocate()
434 table = &buffer->sg_table; in system_heap_do_allocate()
448 exp_info.size = buffer->len; in system_heap_do_allocate()
450 exp_info.priv = buffer; in system_heap_do_allocate()
463 if (buffer->uncached) { in system_heap_do_allocate()
480 kfree(buffer); in system_heap_do_allocate()