Lines Matching refs:buf
39 struct vb2_vmalloc_buf *buf; in vb2_vmalloc_alloc() local
41 buf = kzalloc(sizeof(*buf), GFP_KERNEL | gfp_flags); in vb2_vmalloc_alloc()
42 if (!buf) in vb2_vmalloc_alloc()
45 buf->size = size; in vb2_vmalloc_alloc()
46 buf->vaddr = vmalloc_user(buf->size); in vb2_vmalloc_alloc()
47 buf->dma_dir = dma_dir; in vb2_vmalloc_alloc()
48 buf->handler.refcount = &buf->refcount; in vb2_vmalloc_alloc()
49 buf->handler.put = vb2_vmalloc_put; in vb2_vmalloc_alloc()
50 buf->handler.arg = buf; in vb2_vmalloc_alloc()
52 if (!buf->vaddr) { in vb2_vmalloc_alloc()
53 pr_debug("vmalloc of size %ld failed\n", buf->size); in vb2_vmalloc_alloc()
54 kfree(buf); in vb2_vmalloc_alloc()
58 atomic_inc(&buf->refcount); in vb2_vmalloc_alloc()
59 return buf; in vb2_vmalloc_alloc()
64 struct vb2_vmalloc_buf *buf = buf_priv; in vb2_vmalloc_put() local
66 if (atomic_dec_and_test(&buf->refcount)) { in vb2_vmalloc_put()
67 vfree(buf->vaddr); in vb2_vmalloc_put()
68 kfree(buf); in vb2_vmalloc_put()
76 struct vb2_vmalloc_buf *buf; in vb2_vmalloc_get_userptr() local
80 buf = kzalloc(sizeof(*buf), GFP_KERNEL); in vb2_vmalloc_get_userptr()
81 if (!buf) in vb2_vmalloc_get_userptr()
84 buf->dma_dir = dma_dir; in vb2_vmalloc_get_userptr()
86 buf->size = size; in vb2_vmalloc_get_userptr()
90 buf->vec = vec; in vb2_vmalloc_get_userptr()
102 buf->vaddr = (__force void *) in vb2_vmalloc_get_userptr()
105 buf->vaddr = vm_map_ram(frame_vector_pages(vec), n_pages, -1, in vb2_vmalloc_get_userptr()
109 if (!buf->vaddr) in vb2_vmalloc_get_userptr()
111 buf->vaddr += offset; in vb2_vmalloc_get_userptr()
112 return buf; in vb2_vmalloc_get_userptr()
117 kfree(buf); in vb2_vmalloc_get_userptr()
124 struct vb2_vmalloc_buf *buf = buf_priv; in vb2_vmalloc_put_userptr() local
125 unsigned long vaddr = (unsigned long)buf->vaddr & PAGE_MASK; in vb2_vmalloc_put_userptr()
130 if (!buf->vec->is_pfns) { in vb2_vmalloc_put_userptr()
131 n_pages = frame_vector_count(buf->vec); in vb2_vmalloc_put_userptr()
132 pages = frame_vector_pages(buf->vec); in vb2_vmalloc_put_userptr()
135 if (buf->dma_dir == DMA_FROM_DEVICE) in vb2_vmalloc_put_userptr()
139 iounmap((__force void __iomem *)buf->vaddr); in vb2_vmalloc_put_userptr()
141 vb2_destroy_framevec(buf->vec); in vb2_vmalloc_put_userptr()
142 kfree(buf); in vb2_vmalloc_put_userptr()
147 struct vb2_vmalloc_buf *buf = buf_priv; in vb2_vmalloc_vaddr() local
149 if (!buf->vaddr) { in vb2_vmalloc_vaddr()
155 return buf->vaddr; in vb2_vmalloc_vaddr()
160 struct vb2_vmalloc_buf *buf = buf_priv; in vb2_vmalloc_num_users() local
161 return atomic_read(&buf->refcount); in vb2_vmalloc_num_users()
166 struct vb2_vmalloc_buf *buf = buf_priv; in vb2_vmalloc_mmap() local
169 if (!buf) { in vb2_vmalloc_mmap()
174 ret = remap_vmalloc_range(vma, buf->vaddr, 0); in vb2_vmalloc_mmap()
188 vma->vm_private_data = &buf->handler; in vb2_vmalloc_mmap()
210 struct vb2_vmalloc_buf *buf = dbuf->priv; in vb2_vmalloc_dmabuf_ops_attach() local
211 int num_pages = PAGE_ALIGN(buf->size) / PAGE_SIZE; in vb2_vmalloc_dmabuf_ops_attach()
214 void *vaddr = buf->vaddr; in vb2_vmalloc_dmabuf_ops_attach()
319 struct vb2_vmalloc_buf *buf = dbuf->priv; in vb2_vmalloc_dmabuf_ops_kmap() local
321 return buf->vaddr + pgnum * PAGE_SIZE; in vb2_vmalloc_dmabuf_ops_kmap()
326 struct vb2_vmalloc_buf *buf = dbuf->priv; in vb2_vmalloc_dmabuf_ops_vmap() local
328 return buf->vaddr; in vb2_vmalloc_dmabuf_ops_vmap()
351 struct vb2_vmalloc_buf *buf = buf_priv; in vb2_vmalloc_get_dmabuf() local
356 exp_info.size = buf->size; in vb2_vmalloc_get_dmabuf()
358 exp_info.priv = buf; in vb2_vmalloc_get_dmabuf()
360 if (WARN_ON(!buf->vaddr)) in vb2_vmalloc_get_dmabuf()
368 atomic_inc(&buf->refcount); in vb2_vmalloc_get_dmabuf()
381 struct vb2_vmalloc_buf *buf = mem_priv; in vb2_vmalloc_map_dmabuf() local
383 buf->vaddr = dma_buf_vmap(buf->dbuf); in vb2_vmalloc_map_dmabuf()
385 return buf->vaddr ? 0 : -EFAULT; in vb2_vmalloc_map_dmabuf()
390 struct vb2_vmalloc_buf *buf = mem_priv; in vb2_vmalloc_unmap_dmabuf() local
392 dma_buf_vunmap(buf->dbuf, buf->vaddr); in vb2_vmalloc_unmap_dmabuf()
393 buf->vaddr = NULL; in vb2_vmalloc_unmap_dmabuf()
398 struct vb2_vmalloc_buf *buf = mem_priv; in vb2_vmalloc_detach_dmabuf() local
400 if (buf->vaddr) in vb2_vmalloc_detach_dmabuf()
401 dma_buf_vunmap(buf->dbuf, buf->vaddr); in vb2_vmalloc_detach_dmabuf()
403 kfree(buf); in vb2_vmalloc_detach_dmabuf()
409 struct vb2_vmalloc_buf *buf; in vb2_vmalloc_attach_dmabuf() local
414 buf = kzalloc(sizeof(*buf), GFP_KERNEL); in vb2_vmalloc_attach_dmabuf()
415 if (!buf) in vb2_vmalloc_attach_dmabuf()
418 buf->dbuf = dbuf; in vb2_vmalloc_attach_dmabuf()
419 buf->dma_dir = dma_dir; in vb2_vmalloc_attach_dmabuf()
420 buf->size = size; in vb2_vmalloc_attach_dmabuf()
422 return buf; in vb2_vmalloc_attach_dmabuf()