From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Intel-gfx] [PATCH 11/11] dma-buf: Do a fast lockless check for poll with timeout=0 Date: Fri, 23 Sep 2016 15:50:44 +0200 Message-ID: <20160923135044.GM3988@dvetter-linux.ger.corp.intel.com> References: <20160829070834.22296-1-chris@chris-wilson.co.uk> <20160829070834.22296-11-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E00B6EA93 for ; Fri, 23 Sep 2016 13:50:49 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id b71so4940733lfg.1 for ; Fri, 23 Sep 2016 06:50:49 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20160829070834.22296-11-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Wilson Cc: linaro-mm-sig@lists.linaro.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBdWcgMjksIDIwMTYgYXQgMDg6MDg6MzRBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEN1cnJlbnRseSB3ZSBpbnN0YWxsIGEgY2FsbGJhY2sgZm9yIHBlcmZvcm1pbmcgcG9s bCBvbiBhIGRtYS1idWYsCj4gaXJyZXNwZWN0aXZlIG9mIHRoZSB0aW1lb3V0LiBUaGlzIGludm9s dmVzIHRha2luZyBhIHNwaW5sb2NrLCBhcyB3ZWxsIGFzCj4gdW5uZWNlc3Nhcnkgd29yaywgYW5k IGdyZWF0bHkgcmVkdWNlcyBzY2FsaW5nIG9mIHBvbGwoLnRpbWVvdXQ9MCkgYWNyb3NzCj4gbXVs dGlwbGUgdGhyZWFkcy4KPiAKPiBXZSBjYW4gcXVlcnkgd2hldGhlciB0aGUgcG9sbCB3aWxsIGJs b2NrIHByaW9yIHRvIGluc3RhbGxpbmcgdGhlCj4gY2FsbGJhY2sgdG8gbWFrZSB0aGUgYnVzeS1x dWVyeSBmYXN0Lgo+IAo+IFNpbmdsZSB0aHJlYWQ6IDYwJSBmYXN0ZXIKPiA4IHRocmVhZHMgb24g NCAoKzQgSFQpIGNvcmVzOiA2MDAlIGZhc3Rlcgo+IAo+IFN0aWxsIG5vdCBxdWl0ZSB0aGUgcGVy ZmVjdCBzY2FsaW5nIHdlIGdldCB3aXRoIGEgbmF0aXZlIGJ1c3kgaW9jdGwsIGJ1dAo+IHBvbGwo ZG1hYnVmKSBpcyBmYXN0ZXIgZHVlIHRvIHRoZSBxdWlja2VyIGxvb2t1cCBvZiB0aGUgb2JqZWN0 IGFuZAo+IGF2b2lkaW5nIGRybV9pb2N0bCgpLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBTdW1pdCBTZW13YWwgPHN1bWl0 LnNlbXdhbEBsaW5hcm8ub3JnPgo+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKPiBD YzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IENjOiBsaW5hcm8tbW0tc2lnQGxp c3RzLmxpbmFyby5vcmcKPiBSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRl ckBmZndsbC5jaD4KCk5lZWQgdG8gc3RyaWtlIHRoZSByLWIgaGVyZSwgc2luY2UgQ2hyaXN0aWFu IEvDtm5pZyBwb2ludGVkIG91dCB0aGF0Cm9iamVjdHMgd29uJ3QgbWFnaWNhbGx5IHN3aXRjaCBz aWduYWxsaW5nIG9uLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5j IHwgMTIgKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1i dWYvZG1hLWJ1Zi5jCj4gaW5kZXggY2YwNGQyNDlhNmE0Li5jN2E3YmM1Nzk5NDEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMKPiBAQCAtMTU2LDYgKzE1NiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRtYV9i dWZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqcG9sbCkKPiAgCWlmICghZXZl bnRzKQo+ICAJCXJldHVybiAwOwo+ICAKPiArCWlmIChwb2xsX2RvZXNfbm90X3dhaXQocG9sbCkp IHsKPiArCQlpZiAoZXZlbnRzICYgUE9MTE9VVCAmJgo+ICsJCSAgICAhcmVzZXJ2YXRpb25fb2Jq ZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KHJlc3YsIHRydWUpKQo+ICsJCQlldmVudHMgJj0gfihQT0xM T1VUIHwgUE9MTElOKTsKPiArCj4gKwkJaWYgKGV2ZW50cyAmIFBPTExJTiAmJgo+ICsJCSAgICAh cmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KHJlc3YsIGZhbHNlKSkKPiArCQkJ ZXZlbnRzICY9IH5QT0xMSU47Cj4gKwo+ICsJCXJldHVybiBldmVudHM7Cj4gKwl9Cj4gKwo+ICBy ZXRyeToKPiAgCXNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJnJlc3YtPnNlcSk7Cj4gIAlyY3Vf cmVhZF9sb2NrKCk7Cj4gLS0gCj4gMi45LjMKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-lf0-f65.google.com ([209.85.215.65]:36693 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1034605AbcIWNut (ORCPT ); Fri, 23 Sep 2016 09:50:49 -0400 Received: by mail-lf0-f65.google.com with SMTP id s29so5759515lfg.3 for ; Fri, 23 Sep 2016 06:50:48 -0700 (PDT) Date: Fri, 23 Sep 2016 15:50:44 +0200 From: Daniel Vetter To: Chris Wilson Cc: dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, intel-gfx@lists.freedesktop.org, linux-media@vger.kernel.org, Sumit Semwal Subject: Re: [Intel-gfx] [PATCH 11/11] dma-buf: Do a fast lockless check for poll with timeout=0 Message-ID: <20160923135044.GM3988@dvetter-linux.ger.corp.intel.com> References: <20160829070834.22296-1-chris@chris-wilson.co.uk> <20160829070834.22296-11-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160829070834.22296-11-chris@chris-wilson.co.uk> Sender: linux-media-owner@vger.kernel.org List-ID: On Mon, Aug 29, 2016 at 08:08:34AM +0100, Chris Wilson wrote: > Currently we install a callback for performing poll on a dma-buf, > irrespective of the timeout. This involves taking a spinlock, as well as > unnecessary work, and greatly reduces scaling of poll(.timeout=0) across > multiple threads. > > We can query whether the poll will block prior to installing the > callback to make the busy-query fast. > > Single thread: 60% faster > 8 threads on 4 (+4 HT) cores: 600% faster > > Still not quite the perfect scaling we get with a native busy ioctl, but > poll(dmabuf) is faster due to the quicker lookup of the object and > avoiding drm_ioctl(). > > Signed-off-by: Chris Wilson > Cc: Sumit Semwal > Cc: linux-media@vger.kernel.org > Cc: dri-devel@lists.freedesktop.org > Cc: linaro-mm-sig@lists.linaro.org > Reviewed-by: Daniel Vetter Need to strike the r-b here, since Christian König pointed out that objects won't magically switch signalling on. -Daniel > --- > drivers/dma-buf/dma-buf.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c > index cf04d249a6a4..c7a7bc579941 100644 > --- a/drivers/dma-buf/dma-buf.c > +++ b/drivers/dma-buf/dma-buf.c > @@ -156,6 +156,18 @@ static unsigned int dma_buf_poll(struct file *file, poll_table *poll) > if (!events) > return 0; > > + if (poll_does_not_wait(poll)) { > + if (events & POLLOUT && > + !reservation_object_test_signaled_rcu(resv, true)) > + events &= ~(POLLOUT | POLLIN); > + > + if (events & POLLIN && > + !reservation_object_test_signaled_rcu(resv, false)) > + events &= ~POLLIN; > + > + return events; > + } > + > retry: > seq = read_seqcount_begin(&resv->seq); > rcu_read_lock(); > -- > 2.9.3 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch