From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-yb1-f193.google.com ([209.85.219.193]:36822 "EHLO mail-yb1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726826AbeJELbX (ORCPT ); Fri, 5 Oct 2018 07:31:23 -0400 Received: by mail-yb1-f193.google.com with SMTP id 5-v6so4928068ybf.3 for ; Thu, 04 Oct 2018 21:34:28 -0700 (PDT) MIME-Version: 1.0 References: <1494255810-12672-1-git-send-email-sakari.ailus@linux.intel.com> <1494255810-12672-4-git-send-email-sakari.ailus@linux.intel.com> In-Reply-To: <1494255810-12672-4-git-send-email-sakari.ailus@linux.intel.com> From: Tomasz Figa Date: Fri, 5 Oct 2018 13:34:17 +0900 Message-ID: Subject: Re: [RFC v4 03/18] vb2: Move cache synchronisation from buffer done to dqbuf handler To: Sakari Ailus , Hans Verkuil Cc: Linux Media Mailing List , dri-devel , Pawel Osciak , Marek Szyprowski , Kyungmin Park , Sumit Semwal , Rob Clark , Daniel Vetter , labbott@redhat.com, Laurent Pinchart Content-Type: text/plain; charset="UTF-8" Sender: linux-media-owner@vger.kernel.org List-ID: Hi Sakari, Hans, On Tue, May 9, 2017 at 12:05 AM Sakari Ailus wrote: > > The cache synchronisation may be a time consuming operation and thus not > best performed in an interrupt which is a typical context for > vb2_buffer_done() calls. This may consume up to tens of ms on some > machines, depending on the buffer size. > > Signed-off-by: Sakari Ailus > Acked-by: Hans Verkuil > --- > drivers/media/v4l2-core/videobuf2-core.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c > index 8bf3369..e866115 100644 > --- a/drivers/media/v4l2-core/videobuf2-core.c > +++ b/drivers/media/v4l2-core/videobuf2-core.c > @@ -889,7 +889,6 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state) > { > struct vb2_queue *q = vb->vb2_queue; > unsigned long flags; > - unsigned int plane; > > if (WARN_ON(vb->state != VB2_BUF_STATE_ACTIVE)) > return; > @@ -910,10 +909,6 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state) > dprintk(4, "done processing on buffer %d, state: %d\n", > vb->index, state); > > - /* sync buffers */ > - for (plane = 0; plane < vb->num_planes; ++plane) > - call_void_memop(vb, finish, vb->planes[plane].mem_priv); > - > spin_lock_irqsave(&q->done_lock, flags); > if (state == VB2_BUF_STATE_QUEUED || > state == VB2_BUF_STATE_REQUEUEING) { > @@ -1573,6 +1568,10 @@ static void __vb2_dqbuf(struct vb2_buffer *vb) > > vb->state = VB2_BUF_STATE_DEQUEUED; > > + /* sync buffers */ > + for (i = 0; i < vb->num_planes; ++i) > + call_void_memop(vb, finish, vb->planes[i].mem_priv); > + Sorry for digging up this old patch. Posting for reference, in case someone decides to use or take over this patch. This piece of code seems to be executed after queue's .buf_finish() callback. The latter is allowed to access the buffer contents, so it looks like we're breaking it, because it would now access the buffer before the cache is synchronized. Best regards, Tomasz From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomasz Figa Subject: Re: [RFC v4 03/18] vb2: Move cache synchronisation from buffer done to dqbuf handler Date: Fri, 5 Oct 2018 13:34:17 +0900 Message-ID: References: <1494255810-12672-1-git-send-email-sakari.ailus@linux.intel.com> <1494255810-12672-4-git-send-email-sakari.ailus@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb1-xb42.google.com (mail-yb1-xb42.google.com [IPv6:2607:f8b0:4864:20::b42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4350B6E016 for ; Fri, 5 Oct 2018 04:34:29 +0000 (UTC) Received: by mail-yb1-xb42.google.com with SMTP id w7-v6so4917925ybm.7 for ; Thu, 04 Oct 2018 21:34:29 -0700 (PDT) In-Reply-To: <1494255810-12672-4-git-send-email-sakari.ailus@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sakari Ailus , Hans Verkuil Cc: Daniel Vetter , dri-devel , Kyungmin Park , Laurent Pinchart , Linux Media Mailing List , Pawel Osciak , Marek Szyprowski List-Id: dri-devel@lists.freedesktop.org SGkgU2FrYXJpLCBIYW5zLAoKT24gVHVlLCBNYXkgOSwgMjAxNyBhdCAxMjowNSBBTSBTYWthcmkg QWlsdXMKPHNha2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Cj4gVGhlIGNhY2hl IHN5bmNocm9uaXNhdGlvbiBtYXkgYmUgYSB0aW1lIGNvbnN1bWluZyBvcGVyYXRpb24gYW5kIHRo dXMgbm90Cj4gYmVzdCBwZXJmb3JtZWQgaW4gYW4gaW50ZXJydXB0IHdoaWNoIGlzIGEgdHlwaWNh bCBjb250ZXh0IGZvcgo+IHZiMl9idWZmZXJfZG9uZSgpIGNhbGxzLiBUaGlzIG1heSBjb25zdW1l IHVwIHRvIHRlbnMgb2YgbXMgb24gc29tZQo+IG1hY2hpbmVzLCBkZXBlbmRpbmcgb24gdGhlIGJ1 ZmZlciBzaXplLgo+Cj4gU2lnbmVkLW9mZi1ieTogU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNA bGludXguaW50ZWwuY29tPgo+IEFja2VkLWJ5OiBIYW5zIFZlcmt1aWwgPGhhbnMudmVya3VpbEBj aXNjby5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1jb3Jl LmMgfCA5ICsrKystLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVv YnVmMi1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItY29yZS5jCj4g aW5kZXggOGJmMzM2OS4uZTg2NjExNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDIt Y29yZS92aWRlb2J1ZjItY29yZS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdmlk ZW9idWYyLWNvcmUuYwo+IEBAIC04ODksNyArODg5LDYgQEAgdm9pZCB2YjJfYnVmZmVyX2RvbmUo c3RydWN0IHZiMl9idWZmZXIgKnZiLCBlbnVtIHZiMl9idWZmZXJfc3RhdGUgc3RhdGUpCj4gIHsK PiAgICAgICAgIHN0cnVjdCB2YjJfcXVldWUgKnEgPSB2Yi0+dmIyX3F1ZXVlOwo+ICAgICAgICAg dW5zaWduZWQgbG9uZyBmbGFnczsKPiAtICAgICAgIHVuc2lnbmVkIGludCBwbGFuZTsKPgo+ICAg ICAgICAgaWYgKFdBUk5fT04odmItPnN0YXRlICE9IFZCMl9CVUZfU1RBVEVfQUNUSVZFKSkKPiAg ICAgICAgICAgICAgICAgcmV0dXJuOwo+IEBAIC05MTAsMTAgKzkwOSw2IEBAIHZvaWQgdmIyX2J1 ZmZlcl9kb25lKHN0cnVjdCB2YjJfYnVmZmVyICp2YiwgZW51bSB2YjJfYnVmZmVyX3N0YXRlIHN0 YXRlKQo+ICAgICAgICAgZHByaW50ayg0LCAiZG9uZSBwcm9jZXNzaW5nIG9uIGJ1ZmZlciAlZCwg c3RhdGU6ICVkXG4iLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIHZiLT5pbmRleCwgc3RhdGUp Owo+Cj4gLSAgICAgICAvKiBzeW5jIGJ1ZmZlcnMgKi8KPiAtICAgICAgIGZvciAocGxhbmUgPSAw OyBwbGFuZSA8IHZiLT5udW1fcGxhbmVzOyArK3BsYW5lKQo+IC0gICAgICAgICAgICAgICBjYWxs X3ZvaWRfbWVtb3AodmIsIGZpbmlzaCwgdmItPnBsYW5lc1twbGFuZV0ubWVtX3ByaXYpOwo+IC0K PiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZxLT5kb25lX2xvY2ssIGZsYWdzKTsKPiAgICAg ICAgIGlmIChzdGF0ZSA9PSBWQjJfQlVGX1NUQVRFX1FVRVVFRCB8fAo+ICAgICAgICAgICAgIHN0 YXRlID09IFZCMl9CVUZfU1RBVEVfUkVRVUVVRUlORykgewo+IEBAIC0xNTczLDYgKzE1NjgsMTAg QEAgc3RhdGljIHZvaWQgX192YjJfZHFidWYoc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+Cj4gICAg ICAgICB2Yi0+c3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RFUVVFVUVEOwo+Cj4gKyAgICAgICAvKiBz eW5jIGJ1ZmZlcnMgKi8KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCB2Yi0+bnVtX3BsYW5lczsg KytpKQo+ICsgICAgICAgICAgICAgICBjYWxsX3ZvaWRfbWVtb3AodmIsIGZpbmlzaCwgdmItPnBs YW5lc1tpXS5tZW1fcHJpdik7Cj4gKwoKU29ycnkgZm9yIGRpZ2dpbmcgdXAgdGhpcyBvbGQgcGF0 Y2guIFBvc3RpbmcgZm9yIHJlZmVyZW5jZSwgaW4gY2FzZQpzb21lb25lIGRlY2lkZXMgdG8gdXNl IG9yIHRha2Ugb3ZlciB0aGlzIHBhdGNoLgoKVGhpcyBwaWVjZSBvZiBjb2RlIHNlZW1zIHRvIGJl IGV4ZWN1dGVkIGFmdGVyIHF1ZXVlJ3MgLmJ1Zl9maW5pc2goKQpjYWxsYmFjay4gVGhlIGxhdHRl ciBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnRzLCBzbyBpdApsb29rcyBs aWtlIHdlJ3JlIGJyZWFraW5nIGl0LCBiZWNhdXNlIGl0IHdvdWxkIG5vdyBhY2Nlc3MgdGhlIGJ1 ZmZlcgpiZWZvcmUgdGhlIGNhY2hlIGlzIHN5bmNocm9uaXplZC4KCkJlc3QgcmVnYXJkcywKVG9t YXN6Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=