From: Mauro Carvalho Chehab <mchehab@redhat.com>
To: Tomasz Stanislawski <t.stanislaws@samsung.com>
Cc: linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org,
sumit.semwal@ti.com, jesse.barker@linaro.org, rob@ti.com,
daniel@ffwll.ch, m.szyprowski@samsung.com,
kyungmin.park@samsung.com, hverkuil@xs4all.nl,
laurent.pinchart@ideasonboard.com, pawel@osciak.com
Subject: Re: [PATCH 07/10] v4l: vb2: remove dma-contig allocator
Date: Mon, 23 Jan 2012 12:24:52 -0200 [thread overview]
Message-ID: <4F1D6DB4.60904@redhat.com> (raw)
In-Reply-To: <1327326675-8431-8-git-send-email-t.stanislaws@samsung.com>
Em 23-01-2012 11:51, Tomasz Stanislawski escreveu:
> This is temporary patch. The dma-contig changes were significant
> and the difference patch would be very difficult to read.
NACK.
This breaks git bisect.
>
> Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
> drivers/media/video/videobuf2-dma-contig.c | 308 ----------------------------
> 1 files changed, 0 insertions(+), 308 deletions(-)
> delete mode 100644 drivers/media/video/videobuf2-dma-contig.c
>
> diff --git a/drivers/media/video/videobuf2-dma-contig.c b/drivers/media/video/videobuf2-dma-contig.c
> deleted file mode 100644
> index ea2699f..0000000
> --- a/drivers/media/video/videobuf2-dma-contig.c
> +++ /dev/null
> @@ -1,308 +0,0 @@
> -/*
> - * videobuf2-dma-contig.c - DMA contig memory allocator for videobuf2
> - *
> - * Copyright (C) 2010 Samsung Electronics
> - *
> - * Author: Pawel Osciak <pawel@osciak.com>
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation.
> - */
> -
> -#include <linux/module.h>
> -#include <linux/slab.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/scatterlist.h>
> -#include <linux/dma-buf.h>
> -
> -#include <media/videobuf2-core.h>
> -#include <media/videobuf2-memops.h>
> -
> -struct vb2_dc_conf {
> - struct device *dev;
> -};
> -
> -struct vb2_dc_buf {
> - struct vb2_dc_conf *conf;
> - void *vaddr;
> - dma_addr_t dma_addr;
> - unsigned long size;
> - struct vm_area_struct *vma;
> - struct dma_buf_attachment *db_attach;
> - atomic_t refcount;
> - struct vb2_vmarea_handler handler;
> -};
> -
> -static void vb2_dma_contig_put(void *buf_priv);
> -
> -static void *vb2_dma_contig_alloc(void *alloc_ctx, unsigned long size)
> -{
> - struct vb2_dc_conf *conf = alloc_ctx;
> - struct vb2_dc_buf *buf;
> - /* TODO: add db_attach processing while adding DMABUF as exporter */
> -
> - buf = kzalloc(sizeof *buf, GFP_KERNEL);
> - if (!buf)
> - return ERR_PTR(-ENOMEM);
> -
> - buf->vaddr = dma_alloc_coherent(conf->dev, size, &buf->dma_addr,
> - GFP_KERNEL);
> - if (!buf->vaddr) {
> - dev_err(conf->dev, "dma_alloc_coherent of size %ld failed\n",
> - size);
> - kfree(buf);
> - return ERR_PTR(-ENOMEM);
> - }
> -
> - buf->conf = conf;
> - buf->size = size;
> -
> - buf->handler.refcount = &buf->refcount;
> - buf->handler.put = vb2_dma_contig_put;
> - buf->handler.arg = buf;
> -
> - atomic_inc(&buf->refcount);
> -
> - return buf;
> -}
> -
> -static void vb2_dma_contig_put(void *buf_priv)
> -{
> - struct vb2_dc_buf *buf = buf_priv;
> -
> - if (atomic_dec_and_test(&buf->refcount)) {
> - dma_free_coherent(buf->conf->dev, buf->size, buf->vaddr,
> - buf->dma_addr);
> - kfree(buf);
> - }
> -}
> -
> -static void *vb2_dma_contig_cookie(void *buf_priv)
> -{
> - struct vb2_dc_buf *buf = buf_priv;
> -
> - return &buf->dma_addr;
> -}
> -
> -static void *vb2_dma_contig_vaddr(void *buf_priv)
> -{
> - struct vb2_dc_buf *buf = buf_priv;
> - if (!buf)
> - return 0;
> -
> - return buf->vaddr;
> -}
> -
> -static unsigned int vb2_dma_contig_num_users(void *buf_priv)
> -{
> - struct vb2_dc_buf *buf = buf_priv;
> -
> - return atomic_read(&buf->refcount);
> -}
> -
> -static int vb2_dma_contig_mmap(void *buf_priv, struct vm_area_struct *vma)
> -{
> - struct vb2_dc_buf *buf = buf_priv;
> -
> - if (!buf) {
> - printk(KERN_ERR "No buffer to map\n");
> - return -EINVAL;
> - }
> -
> - return vb2_mmap_pfn_range(vma, buf->dma_addr, buf->size,
> - &vb2_common_vm_ops, &buf->handler);
> -}
> -
> -static void *vb2_dma_contig_get_userptr(void *alloc_ctx, unsigned long vaddr,
> - unsigned long size, int write)
> -{
> - struct vb2_dc_buf *buf;
> - struct vm_area_struct *vma;
> - dma_addr_t dma_addr = 0;
> - int ret;
> -
> - buf = kzalloc(sizeof *buf, GFP_KERNEL);
> - if (!buf)
> - return ERR_PTR(-ENOMEM);
> -
> - ret = vb2_get_contig_userptr(vaddr, size, &vma, &dma_addr);
> - if (ret) {
> - printk(KERN_ERR "Failed acquiring VMA for vaddr 0x%08lx\n",
> - vaddr);
> - kfree(buf);
> - return ERR_PTR(ret);
> - }
> -
> - buf->size = size;
> - buf->dma_addr = dma_addr;
> - buf->vma = vma;
> -
> - return buf;
> -}
> -
> -static void vb2_dma_contig_put_userptr(void *mem_priv)
> -{
> - struct vb2_dc_buf *buf = mem_priv;
> -
> - if (!buf)
> - return;
> -
> - vb2_put_vma(buf->vma);
> - kfree(buf);
> -}
> -
> -static int vb2_dma_contig_map_dmabuf(void *mem_priv,
> - enum dma_data_direction direction)
> -{
> - struct vb2_dc_buf *buf = mem_priv;
> - struct dma_buf *dmabuf;
> - struct sg_table *sg;
> -
> - if (!buf || !buf->db_attach) {
> - printk(KERN_ERR "No dma buffer to pin\n");
> - return -EINVAL;
> - }
> -
> - WARN_ON(buf->dma_addr);
> -
> - if (direction == DMA_NONE) {
> - printk(KERN_ERR "Incorrect DMA direction\n");
> - return -EINVAL;
> - }
> -
> - dmabuf = buf->db_attach->dmabuf;
> -
> - /* get the associated scatterlist for this buffer */
> - sg = dma_buf_map_attachment(buf->db_attach, direction);
> -
> - if (!sg) {
> - printk(KERN_ERR "Error getting dmabuf scatterlist\n");
> - return -EINVAL;
> - }
> -
> - /*
> - * convert sglist to paddr:
> - * Assumption: for dma-contig, dmabuf would map to single entry
> - * Will return an error if it has more than one.
> - */
> - if (sg->nents > 1) {
> - printk(KERN_ERR
> - "dmabuf scatterlist has more than 1 entry\n");
> - return -EINVAL;
> - }
> -
> - buf->dma_addr = sg_dma_address(sg->sgl);
> - /* TODO: check the buffer size as per S_FMT */
> - buf->size = sg_dma_len(sg->sgl);
> -
> - /* save this scatterlist in dmabuf for put_scatterlist */
> - dmabuf->priv = sg;
> -
> - return 0;
> -}
> -
> -static void vb2_dma_contig_unmap_dmabuf(void *mem_priv)
> -{
> - struct vb2_dc_buf *buf = mem_priv;
> - struct dma_buf *dmabuf;
> - struct sg_table *sg;
> -
> - if (!buf || !buf->db_attach)
> - return;
> -
> - WARN_ON(!buf->dma_addr);
> -
> - dmabuf = buf->db_attach->dmabuf;
> - sg = dmabuf->priv;
> -
> - /* Put the sg for this buffer */
> - dma_buf_unmap_attachment(buf->db_attach, sg);
> -
> - buf->dma_addr = 0;
> - buf->size = 0;
> -}
> -
> -static void *vb2_dma_contig_attach_dmabuf(void *alloc_ctx, struct dma_buf *dbuf)
> -{
> - struct vb2_dc_conf *conf = alloc_ctx;
> - struct vb2_dc_buf *buf;
> - struct dma_buf_attachment *dba;
> -
> - buf = kzalloc(sizeof *buf, GFP_KERNEL);
> - if (!buf)
> - return ERR_PTR(-ENOMEM);
> -
> - /* create attachment for the dmabuf with the user device */
> - dba = dma_buf_attach(dbuf, conf->dev);
> - if (IS_ERR(dba)) {
> - printk(KERN_ERR "failed to attach dmabuf\n");
> - kfree(buf);
> - return dba;
> - }
> -
> - buf->conf = conf;
> - buf->size = dba->dmabuf->size;
> - buf->db_attach = dba;
> - buf->dma_addr = 0; /* dma_addr is available only after map */
> -
> - return buf;
> -}
> -
> -static void vb2_dma_contig_detach_dmabuf(void *mem_priv)
> -{
> - struct vb2_dc_buf *buf = mem_priv;
> -
> - if (!buf)
> - return;
> -
> - if (buf->dma_addr) {
> - vb2_dma_contig_unmap_dmabuf(buf);
> - }
> -
> - /* detach this attachment */
> - dma_buf_detach(buf->db_attach->dmabuf, buf->db_attach);
> - buf->db_attach = NULL;
> -
> - kfree(buf);
> -}
> -
> -const struct vb2_mem_ops vb2_dma_contig_memops = {
> - .alloc = vb2_dma_contig_alloc,
> - .put = vb2_dma_contig_put,
> - .cookie = vb2_dma_contig_cookie,
> - .vaddr = vb2_dma_contig_vaddr,
> - .mmap = vb2_dma_contig_mmap,
> - .get_userptr = vb2_dma_contig_get_userptr,
> - .put_userptr = vb2_dma_contig_put_userptr,
> - .map_dmabuf = vb2_dma_contig_map_dmabuf,
> - .unmap_dmabuf = vb2_dma_contig_unmap_dmabuf,
> - .attach_dmabuf = vb2_dma_contig_attach_dmabuf,
> - .detach_dmabuf = vb2_dma_contig_detach_dmabuf,
> - .num_users = vb2_dma_contig_num_users,
> -};
> -EXPORT_SYMBOL_GPL(vb2_dma_contig_memops);
> -
> -void *vb2_dma_contig_init_ctx(struct device *dev)
> -{
> - struct vb2_dc_conf *conf;
> -
> - conf = kzalloc(sizeof *conf, GFP_KERNEL);
> - if (!conf)
> - return ERR_PTR(-ENOMEM);
> -
> - conf->dev = dev;
> -
> - return conf;
> -}
> -EXPORT_SYMBOL_GPL(vb2_dma_contig_init_ctx);
> -
> -void vb2_dma_contig_cleanup_ctx(void *alloc_ctx)
> -{
> - kfree(alloc_ctx);
> -}
> -EXPORT_SYMBOL_GPL(vb2_dma_contig_cleanup_ctx);
> -
> -MODULE_DESCRIPTION("DMA-contig memory handling routines for videobuf2");
> -MODULE_AUTHOR("Pawel Osciak <pawel@osciak.com>");
> -MODULE_LICENSE("GPL");
next prev parent reply other threads:[~2012-01-23 14:25 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-23 13:51 [PATCH 00/10] Integration of videobuf2 with dmabuf Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 01/10] arm: dma: support for dma_get_pages Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 02/10] [media] media: vb2: remove plane argument from call_memop and cleanup mempriv usage Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 03/10] media: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-02-03 15:42 ` Pawel Osciak
2012-01-23 13:51 ` [PATCH 04/10] v4l: vb2: fixes for DMABUF support Tomasz Stanislawski
2012-01-23 14:22 ` Mauro Carvalho Chehab
2012-01-23 14:32 ` Tomasz Stanislawski
2012-01-23 14:52 ` Mauro Carvalho Chehab
2012-01-23 15:25 ` Tomasz Stanislawski
2012-01-23 16:06 ` Mauro Carvalho Chehab
2012-01-23 16:37 ` Tomasz Stanislawski
2012-01-23 16:51 ` Mauro Carvalho Chehab
2012-01-25 5:35 ` Semwal, Sumit
2012-01-25 10:34 ` Tomasz Stanislawski
2012-01-25 14:09 ` Semwal, Sumit
2012-01-23 13:51 ` [PATCH 05/10] v4l: add buffer exporting via dmabuf Tomasz Stanislawski
2012-01-23 14:32 ` Mauro Carvalho Chehab
2012-01-23 14:37 ` Laurent Pinchart
2012-01-23 14:42 ` Tomasz Stanislawski
2012-01-23 15:04 ` Mauro Carvalho Chehab
2012-01-23 15:56 ` Tomasz Stanislawski
2012-01-23 16:42 ` Mauro Carvalho Chehab
2012-01-23 16:57 ` V4L2 Overlay mode replacement by dma-buf - was: " Mauro Carvalho Chehab
2012-01-24 0:11 ` Clark, Rob
2012-01-24 9:44 ` Laurent Pinchart
2012-01-24 11:07 ` [Linaro-mm-sig] " Subash Patel
2012-01-24 12:06 ` Tomasz Stanislawski
2012-01-27 13:40 ` Subash Patel
2012-01-30 14:16 ` Laurent Pinchart
2012-01-26 9:48 ` Tomasz Stanislawski
2012-02-03 15:47 ` Pawel Osciak
2012-02-03 15:50 ` Pawel Osciak
2012-01-23 13:51 ` [PATCH 06/10] v4l: vb2: " Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 07/10] v4l: vb2: remove dma-contig allocator Tomasz Stanislawski
2012-01-23 14:24 ` Mauro Carvalho Chehab [this message]
2012-01-23 13:51 ` [PATCH 08/10] v4l: vb2-dma-contig: code refactoring, support for DMABUF exporting Tomasz Stanislawski
2012-01-23 14:26 ` Mauro Carvalho Chehab
2012-01-23 14:35 ` Tomasz Stanislawski
2012-01-23 14:43 ` Mauro Carvalho Chehab
2012-01-23 14:35 ` [PATCH] media: vb2-memops: Export vb2_get_vma symbol Laurent Pinchart
2012-01-23 14:44 ` Tomasz Stanislawski
2012-03-21 11:12 ` Laurent Pinchart
2012-01-23 13:51 ` [PATCH 09/10] v4l: fimc: integrate capture i-face with dmabuf Tomasz Stanislawski
2012-01-23 13:51 ` [PATCH 10/10] v4l: s5p-tv: mixer: integrate " Tomasz Stanislawski
2012-01-23 14:37 ` [PATCH 00/10] Integration of videobuf2 " Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F1D6DB4.60904@redhat.com \
--to=mchehab@redhat.com \
--cc=daniel@ffwll.ch \
--cc=hverkuil@xs4all.nl \
--cc=jesse.barker@linaro.org \
--cc=kyungmin.park@samsung.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-media@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=pawel@osciak.com \
--cc=rob@ti.com \
--cc=sumit.semwal@ti.com \
--cc=t.stanislaws@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.