From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/4] drm/atomic: integrate modeset lock with private objects Date: Wed, 21 Feb 2018 16:49:19 +0200 Message-ID: <20180221144919.GN5453@intel.com> References: <20180221143730.30285-1-robdclark@gmail.com> <20180221143730.30285-2-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180221143730.30285-2-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Clark Cc: David Airlie , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org T24gV2VkLCBGZWIgMjEsIDIwMTggYXQgMDk6Mzc6MjFBTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IEZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuIG9mIGxvY2tpbmcgYXMgd2l0aCBvdGhlciBzdGF0 ZSBvYmplY3RzLiAgVGhpcwo+IGF2b2lkcyBib2lsZXJwbGF0ZSBpbiB0aGUgZHJpdmVyLgoKSSdt IG5vdCBzdXJlIHdlIHJlYWxseSB3YW50IHRvIGRvIHRoaXMuIFdoYXQgaWYgdGhlIGRyaXZlciB3 YW50cyBhCmN1c3RvbSBsb2NraW5nIHNjaGVtZSBmb3IgdGhpcyBzdGF0ZT8KCj4gCj4gU2lnbmVk LW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pYy5jIHwgOSArKysrKysrKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2F0 b21pYy5oICAgICB8IDUgKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggZmM4YzRkYTQwOWZm Li4wMDRlNjIxYWIzMDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMTA3OCw2ICsxMDc4 LDggQEAgZHJtX2F0b21pY19wcml2YXRlX29ial9pbml0KHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmog Km9iaiwKPiAgewo+ICAJbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKCpvYmopKTsKPiAgCj4gKwlkcm1f bW9kZXNldF9sb2NrX2luaXQoJm9iai0+bG9jayk7Cj4gKwo+ICAJb2JqLT5zdGF0ZSA9IHN0YXRl Owo+ICAJb2JqLT5mdW5jcyA9IGZ1bmNzOwo+ICB9Cj4gQEAgLTEwOTMsNiArMTA5NSw3IEBAIHZv aWQKPiAgZHJtX2F0b21pY19wcml2YXRlX29ial9maW5pKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmog Km9iaikKPiAgewo+ICAJb2JqLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3RhdGUob2JqLCBvYmot PnN0YXRlKTsKPiArCWRybV9tb2Rlc2V0X2xvY2tfZmluaSgmb2JqLT5sb2NrKTsKPiAgfQo+ICBF WFBPUlRfU1lNQk9MKGRybV9hdG9taWNfcHJpdmF0ZV9vYmpfZmluaSk7Cj4gIAo+IEBAIC0xMTEz LDcgKzExMTYsNyBAQCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKgo+ICBkcm1fYXRvbWljX2dl dF9wcml2YXRlX29ial9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJ CQkgc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqKQo+ICB7Cj4gLQlpbnQgaW5kZXgsIG51bV9v YmpzLCBpOwo+ICsJaW50IGluZGV4LCBudW1fb2JqcywgaSwgcmV0Owo+ICAJc2l6ZV90IHNpemU7 Cj4gIAlzdHJ1Y3QgX19kcm1fcHJpdmF0ZV9vYmpzX3N0YXRlICphcnI7Cj4gIAlzdHJ1Y3QgZHJt X3ByaXZhdGVfc3RhdGUgKm9ial9zdGF0ZTsKPiBAQCAtMTEyMiw2ICsxMTI1LDEwIEBAIGRybV9h dG9taWNfZ2V0X3ByaXZhdGVfb2JqX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKPiAgCQlpZiAob2JqID09IHN0YXRlLT5wcml2YXRlX29ianNbaV0ucHRyKQo+ICAJCQlyZXR1 cm4gc3RhdGUtPnByaXZhdGVfb2Jqc1tpXS5zdGF0ZTsKPiAgCj4gKwlyZXQgPSBkcm1fbW9kZXNl dF9sb2NrKCZvYmotPmxvY2ssIHN0YXRlLT5hY3F1aXJlX2N0eCk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwo+ICAJbnVtX29ianMgPSBzdGF0ZS0+bnVtX3ByaXZh dGVfb2JqcyArIDE7Cj4gIAlzaXplID0gc2l6ZW9mKCpzdGF0ZS0+cHJpdmF0ZV9vYmpzKSAqIG51 bV9vYmpzOwo+ICAJYXJyID0ga3JlYWxsb2Moc3RhdGUtPnByaXZhdGVfb2Jqcywgc2l6ZSwgR0ZQ X0tFUk5FTCk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaCBiL2luY2x1 ZGUvZHJtL2RybV9hdG9taWMuaAo+IGluZGV4IDA5MDc2YTYyNTYzNy4uOWFlNTNiNzNjOWQyIDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9hdG9taWMuaAo+IEBAIC0yMTgsNiArMjE4LDExIEBAIHN0cnVjdCBkcm1fcHJpdmF0ZV9z dGF0ZV9mdW5jcyB7Cj4gICAqICZkcm1fbW9kZXNldF9sb2NrIGlzIHJlcXVpcmVkIHRvIGR1cGxp Y2F0ZSBhbmQgdXBkYXRlIHRoaXMgb2JqZWN0J3Mgc3RhdGUuCj4gICAqLwo+ICBzdHJ1Y3QgZHJt X3ByaXZhdGVfb2JqIHsKPiArCS8qKgo+ICsJICogQGxvY2s6IE1vZGVzZXQgbG9jayB0byBwcm90 ZWN0IHRoZSBzdGF0ZSBvYmplY3QuCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1fbW9kZXNldF9sb2Nr IGxvY2s7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAc3RhdGU6IEN1cnJlbnQgYXRvbWljIHN0YXRlIGZv ciB0aGlzIGRyaXZlciBwcml2YXRlIG9iamVjdC4KPiAgCSAqLwo+IC0tIAo+IDIuMTQuMwo+IAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRl dmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0g ClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937941AbeBUOt0 (ORCPT ); Wed, 21 Feb 2018 09:49:26 -0500 Received: from mga14.intel.com ([192.55.52.115]:61179 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932496AbeBUOtX (ORCPT ); Wed, 21 Feb 2018 09:49:23 -0500 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,543,1511856000"; d="scan'208";a="19372446" Date: Wed, 21 Feb 2018 16:49:19 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Rob Clark Cc: dri-devel@lists.freedesktop.org, David Airlie , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/4] drm/atomic: integrate modeset lock with private objects Message-ID: <20180221144919.GN5453@intel.com> References: <20180221143730.30285-1-robdclark@gmail.com> <20180221143730.30285-2-robdclark@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180221143730.30285-2-robdclark@gmail.com> User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 21, 2018 at 09:37:21AM -0500, Rob Clark wrote: > Follow the same pattern of locking as with other state objects. This > avoids boilerplate in the driver. I'm not sure we really want to do this. What if the driver wants a custom locking scheme for this state? > > Signed-off-by: Rob Clark > --- > drivers/gpu/drm/drm_atomic.c | 9 ++++++++- > include/drm/drm_atomic.h | 5 +++++ > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index fc8c4da409ff..004e621ab307 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -1078,6 +1078,8 @@ drm_atomic_private_obj_init(struct drm_private_obj *obj, > { > memset(obj, 0, sizeof(*obj)); > > + drm_modeset_lock_init(&obj->lock); > + > obj->state = state; > obj->funcs = funcs; > } > @@ -1093,6 +1095,7 @@ void > drm_atomic_private_obj_fini(struct drm_private_obj *obj) > { > obj->funcs->atomic_destroy_state(obj, obj->state); > + drm_modeset_lock_fini(&obj->lock); > } > EXPORT_SYMBOL(drm_atomic_private_obj_fini); > > @@ -1113,7 +1116,7 @@ struct drm_private_state * > drm_atomic_get_private_obj_state(struct drm_atomic_state *state, > struct drm_private_obj *obj) > { > - int index, num_objs, i; > + int index, num_objs, i, ret; > size_t size; > struct __drm_private_objs_state *arr; > struct drm_private_state *obj_state; > @@ -1122,6 +1125,10 @@ drm_atomic_get_private_obj_state(struct drm_atomic_state *state, > if (obj == state->private_objs[i].ptr) > return state->private_objs[i].state; > > + ret = drm_modeset_lock(&obj->lock, state->acquire_ctx); > + if (ret) > + return ERR_PTR(ret); > + > num_objs = state->num_private_objs + 1; > size = sizeof(*state->private_objs) * num_objs; > arr = krealloc(state->private_objs, size, GFP_KERNEL); > diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h > index 09076a625637..9ae53b73c9d2 100644 > --- a/include/drm/drm_atomic.h > +++ b/include/drm/drm_atomic.h > @@ -218,6 +218,11 @@ struct drm_private_state_funcs { > * &drm_modeset_lock is required to duplicate and update this object's state. > */ > struct drm_private_obj { > + /** > + * @lock: Modeset lock to protect the state object. > + */ > + struct drm_modeset_lock lock; > + > /** > * @state: Current atomic state for this driver private object. > */ > -- > 2.14.3 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel OTC