From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 3/8] drm/fence: allow fence waiting to be interrupted by userspace Date: Fri, 15 Apr 2016 09:47:45 +0200 Message-ID: <20160415074745.GO2510@phenom.ffwll.local> References: <1460683781-22535-1-git-send-email-gustavo@padovan.org> <1460683781-22535-4-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 56BCD6EBB3 for ; Fri, 15 Apr 2016 07:47:50 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id l6so3759854wml.3 for ; Fri, 15 Apr 2016 00:47:50 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1460683781-22535-4-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: marcheu@google.com, Daniel Stone , seanpaul@google.com, Daniel Vetter , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Riley Andrews , m.chehab@samsung.com, Gustavo Padovan , John Harrison , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBcHIgMTQsIDIwMTYgYXQgMDY6Mjk6MzZQTSAtMDcwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBJZiB1c2Vyc3BhY2UgaXMgcnVubmluZyBhbiBzeW5jaHJvbm91c2x5IGF0 b21pYyBjb21taXQgYW5kIGludGVycnVwdHMgdGhlCj4gYXRvbWljIG9wZXJhdGlvbiBkdXJpbmcg ZmVuY2Vfd2FpdCgpIGl0IHdpbGwgaGFuZyB1bnRpbCB0aGUgdGltZXIgZXhwaXJlcywKPiBzbyBo ZXJlIHdlIGNoYW5nZSB0aGUgd2FpdCB0byBiZSBpbnRlcnJ1cHRpYmxlIHNvIGl0IHN0b3AgaW1t ZWRpYXRlbHkgd2hlbgo+IHVzZXJzcGFjZSB3YW50cyB0byBxdWl0Lgo+IAo+IFNpZ25lZC1vZmYt Ynk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAyICstCj4gIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4gaW5kZXggN2JmNjc4ZS4uZjg1ZWY4YyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgZHJt X2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZmVuY2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAo+ICAJCVdBUk5fT04oIXBsYW5lLT5zdGF0ZS0+ZmIpOwo+ICAKPiAtCQlmZW5jZV93YWl0KHBs YW5lLT5zdGF0ZS0+ZmVuY2UsIGZhbHNlKTsKPiArCQlmZW5jZV93YWl0KHBsYW5lLT5zdGF0ZS0+ ZmVuY2UsIHRydWUpOwoKWW91IG5lZWQgdG8gcHJvcGFnYXRlIHRoZSBlcnJvciBjb2RlIHdoZW4g YWxsb3dpbmcgdGhlIHdhaXQgdG8gYmUKaW50ZXJydXB0ZWQgLSB3ZSBjYW4ndCBwcm9jZWVkIHdp dGggdGhlIGF0b21pYyB1cGRhdGUgaW4gdGhhdCBjYXNlLCBidXQKbmVlZCB0byBiYWlsIG91dC4g QW5kIHVzZXJzcGFjZSBuZWVkcyB0byByZXN0YXJ0IHRoZSBpb2N0bC4KCkFsc28sIG5lZWRzIGEg dGVzdGNhc2UgSSB0aGluay4KLURhbmllbAoKPiAgCQlmZW5jZV9wdXQocGxhbmUtPnN0YXRlLT5m ZW5jZSk7Cj4gIAkJcGxhbmUtPnN0YXRlLT5mZW5jZSA9IE5VTEw7Cj4gIAl9Cj4gLS0gCj4gMi41 LjUKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752463AbcDOHrw (ORCPT ); Fri, 15 Apr 2016 03:47:52 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36127 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752328AbcDOHru (ORCPT ); Fri, 15 Apr 2016 03:47:50 -0400 Date: Fri, 15 Apr 2016 09:47:45 +0200 From: Daniel Vetter To: Gustavo Padovan Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Riley Andrews , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Maarten Lankhorst , Gustavo Padovan Subject: Re: [RFC 3/8] drm/fence: allow fence waiting to be interrupted by userspace Message-ID: <20160415074745.GO2510@phenom.ffwll.local> Mail-Followup-To: Gustavo Padovan , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Riley Andrews , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Maarten Lankhorst , Gustavo Padovan References: <1460683781-22535-1-git-send-email-gustavo@padovan.org> <1460683781-22535-4-git-send-email-gustavo@padovan.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1460683781-22535-4-git-send-email-gustavo@padovan.org> X-Operating-System: Linux phenom 4.4.0-1-amd64 User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 14, 2016 at 06:29:36PM -0700, Gustavo Padovan wrote: > From: Gustavo Padovan > > If userspace is running an synchronously atomic commit and interrupts the > atomic operation during fence_wait() it will hang until the timer expires, > so here we change the wait to be interruptible so it stop immediately when > userspace wants to quit. > > Signed-off-by: Gustavo Padovan > --- > drivers/gpu/drm/drm_atomic_helper.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 7bf678e..f85ef8c 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -1007,7 +1007,7 @@ void drm_atomic_helper_wait_for_fences(struct drm_device *dev, > > WARN_ON(!plane->state->fb); > > - fence_wait(plane->state->fence, false); > + fence_wait(plane->state->fence, true); You need to propagate the error code when allowing the wait to be interrupted - we can't proceed with the atomic update in that case, but need to bail out. And userspace needs to restart the ioctl. Also, needs a testcase I think. -Daniel > fence_put(plane->state->fence); > plane->state->fence = NULL; > } > -- > 2.5.5 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch