Received: by 10.223.185.116 with SMTP id b49csp785178wrg; Wed, 21 Feb 2018 06:55:56 -0800 (PST) X-Google-Smtp-Source: AH8x227ohM7t2c5CJpS666+iaAb7Y7Gzwh7Pw0uWLjhaBSyGLuBoXenzFT24uOIT5Z3y7JekLXaY X-Received: by 2002:a17:902:5716:: with SMTP id k22-v6mr3458848pli.229.1519224956684; Wed, 21 Feb 2018 06:55:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519224956; cv=none; d=google.com; s=arc-20160816; b=cYk3wukaOrusslO2z/N6kiYyW0wKDsbS9ZUQZwpiot7BdVuVF7T4V0ZI8uMTed0AC7 2rjVLupJ+QRSNArDX2x5DIsDgGRKuYJNouKWx2ZOJgxSfaxqOaW8HPw8jsKk1Ip4BVAc HPGgJgVhRPeKPvTib8joEAQDIrq8fyQHGcxgKTWCZjOjgHjK3UTqm/cSshVyHM3UC07E kTSQ2ram2meONCfrmYzosmZOHyqkcWZKfFLjz1S1Dzb/dJuEWeQtzT3PmyMHjvFnv7/p BoXg6oHCuhqXdeqr8/ZTtxIxKZgI9zpPrgNCBUZk08fIw5sDGaRnozDRGQ9f6pcyCs02 zMtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=JGP22UNibhOZ8NmAq5ghHUzYhSzNXutDmlJOkFBp8UI=; b=sg+dEag5fn0iU3HqSB/AvmH7MRTRWJuim5TFtBmDYmd0Z8q8LgEFYSLNCUInGplBGf A31dcXgDi20pVohy6vLPu57mrzfy450I25C/gC6XR/lQid36wb1kleveXlIYKg7tSSnw ENTp0tJLU0LS5JT30MD+jMrqmQkw4zZ6w6rLpfDv9gkgIP0s9cnl0Y5e0l6yLx0gMiIY blS+FSgj3QqV/AL6pLLrydXHzxC78NsyKcfDWXgPvbZW9ak5uJvFl1+Y0Zwh9pdQx5rS Ak2IDiwx6PE6dc3bBOKvBhLuoN7J8G8LYcfNgT09sfB3BvXy0m/HKMIOVs5odPmkWNjQ JyVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=rxrLx6zb; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p61-v6si355145plb.584.2018.02.21.06.55.42; Wed, 21 Feb 2018 06:55:56 -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=pass header.i=@gmail.com header.s=20161025 header.b=rxrLx6zb; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965137AbeBUOyy (ORCPT + 99 others); Wed, 21 Feb 2018 09:54:54 -0500 Received: from mail-io0-f193.google.com ([209.85.223.193]:43926 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964777AbeBUOyv (ORCPT ); Wed, 21 Feb 2018 09:54:51 -0500 Received: by mail-io0-f193.google.com with SMTP id l12so2385749ioc.10; Wed, 21 Feb 2018 06:54:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=JGP22UNibhOZ8NmAq5ghHUzYhSzNXutDmlJOkFBp8UI=; b=rxrLx6zbFDQ74gFrg/46hMndp3U6KNlahAd379d5o1HYZqOlvV38bMO6fgDyYOR0eS 0eMPFUphvbGURLKXEiT76XejMVvyiCKaZ3mWEzvKjCxF1Y009RkqqBmY9kontZihBIpo tI5pU6rk2QTT9Gm3rWUr+sSMtb8bpuKdMwqbcddBW3i93M4pBj5frdfrAXdLdPQ+3yp3 AjmoXzdthCZC6l+XbylNvbfOF2k0LpHPlTShub4FwXvKJlG0xn8MbD2Etp9Y20j0GCUH 7m/5ExZWZJ7SvdXzEl96jdd7MeYcGpNiQD4BYWNJWy97ZXvVqMofm8RJ8WRnvoVsuel7 MQEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=JGP22UNibhOZ8NmAq5ghHUzYhSzNXutDmlJOkFBp8UI=; b=nR14IBB/GtagYiw2nipxzVeo8oEjawTanZsO7EHIlCjJKOqohR7CYWwTk2fXsAdPEP aHKy4PbS8AsI23gZZsrGghDMaK3SWNeIgKZr5McQSpHcrn6HELVf8qRy8DKwNLh8MmI6 ssgeDZXLg8iBInE/ErkgKt2I9/LjLxT1Of4MNtD3GqSzwboWQJM9Bi9aCv4BGmIjbf2c bO5bMyyAQCHfPD3WcGSBnJf5OpoSbuK3ytgHmQ+asX16Z9hUiaD9dKhh+ZarAydhhqB6 MWa9uZpMS4/yun6GZUoTFeqbIch4XiBvAIRYVgZwUmGpexMzlKj7PdFB84pnkCVw/TZr LPyw== X-Gm-Message-State: APf1xPAN0Eq+B0pC4DkuLLbO9SmyI3E0wK5xkj2NKcX9EZkB6c4geg9w bY9E7uajJr/DmmZsvp7nunh2edKOuQh4eMgB7oXJkg== X-Received: by 10.107.151.209 with SMTP id z200mr4331082iod.29.1519224890012; Wed, 21 Feb 2018 06:54:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.2.92.211 with HTTP; Wed, 21 Feb 2018 06:54:49 -0800 (PST) In-Reply-To: <20180221144919.GN5453@intel.com> References: <20180221143730.30285-1-robdclark@gmail.com> <20180221143730.30285-2-robdclark@gmail.com> <20180221144919.GN5453@intel.com> From: Rob Clark Date: Wed, 21 Feb 2018 09:54:49 -0500 Message-ID: Subject: Re: [PATCH 1/4] drm/atomic: integrate modeset lock with private objects To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: dri-devel , David Airlie , linux-arm-msm , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 21, 2018 at 9:49 AM, Ville Syrj=C3=A4l=C3=A4 wrote: > 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? That seems like something we want to discourage, ie. all the more reason for this patch. There is no reason drivers could not split their global state into multiple private objs's, each with their own lock, for more fine grained locking. That is basically the only valid reason I can think of for "custom locking". (And ofc drivers could add there own locks in addition to what is done by core, but I'd rather look at that on a case by case basis, rather than it being part of the boilerplate in each driver.) BR, -R >> >> 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 =3D state; >> obj->funcs =3D 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_atomi= c_state *state, >> if (obj =3D=3D state->private_objs[i].ptr) >> return state->private_objs[i].state; >> >> + ret =3D drm_modeset_lock(&obj->lock, state->acquire_ctx); >> + if (ret) >> + return ERR_PTR(ret); >> + >> num_objs =3D state->num_private_objs + 1; >> size =3D sizeof(*state->private_objs) * num_objs; >> arr =3D 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=C3=A4l=C3=A4 > Intel OTC