From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC v2 5/8] drm/fence: add in-fences support Date: Tue, 26 Apr 2016 13:10:50 +0300 Message-ID: <20160426101050.GN4329@intel.com> References: <1461623608-29538-1-git-send-email-gustavo@padovan.org> <1461623608-29538-6-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id DEE9B6E7A0 for ; Tue, 26 Apr 2016 10:10:55 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1461623608-29538-6-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: devel@driverdev.osuosl.org, Daniel Stone , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Riley Andrews , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Daniel Vetter , Gustavo Padovan , John Harrison List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBcHIgMjUsIDIwMTYgYXQgMDc6MzM6MjVQTSAtMDMwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBUaGVyZSBpcyBub3cgYSBuZXcgcHJvcGVydHkgY2FsbGVkIEZFTkNFX0ZE IGF0dGFjaGVkIHRvIGV2ZXJ5IHBsYW5lCj4gc3RhdGUgdGhhdCByZWNlaXZlcyB0aGUgc3luY19m aWxlIGZkIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYXRvbWljIGNvbW1pdAo+IElPQ1RMLgoKSSBz dGlsbCBkb24ndCBsaWtlIHRoaXMgcHJvcGVydHkgYWJ1c2UuIEFsc28gd2l0aCBhdG9taWMsIGFs bCBwYXNzZWQKZmVuY2VzIG11c3QgYmUgd2FpdGVkIHVwb24gYmVmb3JlIGFueXRoaW5nIGlzIGRv bmUsIHNvIGF0dGFjaGluZyB0aGVtCnRvIHBsYW5lcyBzZWVtcyBsaWtlIGl0IG1pZ2h0IGp1c3Qg Z2l2ZSBwZW9wbGUgdGhlIHdyb25nIGlkZWEuCgo+IAo+IFRoZSBmZCBpcyB0aGVuIHRyYW5zbGF0 ZWQgdG8gYSBmZW5jZSAodGhhdCBtYXkgYmUgYSBmZW5jZV9jb2xsZWN0aW9uCj4gc3ViY2xhc3Mg b3IganVzdCBhIG5vcm1hbCBmZW5jZSkgYW5kIHRoZW4gdXNlZCBieSBEUk0gdG8gZmVuY2Vfd2Fp dCgpIGZvcgo+IGFsbCBmZW5jZXMgaW4gdGhlIHN5bmNfZmlsZSB0byBzaWduYWwuIFNvIGl0IG9u bHkgY29tbWl0cyB3aGVuIGFsbAo+IGZyYW1lYnVmZmVycyBhcmUgcmVhZHkgdG8gc2Nhbm91dC4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xs YWJvcmEuY28udWs+Cj4gCj4gdjI6IENvbW1lbnRzIGJ5IERhbmllbCBWZXR0ZXI6Cj4gCS0gcmVt b3ZlIHNldCBzdGF0ZS0+ZmVuY2UgPSBOVUxMIGluIGRlc3Ryb3kgcGhhc2UKPiAJLSBhY2NlcHQg ZmVuY2UgLTEgYXMgdmFsaWQgYW5kIGp1c3QgcmV0dXJuIDAKPiAJLSBkbyBub3QgY2FsbCBmZW5j ZV9nZXQoKSAtIHN5bmNfZmlsZV9mZW5jZXNfZ2V0KCkgYWxyZWFkeSBjYWxscyBpdAo+IAktIGZl bmNlX3B1dCgpIGlmIHN0YXRlLT5mZW5jZSBpcyBhbHJlYWR5IHNldCwgaW4gY2FzZSB1c2Vyc3Bh Y2UKPiAJc2V0IHRoZSBwcm9wZXJ0eSBtb3JlIHRoYW4gb25jZS4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL0tjb25maWcgICAgICAgICAgICAgfCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMgICAgICAgIHwgMTQgKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMgfCAgMyArKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMg ICAgICAgICAgfCAgNyArKysrKysrCj4gIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAg ICAgIHwgIDEgKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKykKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp Zwo+IGluZGV4IGYyYTc0ZDAuLjNjOTg3ZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IEBAIC0xMiw2ICsxMiw3 IEBAIG1lbnVjb25maWcgRFJNCj4gIAlzZWxlY3QgSTJDCj4gIAlzZWxlY3QgSTJDX0FMR09CSVQK PiAgCXNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUgo+ICsJc2VsZWN0IFNZTkNfRklMRQo+ICAJaGVs cAo+ICAJICBLZXJuZWwtbGV2ZWwgc3VwcG9ydCBmb3IgdGhlIERpcmVjdCBSZW5kZXJpbmcgSW5m cmFzdHJ1Y3R1cmUgKERSSSkKPiAgCSAgaW50cm9kdWNlZCBpbiBYRnJlZTg2IDQuMC4gSWYgeW91 IHNheSBZIGhlcmUsIHlvdSBuZWVkIHRvIHNlbGVjdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IGluZGV4 IDhlZTFkYjguLjEzNjc0YzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9t aWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMzAsNiArMzAs NyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f bW9kZS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiArI2luY2x1ZGUg PGxpbnV4L3N5bmNfZmlsZS5oPgo+ICAKPiAgLyoqCj4gICAqIGRybV9hdG9taWNfc3RhdGVfZGVm YXVsdF9yZWxlYXNlIC0KPiBAQCAtNjgwLDYgKzY4MSwxNyBAQCBpbnQgZHJtX2F0b21pY19wbGFu ZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJZHJtX2F0b21pY19z ZXRfZmJfZm9yX3BsYW5lKHN0YXRlLCBmYik7Cj4gIAkJaWYgKGZiKQo+ICAJCQlkcm1fZnJhbWVi dWZmZXJfdW5yZWZlcmVuY2UoZmIpOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWct PnByb3BfZmVuY2VfZmQpIHsKPiArCQlpZiAoVTY0Mkk2NCh2YWwpID09IC0xKQo+ICsJCQlyZXR1 cm4gMDsKPiArCj4gKwkJaWYgKHN0YXRlLT5mZW5jZSkKPiArCQkJZmVuY2VfcHV0KHN0YXRlLT5m ZW5jZSk7Cj4gKwo+ICsJCXN0YXRlLT5mZW5jZSA9IHN5bmNfZmlsZV9mZW5jZXNfZ2V0KHZhbCk7 Cj4gKwkJaWYgKCFzdGF0ZS0+ZmVuY2UpCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAgCX0g ZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2NydGNfaWQpIHsKPiAgCQlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBkcm1fY3J0Y19maW5kKGRldiwgdmFsKTsKPiAgCQlyZXR1cm4gZHJt X2F0b21pY19zZXRfY3J0Y19mb3JfcGxhbmUoc3RhdGUsIGNydGMpOwo+IEBAIC03MzcsNiArNzQ5 LDggQEAgZHJtX2F0b21pY19wbGFuZV9nZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAo+ICAJaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9mYl9pZCkgewo+ICAJCSp2 YWwgPSAoc3RhdGUtPmZiKSA/IHN0YXRlLT5mYi0+YmFzZS5pZCA6IDA7Cj4gKwl9IGVsc2UgaWYg KHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9mZW5jZV9mZCkgewo+ICsJCSp2YWwgPSAtMTsKPiAg CX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2NydGNfaWQpIHsKPiAgCQkqdmFs ID0gKHN0YXRlLT5jcnRjKSA/IHN0YXRlLT5jcnRjLT5iYXNlLmlkIDogMDsKPiAgCX0gZWxzZSBp ZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2NydGNfeCkgewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gaW5kZXggZjFjZmNjZS4uODY2ZjMzMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4gQEAgLTI2OTYsNiArMjY5Niw5IEBAIHZvaWQgX19kcm1fYXRv bWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICB7Cj4gIAlpZiAoc3RhdGUtPmZiKQo+ICAJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShz dGF0ZS0+ZmIpOwo+ICsKPiArCWlmIChzdGF0ZS0+ZmVuY2UpCj4gKwkJZmVuY2VfcHV0KHN0YXRl LT5mZW5jZSk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX3BsYW5l X2Rlc3Ryb3lfc3RhdGUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9j cnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+IGluZGV4IDU1ZmZkZTUuLjY1MjEy Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+IEBAIC0xMjc4LDYgKzEyNzgsNyBAQCBpbnQgZHJtX3Vu aXZlcnNhbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAKPiAgCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVS X0FUT01JQykpIHsKPiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2Us IGNvbmZpZy0+cHJvcF9mYl9pZCwgMCk7Cj4gKwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHko JnBsYW5lLT5iYXNlLCBjb25maWctPnByb3BfZmVuY2VfZmQsIC0xKTsKPiAgCQlkcm1fb2JqZWN0 X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0+cHJvcF9jcnRjX2lkLCAwKTsK PiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0+cHJv cF9jcnRjX3gsIDApOwo+ICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFz ZSwgY29uZmlnLT5wcm9wX2NydGNfeSwgMCk7Cj4gQEAgLTE1MzMsNiArMTUzNCwxMiBAQCBzdGF0 aWMgaW50IGRybV9tb2RlX2NyZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAlkZXYtPm1vZGVfY29uZmlnLnByb3Bf ZmJfaWQgPSBwcm9wOwo+ICAKPiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3NpZ25lZF9y YW5nZShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDLAo+ICsJCQkiRkVOQ0VfRkQiLCAtMSwgSU5U X01BWCk7Cj4gKwlpZiAoIXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYtPm1vZGVf Y29uZmlnLnByb3BfZmVuY2VfZmQgPSBwcm9wOwo+ICsKPiAgCXByb3AgPSBkcm1fcHJvcGVydHlf Y3JlYXRlX29iamVjdChkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDLAo+ICAJCQkiQ1JUQ19JRCIs IERSTV9NT0RFX09CSkVDVF9DUlRDKTsKPiAgCWlmICghcHJvcCkKPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBpbmRleCA4Y2Iz NzdjLi41YmEzY2RhIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTIxMjIsNiArMjEyMiw3IEBAIHN0cnVjdCBk cm1fbW9kZV9jb25maWcgewo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9jcnRjX3c7Cj4g IAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX2NydGNfaDsKPiAgCXN0cnVjdCBkcm1fcHJvcGVy dHkgKnByb3BfZmJfaWQ7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX2ZlbmNlX2ZkOwo+ ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9jcnRjX2lkOwo+ICAJc3RydWN0IGRybV9wcm9w ZXJ0eSAqcHJvcF9hY3RpdmU7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX21vZGVfaWQ7 Cj4gLS0gCj4gMi41LjUKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752133AbcDZKK6 (ORCPT ); Tue, 26 Apr 2016 06:10:58 -0400 Received: from mga02.intel.com ([134.134.136.20]:14355 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751881AbcDZKK5 (ORCPT ); Tue, 26 Apr 2016 06:10:57 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,536,1455004800"; d="scan'208";a="953094080" Date: Tue, 26 Apr 2016 13:10:50 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Gustavo Padovan Cc: Greg Kroah-Hartman , devel@driverdev.osuosl.org, Daniel Stone , Daniel Vetter , Riley Andrews , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Gustavo Padovan , John Harrison Subject: Re: [RFC v2 5/8] drm/fence: add in-fences support Message-ID: <20160426101050.GN4329@intel.com> References: <1461623608-29538-1-git-send-email-gustavo@padovan.org> <1461623608-29538-6-git-send-email-gustavo@padovan.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1461623608-29538-6-git-send-email-gustavo@padovan.org> 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 Mon, Apr 25, 2016 at 07:33:25PM -0300, Gustavo Padovan wrote: > From: Gustavo Padovan > > There is now a new property called FENCE_FD attached to every plane > state that receives the sync_file fd from userspace via the atomic commit > IOCTL. I still don't like this property abuse. Also with atomic, all passed fences must be waited upon before anything is done, so attaching them to planes seems like it might just give people the wrong idea. > > The fd is then translated to a fence (that may be a fence_collection > subclass or just a normal fence) and then used by DRM to fence_wait() for > all fences in the sync_file to signal. So it only commits when all > framebuffers are ready to scanout. > > Signed-off-by: Gustavo Padovan > > v2: Comments by Daniel Vetter: > - remove set state->fence = NULL in destroy phase > - accept fence -1 as valid and just return 0 > - do not call fence_get() - sync_file_fences_get() already calls it > - fence_put() if state->fence is already set, in case userspace > set the property more than once. > --- > drivers/gpu/drm/Kconfig | 1 + > drivers/gpu/drm/drm_atomic.c | 14 ++++++++++++++ > drivers/gpu/drm/drm_atomic_helper.c | 3 +++ > drivers/gpu/drm/drm_crtc.c | 7 +++++++ > include/drm/drm_crtc.h | 1 + > 5 files changed, 26 insertions(+) > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index f2a74d0..3c987e3 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -12,6 +12,7 @@ menuconfig DRM > select I2C > select I2C_ALGOBIT > select DMA_SHARED_BUFFER > + select SYNC_FILE > help > Kernel-level support for the Direct Rendering Infrastructure (DRI) > introduced in XFree86 4.0. If you say Y here, you need to select > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index 8ee1db8..13674c7 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -30,6 +30,7 @@ > #include > #include > #include > +#include > > /** > * drm_atomic_state_default_release - > @@ -680,6 +681,17 @@ int drm_atomic_plane_set_property(struct drm_plane *plane, > drm_atomic_set_fb_for_plane(state, fb); > if (fb) > drm_framebuffer_unreference(fb); > + } else if (property == config->prop_fence_fd) { > + if (U642I64(val) == -1) > + return 0; > + > + if (state->fence) > + fence_put(state->fence); > + > + state->fence = sync_file_fences_get(val); > + if (!state->fence) > + return -EINVAL; > + > } else if (property == config->prop_crtc_id) { > struct drm_crtc *crtc = drm_crtc_find(dev, val); > return drm_atomic_set_crtc_for_plane(state, crtc); > @@ -737,6 +749,8 @@ drm_atomic_plane_get_property(struct drm_plane *plane, > > if (property == config->prop_fb_id) { > *val = (state->fb) ? state->fb->base.id : 0; > + } else if (property == config->prop_fence_fd) { > + *val = -1; > } else if (property == config->prop_crtc_id) { > *val = (state->crtc) ? state->crtc->base.id : 0; > } else if (property == config->prop_crtc_x) { > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index f1cfcce..866f332 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -2696,6 +2696,9 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane *plane, > { > if (state->fb) > drm_framebuffer_unreference(state->fb); > + > + if (state->fence) > + fence_put(state->fence); > } > EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state); > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 55ffde5..65212ce 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -1278,6 +1278,7 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane, > > if (drm_core_check_feature(dev, DRIVER_ATOMIC)) { > drm_object_attach_property(&plane->base, config->prop_fb_id, 0); > + drm_object_attach_property(&plane->base, config->prop_fence_fd, -1); > drm_object_attach_property(&plane->base, config->prop_crtc_id, 0); > drm_object_attach_property(&plane->base, config->prop_crtc_x, 0); > drm_object_attach_property(&plane->base, config->prop_crtc_y, 0); > @@ -1533,6 +1534,12 @@ static int drm_mode_create_standard_properties(struct drm_device *dev) > return -ENOMEM; > dev->mode_config.prop_fb_id = prop; > > + prop = drm_property_create_signed_range(dev, DRM_MODE_PROP_ATOMIC, > + "FENCE_FD", -1, INT_MAX); > + if (!prop) > + return -ENOMEM; > + dev->mode_config.prop_fence_fd = prop; > + > prop = drm_property_create_object(dev, DRM_MODE_PROP_ATOMIC, > "CRTC_ID", DRM_MODE_OBJECT_CRTC); > if (!prop) > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 8cb377c..5ba3cda 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -2122,6 +2122,7 @@ struct drm_mode_config { > struct drm_property *prop_crtc_w; > struct drm_property *prop_crtc_h; > struct drm_property *prop_fb_id; > + struct drm_property *prop_fence_fd; > struct drm_property *prop_crtc_id; > struct drm_property *prop_active; > struct drm_property *prop_mode_id; > -- > 2.5.5 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel OTC