From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Starkey Subject: Re: [PATCH v7 1/3] drm/fence: add in-fences support Date: Tue, 8 Nov 2016 15:27:14 +0000 Message-ID: <20161108152713.GA26065@e106950-lin.cambridge.arm.com> References: <1478588090-8664-1-git-send-email-gustavo@padovan.org> <1478588090-8664-2-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id C6DC86E05A for ; Tue, 8 Nov 2016 15:27:21 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1478588090-8664-2-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 , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, m.chehab@samsung.com, Gustavo Padovan , John Harrison , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org SGkgR3VzdGF2bywKCk9uIFR1ZSwgTm92IDA4LCAyMDE2IGF0IDAzOjU0OjQ4UE0gKzA5MDAsIEd1 c3Rhdm8gUGFkb3ZhbiB3cm90ZToKPkZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRv dmFuQGNvbGxhYm9yYS5jby51az4KPgo+VGhlcmUgaXMgbm93IGEgbmV3IHByb3BlcnR5IGNhbGxl ZCBJTl9GRU5DRV9GRCBhdHRhY2hlZCB0byBldmVyeSBwbGFuZQo+c3RhdGUgdGhhdCByZWNlaXZl cyBzeW5jX2ZpbGUgZmRzIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYXRvbWljIGNvbW1pdAo+SU9D VEwuCj4KPlRoZSBmZCBpcyB0aGVuIHRyYW5zbGF0ZWQgdG8gYSBmZW5jZSAodGhhdCBtYXkgYmUg YSBmZW5jZV9hcnJheQo+c3ViY2xhc3Mgb3IganVzdCBhIG5vcm1hbCBmZW5jZSkgYW5kIHRoZW4g dXNlZCBieSBEUk0gdG8gZmVuY2Vfd2FpdCgpIGZvcgo+YWxsIGZlbmNlcyBpbiB0aGUgc3luY19m aWxlIHRvIHNpZ25hbC4gU28gaXQgb25seSBjb21taXRzIHdoZW4gYWxsCj5mcmFtZWJ1ZmZlcnMg YXJlIHJlYWR5IHRvIHNjYW5vdXQuCj4KPnYyOiBDb21tZW50cyBieSBEYW5pZWwgVmV0dGVyOgo+ CS0gcmVtb3ZlIHNldCBzdGF0ZS0+ZmVuY2UgPSBOVUxMIGluIGRlc3Ryb3kgcGhhc2UKPgktIGFj Y2VwdCBmZW5jZSAtMSBhcyB2YWxpZCBhbmQganVzdCByZXR1cm4gMAo+CS0gZG8gbm90IGNhbGwg ZmVuY2VfZ2V0KCkgLSBzeW5jX2ZpbGVfZmVuY2VzX2dldCgpIGFscmVhZHkgY2FsbHMgaXQKPgkt IGZlbmNlX3B1dCgpIGlmIHN0YXRlLT5mZW5jZSBpcyBhbHJlYWR5IHNldCwgaW4gY2FzZSB1c2Vy c3BhY2UKPglzZXQgdGhlIHByb3BlcnR5IG1vcmUgdGhhbiBvbmNlLgo+Cj52MzogV0FSTl9PTiBp ZiBmZW5jZSBpcyBzZXQgYnV0IHN0YXRlIGhhcyBubyBGQgo+Cj52NDogQ29tbWVudCBmcm9tIE1h YXJ0ZW4gTGFua2hvcnN0Cj4JLSBhbGxvdyBzZXQgZmVuY2Ugd2l0aCBubyByZWxhdGVkIGZiCj4K PnY1OiByZW5hbWUgRkVOQ0VfRkQgdG8gSU5fRkVOQ0VfRkQKPgo+djY6IENvbW1lbnRzIGJ5IERh bmllbCBWZXR0ZXI6Cj4JLSByZW5hbWUgcGxhbmVfc3RhdGUtPmluX2ZlbmNlIGJhY2sgdG8gImZl bmNlIgo+CS0gcmUtaW50cm9kdWNlIFdBUk5fT04gaWYgZmVuY2Ugc2V0IGJ1dCBubyBmYgo+Cj4g ICAgIC0gcmViYXNlIGFmdGVyIGZlbmNlIC0+IGRtYV9mZW5jZSByZW5hbWUKPgo+U2lnbmVkLW9m Zi1ieTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+ LS0tCj4gZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgfCAgMSArCj4gZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCAxNCArKysrKysrKysrKysrKwo+IGRyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgIDMgKysrCj4gZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjLmMgICAgICAgICAgfCAgNiArKysrKysKPiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Bs YW5lLmMgICAgICAgICB8ICAxICsKPiBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAg ICB8ICA1ICsrKysrCj4gNiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCj4KPmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj5pbmRleCA0ODMwNTlhLi40M2NiMzNkIDEwMDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL0tj b25maWcKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj5AQCAtMTIsNiArMTIsNyBAQCBt ZW51Y29uZmlnIERSTQo+IAlzZWxlY3QgSTJDCj4gCXNlbGVjdCBJMkNfQUxHT0JJVAo+IAlzZWxl Y3QgRE1BX1NIQVJFRF9CVUZGRVIKPisJc2VsZWN0IFNZTkNfRklMRQo+IAloZWxwCj4gCSAgS2Vy bmVsLWxldmVsIHN1cHBvcnQgZm9yIHRoZSBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJl IChEUkkpCj4gCSAgaW50cm9kdWNlZCBpbiBYRnJlZTg2IDQuMC4gSWYgeW91IHNheSBZIGhlcmUs IHlvdSBuZWVkIHRvIHNlbGVjdAo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj5pbmRleCA1ZTczOTU0Li5kMWFl NDYzIDEwMDY0NAo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+KysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+QEAgLTMwLDYgKzMwLDcgQEAKPiAjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWMuaD4KPiAjaW5jbHVkZSA8ZHJtL2RybV9tb2RlLmg+Cj4gI2luY2x1ZGUg PGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4rI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgo+ Cj4gI2luY2x1ZGUgImRybV9jcnRjX2ludGVybmFsLmgiCj4KPkBAIC02ODYsNiArNjg3LDE3IEBA IGludCBkcm1fYXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiAJCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZShzdGF0ZSwgZmIpOwo+IAkJaWYgKGZi KQo+IAkJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShmYik7Cj4rCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gY29uZmlnLT5wcm9wX2luX2ZlbmNlX2ZkKSB7Cj4rCQlpZiAoVTY0Mkk2NCh2YWwp ID09IC0xKQo+KwkJCXJldHVybiAwOwo+KwoKU29ycnksIEknbSBhIGJpdCBsYXRlIHRvIGJyaW5n IHRoaXMgdXAgYnV0IHdoYXQncyB0aGUgZXhwZWN0ZWQKYmVoYXZpb3VyIG9mIGEgY29tbWl0IHdo aWNoIHNldHMgT1VUX0ZFTkNFIHR3aWNlIChmaXJzdCB3aXRoIGEgdmFsaWQKZmVuY2UsIHRoZW4g d2l0aCAtMSBsYXRlciBpbiB0aGUgbGlzdCk/IE1heWJlIHlvdSBuZWVkIHRvIGFjdHVhbGx5CmNs ZWFyIHN0YXRlLT5mZW5jZSBmb3IgLTEuCgo+KwkJaWYgKHN0YXRlLT5mZW5jZSkKPisJCQlkbWFf ZmVuY2VfcHV0KHN0YXRlLT5mZW5jZSk7Cj4rCj4rCQlzdGF0ZS0+ZmVuY2UgPSBzeW5jX2ZpbGVf Z2V0X2ZlbmNlKHZhbCk7Cj4rCQlpZiAoIXN0YXRlLT5mZW5jZSkKPisJCQlyZXR1cm4gLUVJTlZB TDsKPisKPiAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfY3J0Y19pZCkgewo+ IAkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZHJtX2NydGNfZmluZChkZXYsIHZhbCk7Cj4gCQly ZXR1cm4gZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfcGxhbmUoc3RhdGUsIGNydGMpOwo+QEAgLTc0 Nyw2ICs3NTksOCBAQCBkcm1fYXRvbWljX3BsYW5lX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPgo+IAlpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2ZiX2lkKSB7Cj4g CQkqdmFsID0gKHN0YXRlLT5mYikgPyBzdGF0ZS0+ZmItPmJhc2UuaWQgOiAwOwo+Kwl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9pbl9mZW5jZV9mZCkgewo+KwkJKnZhbCA9IC0x Owo+IAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX2lkKSB7Cj4gCQkq dmFsID0gKHN0YXRlLT5jcnRjKSA/IHN0YXRlLT5jcnRjLT5iYXNlLmlkIDogMDsKPiAJfSBlbHNl IGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfY3J0Y194KSB7Cj5kaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pY19oZWxwZXIuYwo+aW5kZXggNzVhZDAxZC4uMjZhMDY3ZiAxMDA2NDQKPi0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19oZWxwZXIuYwo+QEAgLTMxMTQsNiArMzExNCw5IEBAIHZvaWQgX19kcm1fYXRvbWlj X2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl KQo+IHsKPiAJaWYgKHN0YXRlLT5mYikKPiAJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShz dGF0ZS0+ZmIpOwo+Kwo+KwlpZiAoc3RhdGUtPmZlbmNlKQo+KwkJZG1hX2ZlbmNlX3B1dChzdGF0 ZS0+ZmVuY2UpOwo+IH0KPiBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVf ZGVzdHJveV9zdGF0ZSk7Cj4KCkl0IGxvb2tzIGxpa2UgeW91IG5lZWQgdG8gYWRkIHNvbWV0aGlu ZyBpbgpfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSgpIHRvIGVpdGhl ciBnZXQgYSByZWZlcmVuY2UKb24gdGhlIGZlbmNlIG9yIHNldCBzdGF0ZS0+ZmVuY2UgPSBOVUxM LCBiZWNhdXNlIHRoZSBtZW1jcHkoKSB0aGVyZQp3aWxsIGNvcHkgdGhlIHBvaW50ZXIuCgpDaGVl cnMsCi1CcmlhbgoKPmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj5pbmRleCAxMzQ0MWUyLi43ODc4YmZkIDEwMDY0NAo+ LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fY3J0Yy5jCj5AQCAtMzk3LDYgKzM5NywxMiBAQCBzdGF0aWMgaW50IGRybV9tb2RlX2NyZWF0 ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gCQlyZXR1cm4g LUVOT01FTTsKPiAJZGV2LT5tb2RlX2NvbmZpZy5wcm9wX2ZiX2lkID0gcHJvcDsKPgo+Kwlwcm9w ID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9zaWduZWRfcmFuZ2UoZGV2LCBEUk1fTU9ERV9QUk9QX0FU T01JQywKPisJCQkiSU5fRkVOQ0VfRkQiLCAtMSwgSU5UX01BWCk7Cj4rCWlmICghcHJvcCkKPisJ CXJldHVybiAtRU5PTUVNOwo+KwlkZXYtPm1vZGVfY29uZmlnLnByb3BfaW5fZmVuY2VfZmQgPSBw cm9wOwo+Kwo+IAlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9vYmplY3QoZGV2LCBEUk1fTU9E RV9QUk9QX0FUT01JQywKPiAJCQkiQ1JUQ19JRCIsIERSTV9NT0RFX09CSkVDVF9DUlRDKTsKPiAJ aWYgKCFwcm9wKQo+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+aW5kZXggMjQ5YzBhZS4uMzk1N2VmOCAxMDA2NDQK Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+KysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9wbGFuZS5jCj5AQCAtMTM3LDYgKzEzNyw3IEBAIGludCBkcm1fdW5pdmVyc2FsX3BsYW5l X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4K PiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfQVRPTUlDKSkgewo+IAkJ ZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBjb25maWctPnByb3BfZmJf aWQsIDApOwo+KwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBjb25m aWctPnByb3BfaW5fZmVuY2VfZmQsIC0xKTsKPiAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5 KCZwbGFuZS0+YmFzZSwgY29uZmlnLT5wcm9wX2NydGNfaWQsIDApOwo+IAkJZHJtX29iamVjdF9h dHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBjb25maWctPnByb3BfY3J0Y194LCAwKTsKPiAJ CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLT5wcm9wX2Ny dGNfeSwgMCk7Cj5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUv ZHJtL2RybV9jcnRjLmgKPmluZGV4IGZhMWFhMjEuLjcxOWI2YTggMTAwNjQ0Cj4tLS0gYS9pbmNs dWRlL2RybS9kcm1fY3J0Yy5oCj4rKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj5AQCAtMTIw MSw2ICsxMjAxLDExIEBAIHN0cnVjdCBkcm1fbW9kZV9jb25maWcgewo+IAkgKi8KPiAJc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJvcF9mYl9pZDsKPiAJLyoqCj4rCSAqIEBwcm9wX2luX2ZlbmNlX2Zk OiBTeW5jIEZpbGUgZmQgcmVwcmVzZW50aW5nIHRoZSBpbmNvbWluZyBmZW5jZXMKPisJICogZm9y IGEgUGxhbmUuCj4rCSAqLwo+KwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX2luX2ZlbmNlX2Zk Owo+KwkvKioKPiAJICogQHByb3BfY3J0Y19pZDogRGVmYXVsdCBhdG9taWMgcGxhbmUgcHJvcGVy dHkgdG8gc3BlY2lmeSB0aGUKPiAJICogJmRybV9jcnRjLgo+IAkgKi8KPi0tIAo+Mi41LjUKPgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753497AbcKHP1X (ORCPT ); Tue, 8 Nov 2016 10:27:23 -0500 Received: from foss.arm.com ([217.140.101.70]:34078 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751453AbcKHP1W (ORCPT ); Tue, 8 Nov 2016 10:27:22 -0500 Date: Tue, 8 Nov 2016 15:27:14 +0000 From: Brian Starkey To: Gustavo Padovan Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Sumit Semwal , Maarten Lankhorst , Gustavo Padovan Subject: Re: [PATCH v7 1/3] drm/fence: add in-fences support Message-ID: <20161108152713.GA26065@e106950-lin.cambridge.arm.com> References: <1478588090-8664-1-git-send-email-gustavo@padovan.org> <1478588090-8664-2-git-send-email-gustavo@padovan.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <1478588090-8664-2-git-send-email-gustavo@padovan.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Gustavo, On Tue, Nov 08, 2016 at 03:54:48PM +0900, Gustavo Padovan wrote: >From: Gustavo Padovan > >There is now a new property called IN_FENCE_FD attached to every plane >state that receives sync_file fds from userspace via the atomic commit >IOCTL. > >The fd is then translated to a fence (that may be a fence_array >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. > >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. > >v3: WARN_ON if fence is set but state has no FB > >v4: Comment from Maarten Lankhorst > - allow set fence with no related fb > >v5: rename FENCE_FD to IN_FENCE_FD > >v6: Comments by Daniel Vetter: > - rename plane_state->in_fence back to "fence" > - re-introduce WARN_ON if fence set but no fb > > - rebase after fence -> dma_fence rename > >Signed-off-by: Gustavo Padovan >--- > 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 | 6 ++++++ > drivers/gpu/drm/drm_plane.c | 1 + > include/drm/drm_crtc.h | 5 +++++ > 6 files changed, 30 insertions(+) > >diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig >index 483059a..43cb33d 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 5e73954..d1ae463 100644 >--- a/drivers/gpu/drm/drm_atomic.c >+++ b/drivers/gpu/drm/drm_atomic.c >@@ -30,6 +30,7 @@ > #include > #include > #include >+#include > > #include "drm_crtc_internal.h" > >@@ -686,6 +687,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_in_fence_fd) { >+ if (U642I64(val) == -1) >+ return 0; >+ Sorry, I'm a bit late to bring this up but what's the expected behaviour of a commit which sets OUT_FENCE twice (first with a valid fence, then with -1 later in the list)? Maybe you need to actually clear state->fence for -1. >+ if (state->fence) >+ dma_fence_put(state->fence); >+ >+ state->fence = sync_file_get_fence(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); >@@ -747,6 +759,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_in_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 75ad01d..26a067f 100644 >--- a/drivers/gpu/drm/drm_atomic_helper.c >+++ b/drivers/gpu/drm/drm_atomic_helper.c >@@ -3114,6 +3114,9 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state) > { > if (state->fb) > drm_framebuffer_unreference(state->fb); >+ >+ if (state->fence) >+ dma_fence_put(state->fence); > } > EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state); > It looks like you need to add something in __drm_atomic_helper_plane_duplicate_state() to either get a reference on the fence or set state->fence = NULL, because the memcpy() there will copy the pointer. Cheers, -Brian >diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c >index 13441e2..7878bfd 100644 >--- a/drivers/gpu/drm/drm_crtc.c >+++ b/drivers/gpu/drm/drm_crtc.c >@@ -397,6 +397,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, >+ "IN_FENCE_FD", -1, INT_MAX); >+ if (!prop) >+ return -ENOMEM; >+ dev->mode_config.prop_in_fence_fd = prop; >+ > prop = drm_property_create_object(dev, DRM_MODE_PROP_ATOMIC, > "CRTC_ID", DRM_MODE_OBJECT_CRTC); > if (!prop) >diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c >index 249c0ae..3957ef8 100644 >--- a/drivers/gpu/drm/drm_plane.c >+++ b/drivers/gpu/drm/drm_plane.c >@@ -137,6 +137,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_in_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); >diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h >index fa1aa21..719b6a8 100644 >--- a/include/drm/drm_crtc.h >+++ b/include/drm/drm_crtc.h >@@ -1201,6 +1201,11 @@ struct drm_mode_config { > */ > struct drm_property *prop_fb_id; > /** >+ * @prop_in_fence_fd: Sync File fd representing the incoming fences >+ * for a Plane. >+ */ >+ struct drm_property *prop_in_fence_fd; >+ /** > * @prop_crtc_id: Default atomic plane property to specify the > * &drm_crtc. > */ >-- >2.5.5 >