Received: by 10.223.185.116 with SMTP id b49csp3509472wrg; Mon, 5 Mar 2018 23:42:09 -0800 (PST) X-Google-Smtp-Source: AG47ELtSxWZrQ8DX9fBubn4g+r+IV7JJAFvJzhA2Yj9sAhHMG2osdBJS7uNb2gNu9LWTNy4BRUiA X-Received: by 2002:a17:902:9002:: with SMTP id a2-v6mr15804037plp.412.1520322129673; Mon, 05 Mar 2018 23:42:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520322129; cv=none; d=google.com; s=arc-20160816; b=HQ1Qar8/GjpWbEXN+ZMO40ybCpPxHxMPjQhX4X7Ht4nw1Q/gWYvdcAhj1fgdqby9CZ gtpc9suCVIeTAGZXEycCCCJ3R1prxX4atwmFZoYEkROj4PsVVoO7iqkmsr/9qi9CIv+I K1Y3WY8TMT+QXJYh32sy6KYr1ZPF8Ne5HGPe/tELvs13dxwa1xlNEbuqxzmBJhhj8vYm RlVJSHVExj2/QXmYPrr2ecYJZq5tGtJp2uGeY0aLvPiI6Dy+2R1CFKlA56zsvUfnUVDi 4QFXebQbt3kyn5//sAxbNzCFz4ydnkM19cSSI1Q33Jk/FMdN+tkikKrLuiRrRdpvXM+0 T0nQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:dkim-signature :arc-authentication-results; bh=b9hdtmX/yoH70wDRhQjVk/DNzNuz7Y36gLgI+sXJxwg=; b=evqHIKnxDC3N79j1Y055dYjN26BnBpFpD+U8afPU0jpGkN0wmPM9lT4bicjAYBJD2c Q6plQeMJjyquAKSuCQAgNIAgu73vPJogrCNg+SloNR6waQFwm3CMMwUGGQ7sNUWR9BbN 7RGx77fof6kK3dkrqOfO8/L4bTHWDszZuOqKSf2idkgTk4kYrGere3p/jd4awI0Yu9pT k0zUm9cWDSYEcqbckQsgTmMRqLMhzvKTAopwJNgO8w25roKDy6ZZeqnMqtWrr7oL8nTj f91S6CYPwrn3F4FKMk2p0hq6DH1l040F6w9N0B0IJRHNWeBoGts90THRJuUXk9kCdvoJ atJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=kUL9PwGs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v20-v6si10838481plo.199.2018.03.05.23.41.54; Mon, 05 Mar 2018 23:42:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@ffwll.ch header.s=google header.b=kUL9PwGs; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750908AbeCFHlC (ORCPT + 99 others); Tue, 6 Mar 2018 02:41:02 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:50356 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750730AbeCFHk7 (ORCPT ); Tue, 6 Mar 2018 02:40:59 -0500 Received: by mail-wm0-f65.google.com with SMTP id w128so20823773wmw.0 for ; Mon, 05 Mar 2018 23:40:58 -0800 (PST) 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=b9hdtmX/yoH70wDRhQjVk/DNzNuz7Y36gLgI+sXJxwg=; b=kUL9PwGsQZWPTeXCilTdNhoEVzKW3wEc9Mzfhmtf/dIsgBwTdpatkLQhbKm59AMdbi kBqFnTc6uMFY6i3zp1Nmg0E9Vy3GjEK7MUAoDKfQvP19bC9RPFoG5OM8wMDyMCKz/WVT PhjTQlrQ4gbOMOE0NeuziOyFn90PXimjPRYys= 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=b9hdtmX/yoH70wDRhQjVk/DNzNuz7Y36gLgI+sXJxwg=; b=nG+We/TNBsWsqlihU7/jLim70Je5DP2FWPoJ5vDKLc6cQRSOiwF/JUQ/HaNujbhmGO TTNKKLP72nYoms4UkX6qwb8c4KfcZPAu8/iOVmPByJttoLL8DQpqRumnm0tT5CeWHPzO 8u30eDJLwsugvwYhC7fWi83ZVfMHyvTfHQOPxHn+/TpRN6gzbebmF0ePHHZo/oKIyThT j7qGJ9VJ7uDM90qAYyGxhIjnbRyqeLA2yx/xXgLgCquZV/Ib48PkO0rWcU7V7kN1on2k IaOPSoKhznpbSgiDuD5qWj15oIss/wgBPksi9RaNxwoDjuHFOyjQEYUvBG57OKoAhmJc /NCQ== X-Gm-Message-State: APf1xPAHQsor+5viA57cxZIIjDUzj0mV/XEl48UrMR8Ckm9uupYMoBVQ UwC3uozdhnR9noOmiTWsZs4J/Q== X-Received: by 10.80.144.213 with SMTP id d21mr21976921eda.164.1520322057937; Mon, 05 Mar 2018 23:40:57 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:5635:0:39d2:f87e:2033:9f6]) by smtp.gmail.com with ESMTPSA id m5sm13035291edb.97.2018.03.05.23.40.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 05 Mar 2018 23:40:57 -0800 (PST) Date: Tue, 6 Mar 2018 08:40:55 +0100 From: Daniel Vetter To: Maarten Lankhorst Cc: Rob Clark , dri-devel@lists.freedesktop.org, Archit Taneja , linux-arm-msm@vger.kernel.org, Gustavo Padovan , Sean Paul , David Airlie , linux-kernel@vger.kernel.org, Daniel Vetter Subject: Re: [PATCH 1/4] drm/atomic: integrate modeset lock with private objects Message-ID: <20180306074055.GU22212@phenom.ffwll.local> Mail-Followup-To: Maarten Lankhorst , Rob Clark , dri-devel@lists.freedesktop.org, Archit Taneja , linux-arm-msm@vger.kernel.org, Gustavo Padovan , Sean Paul , David Airlie , linux-kernel@vger.kernel.org References: <20180221143730.30285-1-robdclark@gmail.com> <20180221143730.30285-2-robdclark@gmail.com> <20180306072920.GR22212@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180306072920.GR22212@phenom.ffwll.local> X-Operating-System: Linux phenom 4.14.0-3-amd64 User-Agent: Mutt/1.9.3 (2018-01-21) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 06, 2018 at 08:29:20AM +0100, Daniel Vetter wrote: > On Wed, Feb 21, 2018 at 04:19:40PM +0100, Maarten Lankhorst wrote: > > Hey, > > > > Op 21-02-18 om 15:37 schreef Rob Clark: > > > Follow the same pattern of locking as with other state objects. This > > > avoids boilerplate in the driver. > > I'm afraid this will prohibit any uses of this on i915, since it still uses legacy lock_all(). > > > > Oh well, afaict nothing in i915 uses private objects, so I don't think it's harmful. :) > > We do use private objects, as part of dp mst helpers. But I also thought > that the only users left of lock_all are in the debugfs code, where this > really doesn't matter all that much. Correction, we use it in other places than debugfs. But thanks to Ville's private state obj refactoring we now have drm_atomic_private_obj_init(), so it's easy to add all the private state objects to a new list in drm_dev->mode_config.private_states or so, and use that list in drm_modeset_lock_all_ctx to also take driver private locks. I think that would actually be useful in other places, just in case. -Daniel > > > Could you cc intel-gfx just in case? > > Yeah, best to double-check with CI. > > > > 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. > > > */ > > > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch