From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC v2 7/8] drm/fence: add fence timeline to drm_crtc Date: Tue, 26 Apr 2016 13:12:00 +0300 Message-ID: <20160426101200.GO4329@intel.com> References: <1461623608-29538-1-git-send-email-gustavo@padovan.org> <1461623608-29538-8-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B64446E798 for ; Tue, 26 Apr 2016 10:12:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1461623608-29538-8-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 T24gTW9uLCBBcHIgMjUsIDIwMTYgYXQgMDc6MzM6MjdQTSAtMDMwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBDcmVhdGUgb25lIHRpbWVsaW5lIGNvbnRleHQgZm9yIGVhY2ggQ1JUQyB0 byBiZSBhYmxlIHRvIGhhbmRsZSBvdXQtZmVuY2VzCj4gYW5kIHNpZ25hbCB0aGVtLiBJdCBhZGRz IGEgZmV3IG1lbWJlcnMgdG8gc3RydWN0IGRybV9jcnRjOiBmZW5jZV9jb250ZXh0LAo+IHdoZXJl IHdlIHN0b3JlIHRoZSBjb250ZXh0IHdlIGdldCBmcm9tIGZlbmNlX2NvbnRleHRfYWxsb2MoKSwg dGhlCj4gZmVuY2Ugc2Vxbm8gYW5kIHRoZSBmZW5jZSBsb2NrLCB0aGF0IHdlIHBhc3MgaW4gZmVu Y2VfaW5pdCgpIHRvIGJlCj4gdXNlZCBieSB0aGUgZmVuY2UuCj4gCj4gU2lnbmVkLW9mZi1ieTog R3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgIHwgMTkgKysrKysrKysrKysrKysr KysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMu Ywo+IGluZGV4IDY1MjEyY2UuLmNmOTc1MGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+IEBAIC02NTks NiArNjU5LDMyIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZHJtX251bV9jcnRjcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIG51bTsKPiAgfQo+ICAKPiArc3RhdGljIGNvbnN0IGNo YXIgKmRybV9jcnRjX2ZlbmNlX2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBmZW5jZV90b19jcnRjKGZlbmNlKTsKPiAr Cj4gKwlyZXR1cm4gY3J0Yy0+ZGV2LT5kcml2ZXItPm5hbWU7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBjaGFyICpkcm1fY3J0Y19mZW5jZV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2Ug KmZlbmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBmZW5jZV90b19jcnRjKGZl bmNlKTsKPiArCj4gKwlyZXR1cm4gY3J0Yy0+bmFtZTsKPiArfQoKSXMgdGhhdCBleHBvcnRlZCB0 byB1c2Vyc3BhY2U/IGNydGMtPm5hbWUgaXMgYW4gaW50ZXJuYWwgdGhpbmcsIG5vdAptZWFudCBm b3Igb3V0c2lkZSBjb25zdW1wdGlvbi4KCj4gKwo+ICtzdGF0aWMgYm9vbCBkcm1fY3J0Y19mZW5j ZV9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBmZW5jZSAqZmVuY2UpCj4gK3sKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIGRybV9jcnRjX2ZlbmNlX29w cyA9IHsKPiArCS5nZXRfZHJpdmVyX25hbWUgPSBkcm1fY3J0Y19mZW5jZV9nZXRfZHJpdmVyX25h bWUsCj4gKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBkcm1fY3J0Y19mZW5jZV9nZXRfdGltZWxpbmVf bmFtZSwKPiArCS5lbmFibGVfc2lnbmFsaW5nID0gZHJtX2NydGNfZmVuY2VfZW5hYmxlX3NpZ25h bGluZywKPiArCS53YWl0ID0gZmVuY2VfZGVmYXVsdF93YWl0LAo+ICt9Owo+ICsKPiAgLyoqCj4g ICAqIGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMgLSBJbml0aWFsaXNlIGEgbmV3IENSVEMgb2Jq ZWN0IHdpdGgKPiAgICogICAgc3BlY2lmaWVkIHByaW1hcnkgYW5kIGN1cnNvciBwbGFuZXMuCj4g QEAgLTcwOSw2ICs3MzUsOSBAQCBpbnQgZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJcmV0dXJuIC1FTk9N RU07Cj4gIAl9Cj4gIAo+ICsJY3J0Yy0+ZmVuY2VfY29udGV4dCA9IGZlbmNlX2NvbnRleHRfYWxs b2MoMSk7Cj4gKwlzcGluX2xvY2tfaW5pdCgmY3J0Yy0+ZmVuY2VfbG9jayk7Cj4gKwo+ICAJY3J0 Yy0+YmFzZS5wcm9wZXJ0aWVzID0gJmNydGMtPnByb3BlcnRpZXM7Cj4gIAo+ICAJbGlzdF9hZGRf dGFpbCgmY3J0Yy0+aGVhZCwgJmNvbmZpZy0+Y3J0Y19saXN0KTsKPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBpbmRleCA1YmEz Y2RhLi5kOGMzMmM4IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTMyLDYgKzMyLDcgQEAKPiAgI2luY2x1ZGUg PGxpbnV4L2ZiLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9oZG1pLmg+Cj4gICNpbmNsdWRlIDxsaW51 eC9tZWRpYS1idXMtZm9ybWF0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9mZW5jZS5oPgo+ICAjaW5j bHVkZSA8dWFwaS9kcm0vZHJtX21vZGUuaD4KPiAgI2luY2x1ZGUgPHVhcGkvZHJtL2RybV9mb3Vy Y2MuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9sb2NrLmg+Cj4gQEAgLTcxNSw2ICs3 MTYsOSBAQCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mgewo+ICAgKiBAaGVscGVyX3ByaXZhdGU6IG1p ZC1sYXllciBwcml2YXRlIGRhdGEKPiAgICogQHByb3BlcnRpZXM6IHByb3BlcnR5IHRyYWNraW5n IGZvciB0aGlzIENSVEMKPiAgICogQHN0YXRlOiBjdXJyZW50IGF0b21pYyBzdGF0ZSBmb3IgdGhp cyBDUlRDCj4gKyAqIEBmZW5jZV9jb250ZXh0OiBjb250ZXh0IGZvciBmZW5jZSBzaWduYWxsaW5n Cj4gKyAqIEBmZW5jZV9sb2NrOiBmZW5jZSBsb2NrIGZvciB0aGUgZmVuY2UgY29udGV4dAo+ICsg KiBAZmVuY2Vfc2Vxbm86IHNlcW5vIHZhcmlhYmxlIHRvIGNyZWF0ZSBmZW5jZXMKPiAgICogQGFj cXVpcmVfY3R4OiBwZXItQ1JUQyBpbXBsaWNpdCBhY3F1aXJlIGNvbnRleHQgdXNlZCBieSBhdG9t aWMgZHJpdmVycyBmb3IKPiAgICogCWxlZ2FjeSBJT0NUTHMKPiAgICoKPiBAQCAtNzcxLDYgKzc3 NSwxMSBAQCBzdHJ1Y3QgZHJtX2NydGMgewo+ICAKPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGU7Cj4gIAo+ICsJLyogZmVuY2UgdGltZWxpbmVzIGluZm8gZm9yIERSTSBvdXQtZmVuY2Vz ICovCj4gKwl1bnNpZ25lZCBpbnQgZmVuY2VfY29udGV4dDsKPiArCXNwaW5sb2NrX3QgZmVuY2Vf bG9jazsKPiArCXVuc2lnbmVkIGxvbmcgZmVuY2Vfc2Vxbm87Cj4gKwo+ICAJLyoKPiAgCSAqIEZv ciBsZWdhY3kgY3J0YyBJT0NUTHMgc28gdGhhdCBhdG9taWMgZHJpdmVycyBjYW4gZ2V0IGF0IHRo ZSBsb2NraW5nCj4gIAkgKiBhY3F1aXJlIGNvbnRleHQuCj4gQEAgLTc3OCw2ICs3ODcsMTYgQEAg c3RydWN0IGRybV9jcnRjIHsKPiAgCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqYWNx dWlyZV9jdHg7Cj4gIH07Cj4gIAo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGZlbmNlX29wcyBkcm1f Y3J0Y19mZW5jZV9vcHM7Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fY3J0YyAqZmVu Y2VfdG9fY3J0YyhzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlpZiAoZmVuY2UtPm9wcyAh PSAmZHJtX2NydGNfZmVuY2Vfb3BzKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXJldHVybiBj b250YWluZXJfb2YoZmVuY2UtPmxvY2ssIHN0cnVjdCBkcm1fY3J0YywgZmVuY2VfbG9jayk7Cj4g K30KPiArCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAtIG11dGFibGUg Y29ubmVjdG9yIHN0YXRlCj4gICAqIEBjb25uZWN0b3I6IGJhY2twb2ludGVyIHRvIHRoZSBjb25u ZWN0b3IKPiAtLSAKPiAyLjUuNQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751101AbcDZKMI (ORCPT ); Tue, 26 Apr 2016 06:12:08 -0400 Received: from mga03.intel.com ([134.134.136.65]:46272 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751870AbcDZKMG (ORCPT ); Tue, 26 Apr 2016 06:12:06 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,536,1455004800"; d="scan'208";a="962894206" Date: Tue, 26 Apr 2016 13:12:00 +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 7/8] drm/fence: add fence timeline to drm_crtc Message-ID: <20160426101200.GO4329@intel.com> References: <1461623608-29538-1-git-send-email-gustavo@padovan.org> <1461623608-29538-8-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-8-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:27PM -0300, Gustavo Padovan wrote: > From: Gustavo Padovan > > Create one timeline context for each CRTC to be able to handle out-fences > and signal them. It adds a few members to struct drm_crtc: fence_context, > where we store the context we get from fence_context_alloc(), the > fence seqno and the fence lock, that we pass in fence_init() to be > used by the fence. > > Signed-off-by: Gustavo Padovan > --- > drivers/gpu/drm/drm_crtc.c | 29 +++++++++++++++++++++++++++++ > include/drm/drm_crtc.h | 19 +++++++++++++++++++ > 2 files changed, 48 insertions(+) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 65212ce..cf9750a 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -659,6 +659,32 @@ static unsigned int drm_num_crtcs(struct drm_device *dev) > return num; > } > > +static const char *drm_crtc_fence_get_driver_name(struct fence *fence) > +{ > + struct drm_crtc *crtc = fence_to_crtc(fence); > + > + return crtc->dev->driver->name; > +} > + > +static const char *drm_crtc_fence_get_timeline_name(struct fence *fence) > +{ > + struct drm_crtc *crtc = fence_to_crtc(fence); > + > + return crtc->name; > +} Is that exported to userspace? crtc->name is an internal thing, not meant for outside consumption. > + > +static bool drm_crtc_fence_enable_signaling(struct fence *fence) > +{ > + return true; > +} > + > +const struct fence_ops drm_crtc_fence_ops = { > + .get_driver_name = drm_crtc_fence_get_driver_name, > + .get_timeline_name = drm_crtc_fence_get_timeline_name, > + .enable_signaling = drm_crtc_fence_enable_signaling, > + .wait = fence_default_wait, > +}; > + > /** > * drm_crtc_init_with_planes - Initialise a new CRTC object with > * specified primary and cursor planes. > @@ -709,6 +735,9 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc, > return -ENOMEM; > } > > + crtc->fence_context = fence_context_alloc(1); > + spin_lock_init(&crtc->fence_lock); > + > crtc->base.properties = &crtc->properties; > > list_add_tail(&crtc->head, &config->crtc_list); > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 5ba3cda..d8c32c8 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -32,6 +32,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -715,6 +716,9 @@ struct drm_crtc_funcs { > * @helper_private: mid-layer private data > * @properties: property tracking for this CRTC > * @state: current atomic state for this CRTC > + * @fence_context: context for fence signalling > + * @fence_lock: fence lock for the fence context > + * @fence_seqno: seqno variable to create fences > * @acquire_ctx: per-CRTC implicit acquire context used by atomic drivers for > * legacy IOCTLs > * > @@ -771,6 +775,11 @@ struct drm_crtc { > > struct drm_crtc_state *state; > > + /* fence timelines info for DRM out-fences */ > + unsigned int fence_context; > + spinlock_t fence_lock; > + unsigned long fence_seqno; > + > /* > * For legacy crtc IOCTLs so that atomic drivers can get at the locking > * acquire context. > @@ -778,6 +787,16 @@ struct drm_crtc { > struct drm_modeset_acquire_ctx *acquire_ctx; > }; > > +extern const struct fence_ops drm_crtc_fence_ops; > + > +static inline struct drm_crtc *fence_to_crtc(struct fence *fence) > +{ > + if (fence->ops != &drm_crtc_fence_ops) > + return NULL; > + > + return container_of(fence->lock, struct drm_crtc, fence_lock); > +} > + > /** > * struct drm_connector_state - mutable connector state > * @connector: backpointer to the connector > -- > 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