Received: by 10.223.185.116 with SMTP id b49csp1034244wrg; Wed, 21 Feb 2018 10:56:24 -0800 (PST) X-Google-Smtp-Source: AH8x227CB75DKazdJ3JX7GTP7A1fGghWjV2aUk99PRH0vTPEkIfBzo830AZp5fOPZncJnRMEsyyz X-Received: by 2002:a17:902:a512:: with SMTP id s18-v6mr3988281plq.296.1519239384539; Wed, 21 Feb 2018 10:56:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519239384; cv=none; d=google.com; s=arc-20160816; b=MXUrKa0JVbkafrwN3eDvYwDNEic/4EFf6VXg9Smil1q6/epWdmVe5CJC4M//jqXuDd OHIDrtq4KD8/Qew14/lln1rl1wC1FFSAKsBrQuhq1WRynP2w0jRsx/lfOblGX4tZdHWi zRzJt3v5QY3qmJHn2pw+VASyYnIdDboN43Zi+GDGDpUPY0GqpeCYNz6oWLhtNekjPynF 67pwPQOZxvptJL4dz5TEe/GWycgI9uVlopvnweGzgP24beuOmz/S3g/K3rhEvkeqvuZm Is9Yrnqi3R+xhPmucZ2cWGNa5eZX5/Q+Uf3PdVW7j2dH44OGCS66hhH1r2t7l+XRqorN HWFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=m/+jFc9V9s3GL0QjxBngUAU3TeKtpS14Daj7dHq54fc=; b=Nx3sg0IqoIrGa/Rh14vqbCRhES03JWH+6zoiPPiL/g64CpyRTXVJADBMyCiLYd/g7q BeEo9CRFl5PRCTUNFPuVNub8lT+NiqzDos0Pwpbe2WLCCK8JX4OsY5Rq4MbyQcWH/W+K LJJSMswwnzk1/mQ4OgbPceNXvwip2zIAOLDHTJWcsedhYMXZxwKeOfk7qdqnStod6Nvi 4/nPlAQQuincEGVxms0L0MWOojmNsgOc3+6gvJsAWhBh9fjtqRgPsVEvpu5QG5bGrpy0 oF3vgXT/8R7cWVp/v1UmgJ8d0ae/qxUgVl5lmSHc9napkz/gJYtvdiYPyzXYtflvIYQb 46FQ== ARC-Authentication-Results: i=1; mx.google.com; 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 f9-v6si1977075plk.94.2018.02.21.10.56.10; Wed, 21 Feb 2018 10:56:24 -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; 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 S937760AbeBUPTp (ORCPT + 99 others); Wed, 21 Feb 2018 10:19:45 -0500 Received: from mga07.intel.com ([134.134.136.100]:53440 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934517AbeBUPTo (ORCPT ); Wed, 21 Feb 2018 10:19:44 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Feb 2018 07:19:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,543,1511856000"; d="scan'208";a="19736559" Received: from cartnerr-mobl.ger.corp.intel.com (HELO [10.252.49.3]) ([10.252.49.3]) by orsmga008.jf.intel.com with ESMTP; 21 Feb 2018 07:19:40 -0800 Subject: Re: [PATCH 1/4] drm/atomic: integrate modeset lock with private objects To: Rob Clark , dri-devel@lists.freedesktop.org Cc: Archit Taneja , linux-arm-msm@vger.kernel.org, Gustavo Padovan , Sean Paul , David Airlie , linux-kernel@vger.kernel.org, Daniel Vetter References: <20180221143730.30285-1-robdclark@gmail.com> <20180221143730.30285-2-robdclark@gmail.com> From: Maarten Lankhorst Message-ID: Date: Wed, 21 Feb 2018 16:19:40 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180221143730.30285-2-robdclark@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. :) Could you cc intel-gfx just in case? > 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. > */