From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org, posciak@chromium.org,
m.szyprowski@samsung.com, kyungmin.park@samsung.com,
hverkuil@xs4all.nl, sumit.semwal@linaro.org, robdclark@gmail.com,
daniel.vetter@ffwll.ch, labbott@redhat.com
Subject: [RFC v3 02/14] vb2: Move buffer cache synchronisation to prepare from queue
Date: Thu, 13 Apr 2017 10:57:07 +0300 [thread overview]
Message-ID: <1492070239-21532-3-git-send-email-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <1492070239-21532-1-git-send-email-sakari.ailus@linux.intel.com>
The buffer cache should be synchronised in buffer preparation, not when
the buffer is queued to the device. Fix this.
Mmap buffers do not need cache synchronisation since they are always
coherent.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/v4l2-core/videobuf2-core.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index 8df680d..8bf3369 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -1227,23 +1227,19 @@ static int __prepare_dmabuf(struct vb2_buffer *vb, const void *pb)
static void __enqueue_in_driver(struct vb2_buffer *vb)
{
struct vb2_queue *q = vb->vb2_queue;
- unsigned int plane;
vb->state = VB2_BUF_STATE_ACTIVE;
atomic_inc(&q->owned_by_drv_count);
trace_vb2_buf_queue(q, vb);
- /* sync buffers */
- for (plane = 0; plane < vb->num_planes; ++plane)
- call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
-
call_void_vb_qop(vb, buf_queue, vb);
}
static int __buf_prepare(struct vb2_buffer *vb, const void *pb)
{
struct vb2_queue *q = vb->vb2_queue;
+ unsigned int plane;
int ret;
if (q->error) {
@@ -1268,11 +1264,19 @@ static int __buf_prepare(struct vb2_buffer *vb, const void *pb)
ret = -EINVAL;
}
- if (ret)
+ if (ret) {
dprintk(1, "buffer preparation failed: %d\n", ret);
- vb->state = ret ? VB2_BUF_STATE_DEQUEUED : VB2_BUF_STATE_PREPARED;
+ vb->state = VB2_BUF_STATE_DEQUEUED;
+ return ret;
+ }
- return ret;
+ /* sync buffers */
+ for (plane = 0; plane < vb->num_planes; ++plane)
+ call_void_memop(vb, prepare, vb->planes[plane].mem_priv);
+
+ vb->state = VB2_BUF_STATE_PREPARED;
+
+ return 0;
}
int vb2_core_prepare_buf(struct vb2_queue *q, unsigned int index, void *pb)
--
2.7.4
next prev parent reply other threads:[~2017-04-13 7:57 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-13 7:57 [RFC v3 00/14] vb2: Handle user cache hints, allow drivers to choose cache coherency Sakari Ailus
2017-04-13 7:57 ` [RFC v3 01/14] vb2: Rename confusingly named internal buffer preparation functions Sakari Ailus
2017-04-13 7:57 ` Sakari Ailus [this message]
2017-04-13 7:57 ` [RFC v3 03/14] vb2: Move cache synchronisation from buffer done to dqbuf handler Sakari Ailus
2017-04-13 7:57 ` [RFC v3 04/14] v4l: Unify cache management hint buffer flags Sakari Ailus
2017-04-13 7:57 ` [RFC v3 05/14] vb2: Anticipate queue specific DMA attributes for USERPTR buffers Sakari Ailus
2017-04-13 15:09 ` [RFC v3.1 " Sakari Ailus
2017-04-13 7:57 ` [RFC v3 06/14] vb2: dma-contig: Assign DMA attrs for a buffer unconditionally Sakari Ailus
2017-04-13 7:57 ` [RFC v3 07/14] vb2: dma-contig: Remove redundant sgt_base field Sakari Ailus
2017-04-13 7:57 ` [RFC v3 08/14] vb2: dma-contig: Don't warn on failure in obtaining scatterlist Sakari Ailus
2017-04-13 7:57 ` [RFC v3 09/14] vb2: dma-contig: Move vb2_dc_get_base_sgt() up Sakari Ailus
2017-04-13 7:57 ` [RFC v3 10/14] vb2: dma-contig: Fix DMA attribute and cache management Sakari Ailus
2017-04-13 7:57 ` [RFC v3 11/14] vb2: dma-contig: Add WARN_ON_ONCE() to check for potential bugs Sakari Ailus
2017-04-13 7:57 ` [RFC v3 12/14] vb2: dma-sg: Let drivers decide DMA attrs of MMAP and USERPTR bufs Sakari Ailus
2017-04-13 7:57 ` [RFC v3 13/14] vb2: Don't sync cache for a buffer if so requested Sakari Ailus
2017-04-13 7:57 ` [RFC v3 14/14] vb2: Improve struct vb2_mem_ops documentation; alloc and put are for MMAP Sakari Ailus
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=1492070239-21532-3-git-send-email-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=hverkuil@xs4all.nl \
--cc=kyungmin.park@samsung.com \
--cc=labbott@redhat.com \
--cc=linux-media@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=posciak@chromium.org \
--cc=robdclark@gmail.com \
--cc=sumit.semwal@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox