From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10620ECDE43 for ; Fri, 19 Oct 2018 07:10:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A08D320869 for ; Fri, 19 Oct 2018 07:10:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="YMs2+oue" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A08D320869 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727097AbeJSPPE (ORCPT ); Fri, 19 Oct 2018 11:15:04 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:40665 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726647AbeJSPPE (ORCPT ); Fri, 19 Oct 2018 11:15:04 -0400 Received: by mail-ed1-f66.google.com with SMTP id r1-v6so30505914edd.7 for ; Fri, 19 Oct 2018 00:10:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=kaEGokuhv8pMca0nDlWtHGZFWMpnPaIOF7+4tQRcLtg=; b=YMs2+oue6NF68fuZEvZtz5eQsE5FrOk120oa5cjfToE2GTjhM7iDIphgglUuQBBtR+ NMGoI4+AIzldY7GB3hEK3jMdwb9AwScLq5gbyAs0V0qAN8fkR/ozWrhT0QBRB4Rkjs0Z cTTebsLsqlshjlazMEPhoZMLVTqYu5amh+xbk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=kaEGokuhv8pMca0nDlWtHGZFWMpnPaIOF7+4tQRcLtg=; b=Ck2q3q+daiGvn9FCVu5e77UY0KlIso+udwXnNYv2FQNzXoO735FlqRqmiOUqjJemGH VQNN2FSw8kAOZGnWTSHQAB+PsGMi5d+ONoPaBO75WGX/aUzb6PsxXgguU7+CHSB2v8ag cOif0LmF3KCR/v9NmFLiua9tWtx/wcFYYZORZNT9rci/66SKb8LdfREAwKuiEHQERNp7 GZu9lBeTVksRMC9c586CHuNOEgUAIF6tliwmRyFLe5x/FM6gtJD+M9FoUUHtL/nulJku viZ7k6WO+ghOHdhGEh6aLewEvEfRLt+PHN9jJskLIyS5M2S1pO1qlqIPi80bCrCeihSx stbQ== X-Gm-Message-State: ABuFfogEE1cWLYt7xcoo9NTDKqYw4xrhRJ4DYjYJOrCcBiwR6AydV0Rb C0lga+Oi9SfJkRvIqDwu3FAOJg== X-Google-Smtp-Source: ACcGV61PPgkiNehAeUKU43u3GXbGvpjRrPnTH4tMlM8fNCqJzpjnDM+JYpD+hPgrzsElS+FBo2s1Rw== X-Received: by 2002:a50:b404:: with SMTP id b4-v6mr5374141edh.141.1539933015227; Fri, 19 Oct 2018 00:10:15 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id 38-v6sm9319777edz.33.2018.10.19.00.10.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 19 Oct 2018 00:10:14 -0700 (PDT) Date: Fri, 19 Oct 2018 09:10:12 +0200 From: Daniel Vetter To: Benoit Parrot Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Laurent Pinchart , Tomi Valkeinen , Peter Ujfalusi , Jyri Sarha Subject: Re: [Patch v4 5/8] drm/omap: Add global state as a private atomic object Message-ID: <20181019071012.GQ31561@phenom.ffwll.local> Mail-Followup-To: Benoit Parrot , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Laurent Pinchart , Tomi Valkeinen , Peter Ujfalusi , Jyri Sarha References: <20181012201703.29065-1-bparrot@ti.com> <20181012201703.29065-6-bparrot@ti.com> <20181016122946.GU31561@phenom.ffwll.local> <20181018131130.GB1566@ti.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181018131130.GB1566@ti.com> X-Operating-System: Linux phenom 4.14.0-1-amd64 User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Oct 18, 2018 at 08:11:30AM -0500, Benoit Parrot wrote: > Daniel Vetter wrote on Tue [2018-Oct-16 14:29:46 +0200]: > > On Fri, Oct 12, 2018 at 03:17:00PM -0500, Benoit Parrot wrote: > > > Global shared resources (like hw overlays) for omapdrm are implemented > > > as a part of atomic state using the drm_private_obj infrastructure > > > available in the atomic core. > > > > > > omap_global_state is introduced as a drm atomic private object. The two > > > funcs omap_get_global_state() and omap_get_existing_global_state() are > > > the two variants that will be used to access omap_global_state. > > > > > > Signed-off-by: Benoit Parrot > > > --- > > > drivers/gpu/drm/omapdrm/omap_drv.c | 97 +++++++++++++++++++++++++++++++++++++- > > > drivers/gpu/drm/omapdrm/omap_drv.h | 23 +++++++++ > > > 2 files changed, 119 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > > > index 2921cc90f2d8..94658ec79c76 100644 > > > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > > > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > > > @@ -129,6 +129,94 @@ static const struct drm_mode_config_funcs omap_mode_config_funcs = { > > > .atomic_commit = drm_atomic_helper_commit, > > > }; > > > > > > +/* Global/shared object state funcs */ > > > + > > > +/* > > > + * This is a helper that returns the private state currently in operation. > > > + * Note that this would return the "old_state" if called in the atomic check > > > + * path, and the "new_state" after the atomic swap has been done. > > > + */ > > > +struct omap_global_state * > > > +omap_get_existing_global_state(struct omap_drm_private *priv) > > > +{ > > > + return to_omap_global_state(priv->glob_obj.state); > > > +} > > > + > > > +/* > > > + * This acquires the modeset lock set aside for global state, creates > > > + * a new duplicated private object state. > > > + */ > > > +struct omap_global_state *__must_check > > > +omap_get_global_state(struct drm_atomic_state *s) > > > +{ > > > + struct omap_drm_private *priv = s->dev->dev_private; > > > + struct drm_private_state *priv_state; > > > + int ret; > > > + > > > + if (!drm_modeset_is_locked(&priv->glob_obj_lock)) { > > > + ret = drm_modeset_lock(&priv->glob_obj_lock, s->acquire_ctx); > > > + if (ret) { > > > + DBG("getting priv->glob_obj_lock (%p) failed %d", > > > + &priv->glob_obj_lock, ret); > > > + return ERR_PTR(ret); > > > + } > > > + } > > > + > > > + priv_state = drm_atomic_get_private_obj_state(s, &priv->glob_obj); > > > > One of the refactors I had in mind (and which would be possible now that > > private state structs are implemented as properly structs, instead of void > > * pointers): Add a drm_modeset_lock to drm_private_obj and avoid having to > > duplicate that over all implementations. Not everyone wants a per-obj > > lock, but no one will be hurt by having a per-obj lock - drm_modeset_lock > > is very extensible in that way. And we could drop the custom locking code > > everyone has to roll themselves. > > Thanks for the feedback. I was wondering the same when I was "duplicating" > this code. I will take this under advisement, but I would probably see that > as a separate patch set, either before or after this one :) Sure. Also note that this came up with a recent vc4 patch series by Boris Brezillion "[RFC PATCH] drm/vc4: Add a load tracker to prevent HVS underflow errors", so maybe you folks can work together. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Patch v4 5/8] drm/omap: Add global state as a private atomic object Date: Fri, 19 Oct 2018 09:10:12 +0200 Message-ID: <20181019071012.GQ31561@phenom.ffwll.local> References: <20181012201703.29065-1-bparrot@ti.com> <20181012201703.29065-6-bparrot@ti.com> <20181016122946.GU31561@phenom.ffwll.local> <20181018131130.GB1566@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE8E56E1D9 for ; Fri, 19 Oct 2018 07:10:16 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id d15-v6so30483478edq.6 for ; Fri, 19 Oct 2018 00:10:16 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181018131130.GB1566@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Benoit Parrot Cc: linux-kernel@vger.kernel.org, Jyri Sarha , Peter Ujfalusi , Tomi Valkeinen , dri-devel@lists.freedesktop.org, Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBPY3QgMTgsIDIwMTggYXQgMDg6MTE6MzBBTSAtMDUwMCwgQmVub2l0IFBhcnJvdCB3 cm90ZToKPiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlIG9uIFR1ZSBbMjAx OC1PY3QtMTYgMTQ6Mjk6NDYgKzAyMDBdOgo+ID4gT24gRnJpLCBPY3QgMTIsIDIwMTggYXQgMDM6 MTc6MDBQTSAtMDUwMCwgQmVub2l0IFBhcnJvdCB3cm90ZToKPiA+ID4gR2xvYmFsIHNoYXJlZCBy ZXNvdXJjZXMgKGxpa2UgaHcgb3ZlcmxheXMpIGZvciBvbWFwZHJtIGFyZSBpbXBsZW1lbnRlZAo+ ID4gPiBhcyBhIHBhcnQgb2YgYXRvbWljIHN0YXRlIHVzaW5nIHRoZSBkcm1fcHJpdmF0ZV9vYmog aW5mcmFzdHJ1Y3R1cmUKPiA+ID4gYXZhaWxhYmxlIGluIHRoZSBhdG9taWMgY29yZS4KPiA+ID4g Cj4gPiA+IG9tYXBfZ2xvYmFsX3N0YXRlIGlzIGludHJvZHVjZWQgYXMgYSBkcm0gYXRvbWljIHBy aXZhdGUgb2JqZWN0LiBUaGUgdHdvCj4gPiA+IGZ1bmNzIG9tYXBfZ2V0X2dsb2JhbF9zdGF0ZSgp IGFuZCBvbWFwX2dldF9leGlzdGluZ19nbG9iYWxfc3RhdGUoKSBhcmUKPiA+ID4gdGhlIHR3byB2 YXJpYW50cyB0aGF0IHdpbGwgYmUgdXNlZCB0byBhY2Nlc3Mgb21hcF9nbG9iYWxfc3RhdGUuCj4g PiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBCZW5vaXQgUGFycm90IDxicGFycm90QHRpLmNvbT4K PiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jIHwgOTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9vbWFwZHJtL29tYXBfZHJ2LmggfCAyMyArKysrKysrKysKPiA+ID4gIDIgZmlsZXMgY2hh bmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ID4gCj4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL29tYXBkcm0vb21hcF9kcnYuYwo+ID4gPiBpbmRleCAyOTIxY2M5MGYyZDguLjk0NjU4ZWM3 OWM3NiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYu Ywo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jCj4gPiA+IEBA IC0xMjksNiArMTI5LDk0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1 bmNzIG9tYXBfbW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gPiA+ICAJLmF0b21pY19jb21taXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jb21taXQsCj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICsvKiBHbG9i YWwvc2hhcmVkIG9iamVjdCBzdGF0ZSBmdW5jcyAqLwo+ID4gPiArCj4gPiA+ICsvKgo+ID4gPiAr ICogVGhpcyBpcyBhIGhlbHBlciB0aGF0IHJldHVybnMgdGhlIHByaXZhdGUgc3RhdGUgY3VycmVu dGx5IGluIG9wZXJhdGlvbi4KPiA+ID4gKyAqIE5vdGUgdGhhdCB0aGlzIHdvdWxkIHJldHVybiB0 aGUgIm9sZF9zdGF0ZSIgaWYgY2FsbGVkIGluIHRoZSBhdG9taWMgY2hlY2sKPiA+ID4gKyAqIHBh dGgsIGFuZCB0aGUgIm5ld19zdGF0ZSIgYWZ0ZXIgdGhlIGF0b21pYyBzd2FwIGhhcyBiZWVuIGRv bmUuCj4gPiA+ICsgKi8KPiA+ID4gK3N0cnVjdCBvbWFwX2dsb2JhbF9zdGF0ZSAqCj4gPiA+ICtv bWFwX2dldF9leGlzdGluZ19nbG9iYWxfc3RhdGUoc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnBy aXYpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIHRvX29tYXBfZ2xvYmFsX3N0YXRlKHByaXYtPmds b2Jfb2JqLnN0YXRlKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIFRoaXMg YWNxdWlyZXMgdGhlIG1vZGVzZXQgbG9jayBzZXQgYXNpZGUgZm9yIGdsb2JhbCBzdGF0ZSwgY3Jl YXRlcwo+ID4gPiArICogYSBuZXcgZHVwbGljYXRlZCBwcml2YXRlIG9iamVjdCBzdGF0ZS4KPiA+ ID4gKyAqLwo+ID4gPiArc3RydWN0IG9tYXBfZ2xvYmFsX3N0YXRlICpfX211c3RfY2hlY2sKPiA+ ID4gK29tYXBfZ2V0X2dsb2JhbF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcykKPiA+ ID4gK3sKPiA+ID4gKwlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiA9IHMtPmRldi0+ZGV2 X3ByaXZhdGU7Cj4gPiA+ICsJc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpwcml2X3N0YXRlOwo+ ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIWRybV9tb2Rlc2V0X2lzX2xvY2tl ZCgmcHJpdi0+Z2xvYl9vYmpfbG9jaykpIHsKPiA+ID4gKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9j aygmcHJpdi0+Z2xvYl9vYmpfbG9jaywgcy0+YWNxdWlyZV9jdHgpOwo+ID4gPiArCQlpZiAocmV0 KSB7Cj4gPiA+ICsJCQlEQkcoImdldHRpbmcgcHJpdi0+Z2xvYl9vYmpfbG9jayAoJXApIGZhaWxl ZCAlZCIsCj4gPiA+ICsJCQkgICAgJnByaXYtPmdsb2Jfb2JqX2xvY2ssIHJldCk7Cj4gPiA+ICsJ CQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ ICsJcHJpdl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3ByaXZhdGVfb2JqX3N0YXRlKHMsICZwcml2 LT5nbG9iX29iaik7Cj4gPiAKPiA+IE9uZSBvZiB0aGUgcmVmYWN0b3JzIEkgaGFkIGluIG1pbmQg KGFuZCB3aGljaCB3b3VsZCBiZSBwb3NzaWJsZSBub3cgdGhhdAo+ID4gcHJpdmF0ZSBzdGF0ZSBz dHJ1Y3RzIGFyZSBpbXBsZW1lbnRlZCBhcyBwcm9wZXJseSBzdHJ1Y3RzLCBpbnN0ZWFkIG9mIHZv aWQKPiA+ICogcG9pbnRlcnMpOiBBZGQgYSBkcm1fbW9kZXNldF9sb2NrIHRvIGRybV9wcml2YXRl X29iaiBhbmQgYXZvaWQgaGF2aW5nIHRvCj4gPiBkdXBsaWNhdGUgdGhhdCBvdmVyIGFsbCBpbXBs ZW1lbnRhdGlvbnMuIE5vdCBldmVyeW9uZSB3YW50cyBhIHBlci1vYmoKPiA+IGxvY2ssIGJ1dCBu byBvbmUgd2lsbCBiZSBodXJ0IGJ5IGhhdmluZyBhIHBlci1vYmogbG9jayAtIGRybV9tb2Rlc2V0 X2xvY2sKPiA+IGlzIHZlcnkgZXh0ZW5zaWJsZSBpbiB0aGF0IHdheS4gQW5kIHdlIGNvdWxkIGRy b3AgdGhlIGN1c3RvbSBsb2NraW5nIGNvZGUKPiA+IGV2ZXJ5b25lIGhhcyB0byByb2xsIHRoZW1z ZWx2ZXMuCj4gCj4gVGhhbmtzIGZvciB0aGUgZmVlZGJhY2suIEkgd2FzIHdvbmRlcmluZyB0aGUg c2FtZSB3aGVuIEkgd2FzICJkdXBsaWNhdGluZyIKPiB0aGlzIGNvZGUuIEkgd2lsbCB0YWtlIHRo aXMgdW5kZXIgYWR2aXNlbWVudCwgYnV0IEkgd291bGQgcHJvYmFibHkgc2VlIHRoYXQKPiBhcyBh IHNlcGFyYXRlIHBhdGNoIHNldCwgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGlzIG9uZSA6KSAK ClN1cmUuIEFsc28gbm90ZSB0aGF0IHRoaXMgY2FtZSB1cCB3aXRoIGEgcmVjZW50IHZjNCBwYXRj aCBzZXJpZXMgYnkgQm9yaXMKQnJlemlsbGlvbiAiW1JGQyBQQVRDSF0gZHJtL3ZjNDogQWRkIGEg bG9hZCB0cmFja2VyIHRvIHByZXZlbnQgSFZTCnVuZGVyZmxvdyBlcnJvcnMiLCBzbyBtYXliZSB5 b3UgZm9sa3MgY2FuIHdvcmsgdG9nZXRoZXIuCi1EYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=