Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp59583ybk; Fri, 8 May 2020 14:02:11 -0700 (PDT) X-Google-Smtp-Source: APiQypKmmfslL96xrAjb0dgAw74jKnADe/xac+iXWFR7Vxw03oI5Y7gYKBUcnV5i3lgBgty4akoj X-Received: by 2002:a50:ed8f:: with SMTP id h15mr4003577edr.331.1588971731698; Fri, 08 May 2020 14:02:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588971731; cv=none; d=google.com; s=arc-20160816; b=xnGxblOy8D1XOgsLfSGuH6vKkiF9zaybNHmkwYATIwgFox/JEzqjVwMf2qfml9FaYY VshoFPEuiVn7XyXtABp3rOxhIMD6FW/r3ZFw2KPo23rGYcXj9FZnV/viiaYGcD4q9xYA XAonD7tyIhwSxZk2qaVOJBis7jlGlmFX5BeZsqcrU92abkCukVwanttSmwAkO9tfCRAn No02hXws9J3PNcV156QLPat3TXkD7XuL22Mp3k1cUWyl3B3paKvY8t2adhRjYckfon7F SBRqjTI62NuRGSEh7iVos+B656yvxbKOTJLX9T7dvBuFBxPth0ZjI2LELQPM076YLpgI A20g== 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:in-reply-to:references:mime-version :dkim-signature; bh=JvQWomvjxRLudQWRCaB9megG2fXdC0dsqrE9wIO6QIg=; b=RPruLK3AdyHYHlhNv+SNDOtPSx1RddRJDHGyF8GRH3pTvQjTXyDuK+2JwkE5q74ew+ 7vWq5zjK0/D99yynxvoHXD8yOYYx+3hsOTgPV8vzMBA8VSZB6MFUBRjZoFV99lQE1p6r jjKl0IFZCumkL9kK7H8terGKa9n+5+WOep18pCDF8gV1+Hxiu+0DpF6AniMSf7KSKhU1 GBjue9zZFxDzlxD3P9wE7TA3OLj7+x+5QGThanFYzLWfyCmu2hyRQAub+Ys6sAb3fKX/ RF1GJNdNqQUR1o6HliyvGnFzz3NIaoTwmqEw1ZkIMqM9V4ns86pINS8ZtkMONlcUbT9+ SCnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=UzoCHcnW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a63si1563016ede.399.2020.05.08.14.01.47; Fri, 08 May 2020 14:02:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=UzoCHcnW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727841AbgEHU7P (ORCPT + 99 others); Fri, 8 May 2020 16:59:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727828AbgEHU7P (ORCPT ); Fri, 8 May 2020 16:59:15 -0400 Received: from mail-oi1-x241.google.com (mail-oi1-x241.google.com [IPv6:2607:f8b0:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2689EC061A0C for ; Fri, 8 May 2020 13:59:15 -0700 (PDT) Received: by mail-oi1-x241.google.com with SMTP id b18so9632841oic.6 for ; Fri, 08 May 2020 13:59:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=JvQWomvjxRLudQWRCaB9megG2fXdC0dsqrE9wIO6QIg=; b=UzoCHcnW0VeddBNAXca5ePUWKDqO4F5IKcddt+7x2DPPr5wW20lpdInECrtT3H1iq4 KchnkNi2mevHqKxSjitcQY6w/pz2vX/CqsvJ0y4w1UezxkAI4Gy4SCZS2mGwDFDEL33p 9ej4GLctnLkeHfH7cseZZkPYJS/WcYjvU2k8c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=JvQWomvjxRLudQWRCaB9megG2fXdC0dsqrE9wIO6QIg=; b=VWcpZFQNq/ZIXa5tB1cWXiS8qSctyUOFyfesMmoQkAFEZ/qjQCW6+n1rSD3PVvQRFW FeEfE++S5aiJ4nan5RHVi+qzEgPy0aUMBe2jNfALKKQNYeMwDGSESOHzyLDQyvn4UxCc iJjoof2VcbvvOHAOCy5TArHBEdCSiU7aDEdbp1bVBOLmOU+BmUtOik2sN6Ls14XKTwNX 5fh3qmbK8WZku4pHJdlIjvF09OWcFhhD7fffnMSeV7wxa5sXBJlFZK5m7LqSyv8XbvHM 31AI+fIMYX6ZytmPFugG3G6+uwNbYViYifOqKUxvNMfqRgw+uQh1suRUTmq8UhEs63yl CsMw== X-Gm-Message-State: AGi0PuYYdWNaoYJ9LpzaM+hUWrxUEcw/boXslcjU0osDcFO1XLsurRrY UnPmk4GZZGy5MFxyccuWzLDz7WROTQW1XITgA9vA+w== X-Received: by 2002:aca:2113:: with SMTP id 19mr3361674oiz.128.1588971554521; Fri, 08 May 2020 13:59:14 -0700 (PDT) MIME-Version: 1.0 References: <20200508204751.155488-1-lyude@redhat.com> <20200508204751.155488-4-lyude@redhat.com> In-Reply-To: <20200508204751.155488-4-lyude@redhat.com> From: Daniel Vetter Date: Fri, 8 May 2020 22:59:03 +0200 Message-ID: Subject: Re: [RFC v4 03/12] drm/vblank: Register drmm cleanup action once per drm_vblank_crtc To: Lyude Paul Cc: Nouveau Dev , dri-devel , Linux Kernel Mailing List , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie 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 Fri, May 8, 2020 at 10:48 PM Lyude Paul wrote: > > Since we'll be allocating resources for kthread_create_worker() in the > next commit (which could fail and require us to clean up the mess), > let's simplify the cleanup process a bit by registering a > drm_vblank_init_release() action for each drm_vblank_crtc so they're > still cleaned up if we fail to initialize one of them. > > Changes since v3: > * Use drmm_add_action_or_reset() - Daniel Vetter > > Cc: Daniel Vetter > Cc: Ville Syrj=C3=A4l=C3=A4 > Cc: dri-devel@lists.freedesktop.org > Cc: nouveau@lists.freedesktop.org > Signed-off-by: Lyude Paul Reviewed-by: Daniel Vetter I think the other patches need a brain that's less in w/e mode :-) Cheers, Daniel > --- > drivers/gpu/drm/drm_vblank.c | 23 ++++++++++------------- > 1 file changed, 10 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c > index 758bf74e1cab..a4a9013584e2 100644 > --- a/drivers/gpu/drm/drm_vblank.c > +++ b/drivers/gpu/drm/drm_vblank.c > @@ -491,16 +491,12 @@ static void vblank_disable_fn(struct timer_list *t) > > static void drm_vblank_init_release(struct drm_device *dev, void *ptr) > { > - unsigned int pipe; > - > - for (pipe =3D 0; pipe < dev->num_crtcs; pipe++) { > - struct drm_vblank_crtc *vblank =3D &dev->vblank[pipe]; > + struct drm_vblank_crtc *vblank =3D ptr; > > - WARN_ON(READ_ONCE(vblank->enabled) && > - drm_core_check_feature(dev, DRIVER_MODESET)); > + WARN_ON(READ_ONCE(vblank->enabled) && > + drm_core_check_feature(dev, DRIVER_MODESET)); > > - del_timer_sync(&vblank->disable_timer); > - } > + del_timer_sync(&vblank->disable_timer); > } > > /** > @@ -510,7 +506,7 @@ static void drm_vblank_init_release(struct drm_device= *dev, void *ptr) > * > * This function initializes vblank support for @num_crtcs display pipel= ines. > * Cleanup is handled automatically through a cleanup function added wit= h > - * drmm_add_action(). > + * drmm_add_action_or_reset(). > * > * Returns: > * Zero on success or a negative error code on failure. > @@ -529,10 +525,6 @@ int drm_vblank_init(struct drm_device *dev, unsigned= int num_crtcs) > > dev->num_crtcs =3D num_crtcs; > > - ret =3D drmm_add_action(dev, drm_vblank_init_release, NULL); > - if (ret) > - return ret; > - > for (i =3D 0; i < num_crtcs; i++) { > struct drm_vblank_crtc *vblank =3D &dev->vblank[i]; > > @@ -541,6 +533,11 @@ int drm_vblank_init(struct drm_device *dev, unsigned= int num_crtcs) > init_waitqueue_head(&vblank->queue); > timer_setup(&vblank->disable_timer, vblank_disable_fn, 0)= ; > seqlock_init(&vblank->seqlock); > + > + ret =3D drmm_add_action_or_reset(dev, drm_vblank_init_rel= ease, > + vblank); > + if (ret) > + return ret; > } > > DRM_INFO("Supports vblank timestamp caching Rev 2 (21.10.2013).\n= "); > -- > 2.25.4 > --=20 Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch