From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932364AbeEWJeu (ORCPT ); Wed, 23 May 2018 05:34:50 -0400 Received: from mga09.intel.com ([134.134.136.24]:17836 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932408AbeEWJei (ORCPT ); Wed, 23 May 2018 05:34:38 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,432,1520924400"; d="scan'208";a="231059039" Subject: Re: [PATCH v8 3/3] drm: writeback: Add client capability for exposing writeback connectors To: Liviu Dudau , Gustavo Padovan Cc: Sean Paul , Jonathan Corbet , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, David Airlie , Brian Starkey , Alexandru-Cosmin Gheorghe , Eric Anholt , Boris Brezillon , Maxime Ripard , Daniel Stone References: <20180518151743.29937-1-Liviu.Dudau@arm.com> <20180518151743.29937-4-Liviu.Dudau@arm.com> From: Maarten Lankhorst Message-ID: <7d0201a9-8eed-f332-b6cb-241560cd05c4@linux.intel.com> Date: Wed, 23 May 2018 11:34:32 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180518151743.29937-4-Liviu.Dudau@arm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Op 18-05-18 om 17:17 schreef Liviu Dudau: > Due to the fact that writeback connectors behave in a special way > in DRM (they always report being disconnected) we might confuse some > userspace. Add a client capability for writeback connectors that will > filter them out for clients that don't understand the capability. > > Re-requested-by: Sean Paul > Cc: Brian Starkey > Signed-off-by: Liviu Dudau > --- > drivers/gpu/drm/drm_ioctl.c | 7 +++++++ > drivers/gpu/drm/drm_mode_config.c | 5 +++++ > include/drm/drm_file.h | 7 +++++++ > include/uapi/drm/drm.h | 9 +++++++++ > 4 files changed, 28 insertions(+) > > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index af782911c505d..59951ff3e3630 100644 > --- a/drivers/gpu/drm/drm_ioctl.c > +++ b/drivers/gpu/drm/drm_ioctl.c > @@ -325,6 +325,13 @@ drm_setclientcap(struct drm_device *dev, void *data, struct drm_file *file_priv) > file_priv->atomic = req->value; > file_priv->universal_planes = req->value; > break; > + case DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: > + if (!file_priv->atomic || !drm_core_check_feature(dev, DRIVER_ATOMIC)) > + return -EINVAL; Wondering how you can set the atomic cap without DRIVER_ATOMIC. :) That part could be dropped I think. We should probably WARN when trying to create a writeback connector without the DRIVER_ATOMIC cap set. > + if (req->value > 1) > + return -EINVAL; > + file_priv->writeback_connectors = req->value; > + break; > default: > return -EINVAL; > } > diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c > index e5c653357024d..21e353bd3948e 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -145,6 +145,11 @@ int drm_mode_getresources(struct drm_device *dev, void *data, > count = 0; > connector_id = u64_to_user_ptr(card_res->connector_id_ptr); > drm_for_each_connector_iter(connector, &conn_iter) { > + /* only expose writeback connectors if userspace understands them */ > + if (!file_priv->writeback_connectors && > + (connector->connector_type == DRM_MODE_CONNECTOR_WRITEBACK)) > + continue; > + > if (drm_lease_held(file_priv, connector->base.id)) { > if (count < card_res->count_connectors && > put_user(connector->base.id, connector_id + count)) { > diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h > index 5176c3797680c..2a09b3c8965c6 100644 > --- a/include/drm/drm_file.h > +++ b/include/drm/drm_file.h > @@ -181,6 +181,13 @@ struct drm_file { > /** @atomic: True if client understands atomic properties. */ > unsigned atomic:1; > > + /** > + * @writeback_connectors: > + * > + * True if client understands writeback connectors > + */ > + unsigned writeback_connectors:1; > + > /** > * @is_master: > * > diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h > index 6fdff5945c8a0..59f27ea928b42 100644 > --- a/include/uapi/drm/drm.h > +++ b/include/uapi/drm/drm.h > @@ -680,6 +680,15 @@ struct drm_get_cap { > */ > #define DRM_CLIENT_CAP_ATOMIC 3 > > +/** > + * DRM_CLIENT_CAP_WRITEBACK_CONNECTORS > + * > + * If set to 1, the DRM core will expose special connectors to be used for > + * writing back to memory the scene setup in the commit. Depends on client > + * also supporting DRM_CLIENT_CAP_ATOMIC > + */ > +#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 4 > + > /** DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */ > struct drm_set_client_cap { > __u64 capability; ~Maarten From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v8 3/3] drm: writeback: Add client capability for exposing writeback connectors Date: Wed, 23 May 2018 11:34:32 +0200 Message-ID: <7d0201a9-8eed-f332-b6cb-241560cd05c4@linux.intel.com> References: <20180518151743.29937-1-Liviu.Dudau@arm.com> <20180518151743.29937-4-Liviu.Dudau@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8B87A6E426 for ; Wed, 23 May 2018 09:34:37 +0000 (UTC) In-Reply-To: <20180518151743.29937-4-Liviu.Dudau@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau , Gustavo Padovan Cc: Maxime Ripard , Daniel Stone , Jonathan Corbet , David Airlie , Boris Brezillon , Alexandru-Cosmin Gheorghe , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T3AgMTgtMDUtMTggb20gMTc6MTcgc2NocmVlZiBMaXZpdSBEdWRhdToKPiBEdWUgdG8gdGhlIGZh Y3QgdGhhdCB3cml0ZWJhY2sgY29ubmVjdG9ycyBiZWhhdmUgaW4gYSBzcGVjaWFsIHdheQo+IGlu IERSTSAodGhleSBhbHdheXMgcmVwb3J0IGJlaW5nIGRpc2Nvbm5lY3RlZCkgd2UgbWlnaHQgY29u ZnVzZSBzb21lCj4gdXNlcnNwYWNlLiBBZGQgYSBjbGllbnQgY2FwYWJpbGl0eSBmb3Igd3JpdGVi YWNrIGNvbm5lY3RvcnMgdGhhdCB3aWxsCj4gZmlsdGVyIHRoZW0gb3V0IGZvciBjbGllbnRzIHRo YXQgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgY2FwYWJpbGl0eS4KPgo+IFJlLXJlcXVlc3RlZC1ieTog U2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gQ2M6IEJyaWFuIFN0YXJrZXkgPGJy aWFuLnN0YXJrZXlAYXJtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBMaXZpdSBEdWRhdSA8bGl2aXUu ZHVkYXVAYXJtLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jICAgICAg IHwgNyArKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYyB8IDUgKysr KysKPiAgaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCAgICAgICAgICAgIHwgNyArKysrKysrCj4gIGlu Y2x1ZGUvdWFwaS9kcm0vZHJtLmggICAgICAgICAgICB8IDkgKysrKysrKysrCj4gIDQgZmlsZXMg Y2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1faW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwo+IGluZGV4IGFmNzgy OTExYzUwNWQuLjU5OTUxZmYzZTM2MzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9pb2N0bC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCj4gQEAgLTMyNSw2 ICszMjUsMTMgQEAgZHJtX3NldGNsaWVudGNhcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPiAgCQlmaWxlX3ByaXYtPmF0b21p YyA9IHJlcS0+dmFsdWU7Cj4gIAkJZmlsZV9wcml2LT51bml2ZXJzYWxfcGxhbmVzID0gcmVxLT52 YWx1ZTsKPiAgCQlicmVhazsKPiArCWNhc2UgRFJNX0NMSUVOVF9DQVBfV1JJVEVCQUNLX0NPTk5F Q1RPUlM6Cj4gKwkJaWYgKCFmaWxlX3ByaXYtPmF0b21pYyB8fCAhZHJtX2NvcmVfY2hlY2tfZmVh dHVyZShkZXYsIERSSVZFUl9BVE9NSUMpKQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKV29uZGVyaW5n IGhvdyB5b3UgY2FuIHNldCB0aGUgYXRvbWljIGNhcCB3aXRob3V0IERSSVZFUl9BVE9NSUMuIDop CgpUaGF0IHBhcnQgY291bGQgYmUgZHJvcHBlZCBJIHRoaW5rLiBXZSBzaG91bGQgcHJvYmFibHkg V0FSTiB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSB3cml0ZWJhY2sgY29ubmVjdG9yIHdpdGhvdXQg dGhlIERSSVZFUl9BVE9NSUMgY2FwIHNldC4KPiArCQlpZiAocmVxLT52YWx1ZSA+IDEpCj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ICsJCWZpbGVfcHJpdi0+d3JpdGViYWNrX2Nvbm5lY3RvcnMgPSBy ZXEtPnZhbHVlOwo+ICsJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4gaW5kZXggZTVjNjUzMzU3MDI0ZC4u MjFlMzUzYmQzOTQ4ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29u ZmlnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPiBAQCAtMTQ1 LDYgKzE0NSwxMSBAQCBpbnQgZHJtX21vZGVfZ2V0cmVzb3VyY2VzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gIAljb3VudCA9IDA7Cj4gIAljb25uZWN0b3JfaWQgPSB1NjRf dG9fdXNlcl9wdHIoY2FyZF9yZXMtPmNvbm5lY3Rvcl9pZF9wdHIpOwo+ICAJZHJtX2Zvcl9lYWNo X2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ICsJCS8qIG9ubHkgZXhw b3NlIHdyaXRlYmFjayBjb25uZWN0b3JzIGlmIHVzZXJzcGFjZSB1bmRlcnN0YW5kcyB0aGVtICov Cj4gKwkJaWYgKCFmaWxlX3ByaXYtPndyaXRlYmFja19jb25uZWN0b3JzICYmCj4gKwkJICAgIChj b25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0sp KQo+ICsJCQljb250aW51ZTsKPiArCj4gIAkJaWYgKGRybV9sZWFzZV9oZWxkKGZpbGVfcHJpdiwg Y29ubmVjdG9yLT5iYXNlLmlkKSkgewo+ICAJCQlpZiAoY291bnQgPCBjYXJkX3Jlcy0+Y291bnRf Y29ubmVjdG9ycyAmJgo+ICAJCQkgICAgcHV0X3VzZXIoY29ubmVjdG9yLT5iYXNlLmlkLCBjb25u ZWN0b3JfaWQgKyBjb3VudCkpIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZpbGUu aCBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKPiBpbmRleCA1MTc2YzM3OTc2ODBjLi4yYTA5YjNj ODk2NWM2IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKPiArKysgYi9pbmNs dWRlL2RybS9kcm1fZmlsZS5oCj4gQEAgLTE4MSw2ICsxODEsMTMgQEAgc3RydWN0IGRybV9maWxl IHsKPiAgCS8qKiBAYXRvbWljOiBUcnVlIGlmIGNsaWVudCB1bmRlcnN0YW5kcyBhdG9taWMgcHJv cGVydGllcy4gKi8KPiAgCXVuc2lnbmVkIGF0b21pYzoxOwo+ICAKPiArCS8qKgo+ICsJICogQHdy aXRlYmFja19jb25uZWN0b3JzOgo+ICsJICoKPiArCSAqIFRydWUgaWYgY2xpZW50IHVuZGVyc3Rh bmRzIHdyaXRlYmFjayBjb25uZWN0b3JzCj4gKwkgKi8KPiArCXVuc2lnbmVkIHdyaXRlYmFja19j b25uZWN0b3JzOjE7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAaXNfbWFzdGVyOgo+ICAJICoKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgK PiBpbmRleCA2ZmRmZjU5NDVjOGEwLi41OWYyN2VhOTI4YjQyIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvdWFwaS9kcm0vZHJtLmgKPiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCj4gQEAgLTY4 MCw2ICs2ODAsMTUgQEAgc3RydWN0IGRybV9nZXRfY2FwIHsKPiAgICovCj4gICNkZWZpbmUgRFJN X0NMSUVOVF9DQVBfQVRPTUlDCTMKPiAgCj4gKy8qKgo+ICsgKiBEUk1fQ0xJRU5UX0NBUF9XUklU RUJBQ0tfQ09OTkVDVE9SUwo+ICsgKgo+ICsgKiBJZiBzZXQgdG8gMSwgdGhlIERSTSBjb3JlIHdp bGwgZXhwb3NlIHNwZWNpYWwgY29ubmVjdG9ycyB0byBiZSB1c2VkIGZvcgo+ICsgKiB3cml0aW5n IGJhY2sgdG8gbWVtb3J5IHRoZSBzY2VuZSBzZXR1cCBpbiB0aGUgY29tbWl0LiBEZXBlbmRzIG9u IGNsaWVudAo+ICsgKiBhbHNvIHN1cHBvcnRpbmcgRFJNX0NMSUVOVF9DQVBfQVRPTUlDCj4gKyAq Lwo+ICsjZGVmaW5lIERSTV9DTElFTlRfQ0FQX1dSSVRFQkFDS19DT05ORUNUT1JTCTQKPiArCj4g IC8qKiBEUk1fSU9DVExfU0VUX0NMSUVOVF9DQVAgaW9jdGwgYXJndW1lbnQgdHlwZSAqLwo+ICBz dHJ1Y3QgZHJtX3NldF9jbGllbnRfY2FwIHsKPiAgCV9fdTY0IGNhcGFiaWxpdHk7Cgp+TWFhcnRl bgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==