From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D47B4C6FA89 for ; Thu, 15 Sep 2022 00:33:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230189AbiIOAdF (ORCPT ); Wed, 14 Sep 2022 20:33:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230146AbiIOAcx (ORCPT ); Wed, 14 Sep 2022 20:32:53 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FE7C8A1E0 for ; Wed, 14 Sep 2022 17:32:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201963; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=d5wQaZFEzn9uIXApEc4pGB3KbziveTZ08VHPOZH9w9g=; b=b1DSYVCPqWqp9ZafBKaQPfmx/U8ZtBEKwhdul3pkxW2vv5I5CNozYn1MboDRlIhSRHiIrt tNjelMGEEJVeen1tzPmuB73wrtpdBesgR0NkIBJSy1WmqAaQJsPLQ/3dgh2ZFMXw9VJ0mU 6EzJJ7c9tqzYbXsjvZ9wLFEc3HQPh9s= Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-67-GrUKHXWiORKsvJG0gcHmzg-1; Wed, 14 Sep 2022 20:32:42 -0400 X-MC-Unique: GrUKHXWiORKsvJG0gcHmzg-1 Received: by mail-ed1-f69.google.com with SMTP id i17-20020a05640242d100b0044f18a5379aso12060034edc.21 for ; Wed, 14 Sep 2022 17:32:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=d5wQaZFEzn9uIXApEc4pGB3KbziveTZ08VHPOZH9w9g=; b=H3LhwxgQJPxf7F8SP7rBfjMBYu+U8En/IC9wrrtg6uGyuaNdGK4lMRWK9MJ1iYsRvr Iacng1BDwiNkCpz6M1zeRviGe3/0oSBveeX2s/UzStSR8tPFdJq/RXg4feV8vUHooCXx ij3NIlWEbhjDcllYADaWkuxqV5FskGEVUKT60s1TWvheyp0/NStSXeKdcXz/zm7UD7OT 8Sf0B0Wact/3yovbT9kKbG10xqr1E4o+gyzgr1YFskGuMKf8DaJ7k2Sp/Uk+hKPbZ2Dq asqsrVr3tWN+z/W2VTjsK/hyg23QMImHL9yvK5iyXD+9jDLcq9OiD7T1HfsTKg3pTVKH xEjw== X-Gm-Message-State: ACgBeo0pRODnspu8AekYu0PqbWkMPQie61JT66dT6Oz8zxkGMtkCjy3p C94Cd4M0+NwGDUzIpb/MOL6aBtHRy0JJTeqdUtfSvjs6AytcwzQoAa29tlvaDLe5KC0zTjIfZ4c WUYVSn+uwRWtLpu8fd0y27GTa X-Received: by 2002:a05:6402:22b6:b0:452:2682:a97d with SMTP id cx22-20020a05640222b600b004522682a97dmr11882530edb.309.1663201961083; Wed, 14 Sep 2022 17:32:41 -0700 (PDT) X-Google-Smtp-Source: AA6agR6/3UapABdzNolXQ2vgP3OvvIR9P2YBUWHPoDcwqjn2120CzBCoHv/jPhXemxEraXSszKCo4w== X-Received: by 2002:a05:6402:22b6:b0:452:2682:a97d with SMTP id cx22-20020a05640222b600b004522682a97dmr11882521edb.309.1663201960830; Wed, 14 Sep 2022 17:32:40 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id i5-20020a170906698500b007081282cbd8sm8185342ejr.76.2022.09.14.17.32.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:32:39 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 1/8] drm/fsl-dcu: use drmm_* to allocate driver structures Date: Thu, 15 Sep 2022 02:32:24 +0200 Message-Id: <20220915003231.363447-2-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use drm managed resources to allocate driver structures and get rid of the deprecated drm_dev_alloc() call and replace it with devm_drm_dev_alloc(). This also serves as preparation to get rid of drm_device->dev_private and to fix use-after-free issues on driver unload. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 7 ++--- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 30 +++++++++------------- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 2 +- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c | 19 +++++++------- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 8 +++--- 5 files changed, 31 insertions(+), 35 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/f= sl-dcu/fsl_dcu_drm_crtc.c index 2af60d98f48f..a1b8ce70928a 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c @@ -171,15 +171,16 @@ int fsl_dcu_drm_crtc_create(struct fsl_dcu_drm_device= *fsl_dev) { struct drm_plane *primary; struct drm_crtc *crtc =3D &fsl_dev->crtc; + struct drm_device *drm =3D &fsl_dev->base; int ret; =20 - fsl_dcu_drm_init_planes(fsl_dev->drm); + fsl_dcu_drm_init_planes(drm); =20 - primary =3D fsl_dcu_drm_primary_create_plane(fsl_dev->drm); + primary =3D fsl_dcu_drm_primary_create_plane(drm); if (!primary) return -ENOMEM; =20 - ret =3D drm_crtc_init_with_planes(fsl_dev->drm, crtc, primary, NULL, + ret =3D drm_crtc_init_with_planes(drm, crtc, primary, NULL, &fsl_dcu_drm_crtc_funcs, NULL); if (ret) { primary->funcs->destroy(primary); diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_drv.c index b4acc3422ba4..a47b72995fcf 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -168,6 +168,7 @@ static const struct drm_driver fsl_dcu_drm_driver =3D { static int fsl_dcu_drm_pm_suspend(struct device *dev) { struct fsl_dcu_drm_device *fsl_dev =3D dev_get_drvdata(dev); + struct drm_device *drm =3D &fsl_dev->base; int ret; =20 if (!fsl_dev) @@ -175,7 +176,7 @@ static int fsl_dcu_drm_pm_suspend(struct device *dev) =20 disable_irq(fsl_dev->irq); =20 - ret =3D drm_mode_config_helper_suspend(fsl_dev->drm); + ret =3D drm_mode_config_helper_suspend(drm); if (ret) { enable_irq(fsl_dev->irq); return ret; @@ -189,6 +190,7 @@ static int fsl_dcu_drm_pm_suspend(struct device *dev) static int fsl_dcu_drm_pm_resume(struct device *dev) { struct fsl_dcu_drm_device *fsl_dev =3D dev_get_drvdata(dev); + struct drm_device *drm =3D &fsl_dev->base; int ret; =20 if (!fsl_dev) @@ -202,10 +204,10 @@ static int fsl_dcu_drm_pm_resume(struct device *dev) =20 if (fsl_dev->tcon) fsl_tcon_bypass_enable(fsl_dev->tcon); - fsl_dcu_drm_init_planes(fsl_dev->drm); + fsl_dcu_drm_init_planes(drm); enable_irq(fsl_dev->irq); =20 - drm_mode_config_helper_resume(fsl_dev->drm); + drm_mode_config_helper_resume(drm); =20 return 0; } @@ -255,9 +257,10 @@ static int fsl_dcu_drm_probe(struct platform_device *p= dev) int ret; u8 div_ratio_shift =3D 0; =20 - fsl_dev =3D devm_kzalloc(dev, sizeof(*fsl_dev), GFP_KERNEL); - if (!fsl_dev) - return -ENOMEM; + fsl_dev =3D devm_drm_dev_alloc(dev, &fsl_dcu_drm_driver, + typeof(*fsl_dev), base); + if (IS_ERR(fsl_dev)) + return PTR_ERR(fsl_dev); =20 id =3D of_match_node(fsl_dcu_of_match, pdev->dev.of_node); if (!id) @@ -317,28 +320,19 @@ static int fsl_dcu_drm_probe(struct platform_device *= pdev) =20 fsl_dev->tcon =3D fsl_tcon_init(dev); =20 - drm =3D drm_dev_alloc(&fsl_dcu_drm_driver, dev); - if (IS_ERR(drm)) { - ret =3D PTR_ERR(drm); - goto unregister_pix_clk; - } - fsl_dev->dev =3D dev; - fsl_dev->drm =3D drm; fsl_dev->np =3D dev->of_node; drm->dev_private =3D fsl_dev; dev_set_drvdata(dev, fsl_dev); =20 ret =3D drm_dev_register(drm, 0); if (ret < 0) - goto put; + goto unregister_pix_clk; =20 drm_fbdev_generic_setup(drm, legacyfb_depth); =20 return 0; =20 -put: - drm_dev_put(drm); unregister_pix_clk: clk_unregister(fsl_dev->pix_clk); disable_clk: @@ -349,9 +343,9 @@ static int fsl_dcu_drm_probe(struct platform_device *pd= ev) static int fsl_dcu_drm_remove(struct platform_device *pdev) { struct fsl_dcu_drm_device *fsl_dev =3D platform_get_drvdata(pdev); + struct drm_device *drm =3D &fsl_dev->base; =20 - drm_dev_unregister(fsl_dev->drm); - drm_dev_put(fsl_dev->drm); + drm_dev_unregister(drm); clk_disable_unprepare(fsl_dev->clk); clk_unregister(fsl_dev->pix_clk); =20 diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_drv.h index e2049a0e8a92..20ca13ff618a 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h @@ -177,6 +177,7 @@ struct fsl_dcu_soc_data { }; =20 struct fsl_dcu_drm_device { + struct drm_device base; struct device *dev; struct device_node *np; struct regmap *regmap; @@ -186,7 +187,6 @@ struct fsl_dcu_drm_device { struct fsl_tcon *tcon; /*protects hardware register*/ spinlock_t irq_lock; - struct drm_device *drm; struct drm_crtc crtc; struct drm_encoder encoder; struct fsl_dcu_drm_connector connector; diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_kms.c index 5b47000738e4..c3d55c0aca9f 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c @@ -20,15 +20,16 @@ static const struct drm_mode_config_funcs fsl_dcu_drm_m= ode_config_funcs =3D { =20 int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *fsl_dev) { + struct drm_device *drm =3D &fsl_dev->base; int ret; =20 - drm_mode_config_init(fsl_dev->drm); + drm_mode_config_init(drm); =20 - fsl_dev->drm->mode_config.min_width =3D 0; - fsl_dev->drm->mode_config.min_height =3D 0; - fsl_dev->drm->mode_config.max_width =3D 2031; - fsl_dev->drm->mode_config.max_height =3D 2047; - fsl_dev->drm->mode_config.funcs =3D &fsl_dcu_drm_mode_config_funcs; + drm->mode_config.min_width =3D 0; + drm->mode_config.min_height =3D 0; + drm->mode_config.max_width =3D 2031; + drm->mode_config.max_height =3D 2047; + drm->mode_config.funcs =3D &fsl_dcu_drm_mode_config_funcs; =20 ret =3D fsl_dcu_drm_crtc_create(fsl_dev); if (ret) @@ -42,12 +43,12 @@ int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device = *fsl_dev) if (ret) goto err; =20 - drm_mode_config_reset(fsl_dev->drm); - drm_kms_helper_poll_init(fsl_dev->drm); + drm_mode_config_reset(drm); + drm_kms_helper_poll_init(drm); =20 return 0; =20 err: - drm_mode_config_cleanup(fsl_dev->drm); + drm_mode_config_cleanup(drm); return ret; } diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_rgb.c index 4d4a715b429d..b9b02f617cd2 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c @@ -22,6 +22,7 @@ int fsl_dcu_drm_encoder_create(struct fsl_dcu_drm_device = *fsl_dev, struct drm_crtc *crtc) { struct drm_encoder *encoder =3D &fsl_dev->encoder; + struct drm_device *drm =3D &fsl_dev->base; int ret; =20 encoder->possible_crtcs =3D 1; @@ -30,8 +31,7 @@ int fsl_dcu_drm_encoder_create(struct fsl_dcu_drm_device = *fsl_dev, if (fsl_dev->tcon) fsl_tcon_bypass_enable(fsl_dev->tcon); =20 - ret =3D drm_simple_encoder_init(fsl_dev->drm, encoder, - DRM_MODE_ENCODER_LVDS); + ret =3D drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_LVDS); if (ret < 0) return ret; =20 @@ -79,12 +79,12 @@ static int fsl_dcu_attach_panel(struct fsl_dcu_drm_devi= ce *fsl_dev, { struct drm_encoder *encoder =3D &fsl_dev->encoder; struct drm_connector *connector =3D &fsl_dev->connector.base; + struct drm_device *drm =3D &fsl_dev->base; int ret; =20 fsl_dev->connector.encoder =3D encoder; =20 - ret =3D drm_connector_init(fsl_dev->drm, connector, - &fsl_dcu_drm_connector_funcs, + ret =3D drm_connector_init(drm, connector, &fsl_dcu_drm_connector_funcs, DRM_MODE_CONNECTOR_LVDS); if (ret < 0) return ret; --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE113C6FA82 for ; Thu, 15 Sep 2022 00:33:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230193AbiIOAdU (ORCPT ); Wed, 14 Sep 2022 20:33:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230181AbiIOAdB (ORCPT ); Wed, 14 Sep 2022 20:33:01 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8C2C89913 for ; Wed, 14 Sep 2022 17:32:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201969; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=H68P8iepWfLJpYbHEar6qJMBNCk2+2oF4KGUobttlNs=; b=eS46ztdqi+o05aYnMnUPbthUlRgLEXmOqybd4i/buJ/4kqwgVxNbOktJglQbazR9E15GvC NEIAh/d77ap9a/92PwSXGQFey1luEVILJMtAU9eu+gTT3kPXabEcVfuov86EU79w6/JPtW z/R8P3VtVyxGH7U9gIdvuHnXyLPhRmE= Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-102-TIBDoH7oNw-3AVYUQLJkrw-1; Wed, 14 Sep 2022 20:32:48 -0400 X-MC-Unique: TIBDoH7oNw-3AVYUQLJkrw-1 Received: by mail-ej1-f72.google.com with SMTP id oz30-20020a1709077d9e00b0077239b6a915so6858269ejc.11 for ; Wed, 14 Sep 2022 17:32:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=H68P8iepWfLJpYbHEar6qJMBNCk2+2oF4KGUobttlNs=; b=i4GeSpZXEIazd9kinTIPjqoWRl12suaXG8ANtkCYljey3L0hjdrSPUw+4e98CrXqP2 Y4ilcCNVyWV6eLDJC6OIlYwugYU8GPZ/4XfIvCwiYvd+G4YXoA/dOntlJin9xNZrT2YA z86ufkwULtoXj19pREclOZP4Tjo2Tcl26GBx2YcQBHiR2VpdAtiOt5Jeo3/injXrCMo6 vfk3jsTYAbvVzNN5JwTkhyufewKTZD6aQMnFU4dfnvzc+avhQtsuLkgCgbsNPcvsj43L LT/YMVtvxb+clkg+SNSQL1ZNdHSLZyq2yoNF65xv2kQuKgOoji7hYvTIKQSVl+eP9sIR d2CA== X-Gm-Message-State: ACgBeo1rmyRfNrkwl1Odg9QKOi04K5j0LmMtzhcPk83ph39qqXOn1IVx qy2fQWx+2BFRs7TV4J/kci5XOoidulJWt5fKZTva0Ia8f80RC6wFnTjMpZcWoSul9t0OyweqoSw 0XM+eaGSaBq31J0xrQpshCe6/ X-Received: by 2002:a05:6402:4449:b0:445:cdb6:2de9 with SMTP id o9-20020a056402444900b00445cdb62de9mr32642910edb.59.1663201964988; Wed, 14 Sep 2022 17:32:44 -0700 (PDT) X-Google-Smtp-Source: AA6agR7XNJXfGvj3h4Jld1qFi2NofTMl3y+rFRcL6dz+AggRntBTERzg0GqzFfVhJIIbLhDdTFEEtw== X-Received: by 2002:a05:6402:4449:b0:445:cdb6:2de9 with SMTP id o9-20020a056402444900b00445cdb62de9mr32642901edb.59.1663201964831; Wed, 14 Sep 2022 17:32:44 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id s15-20020aa7c54f000000b004466f5375a5sm10786760edr.53.2022.09.14.17.32.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:32:44 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 2/8] drm/fsl-dcu: replace drm->dev_private with drm_to_fsl_dcu_drm_dev() Date: Thu, 15 Sep 2022 02:32:25 +0200 Message-Id: <20220915003231.363447-3-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Using drm_device->dev_private is deprecated. Since we've switched to devm_drm_dev_alloc(), struct drm_device is now embedded in struct malidp_drm, hence we can use container_of() to get the struct drm_device instance instead. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 12 ++++++------ drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 13 ++++--------- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h | 2 ++ drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c | 8 ++++---- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/f= sl-dcu/fsl_dcu_drm_crtc.c index a1b8ce70928a..e05311e2b0e0 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c @@ -24,7 +24,7 @@ static void fsl_dcu_drm_crtc_atomic_flush(struct drm_crtc= *crtc, struct drm_atomic_state *state) { struct drm_device *dev =3D crtc->dev; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); struct drm_pending_vblank_event *event =3D crtc->state->event; =20 regmap_write(fsl_dev->regmap, @@ -48,7 +48,7 @@ static void fsl_dcu_drm_crtc_atomic_disable(struct drm_cr= tc *crtc, struct drm_crtc_state *old_crtc_state =3D drm_atomic_get_old_crtc_state(s= tate, crtc); struct drm_device *dev =3D crtc->dev; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); =20 /* always disable planes on the CRTC */ drm_atomic_helper_disable_planes_on_crtc(old_crtc_state, true); @@ -67,7 +67,7 @@ static void fsl_dcu_drm_crtc_atomic_enable(struct drm_crt= c *crtc, struct drm_atomic_state *state) { struct drm_device *dev =3D crtc->dev; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); =20 clk_prepare_enable(fsl_dev->pix_clk); regmap_update_bits(fsl_dev->regmap, DCU_DCU_MODE, @@ -82,7 +82,7 @@ static void fsl_dcu_drm_crtc_atomic_enable(struct drm_crt= c *crtc, static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_crtc *crtc) { struct drm_device *dev =3D crtc->dev; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); struct drm_connector *con =3D &fsl_dev->connector.base; struct drm_display_mode *mode =3D &crtc->state->mode; unsigned int pol =3D 0; @@ -135,7 +135,7 @@ static const struct drm_crtc_helper_funcs fsl_dcu_drm_c= rtc_helper_funcs =3D { static int fsl_dcu_drm_crtc_enable_vblank(struct drm_crtc *crtc) { struct drm_device *dev =3D crtc->dev; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); unsigned int value; =20 regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); @@ -148,7 +148,7 @@ static int fsl_dcu_drm_crtc_enable_vblank(struct drm_cr= tc *crtc) static void fsl_dcu_drm_crtc_disable_vblank(struct drm_crtc *crtc) { struct drm_device *dev =3D crtc->dev; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); unsigned int value; =20 regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_drv.c index a47b72995fcf..4139f674c5de 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -52,7 +52,7 @@ static const struct regmap_config fsl_dcu_regmap_config = =3D { =20 static void fsl_dcu_irq_reset(struct drm_device *dev) { - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); =20 regmap_write(fsl_dev->regmap, DCU_INT_STATUS, ~0); regmap_write(fsl_dev->regmap, DCU_INT_MASK, ~0); @@ -61,7 +61,7 @@ static void fsl_dcu_irq_reset(struct drm_device *dev) static irqreturn_t fsl_dcu_drm_irq(int irq, void *arg) { struct drm_device *dev =3D arg; - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); unsigned int int_status; int ret; =20 @@ -91,7 +91,7 @@ static int fsl_dcu_irq_install(struct drm_device *dev, un= signed int irq) =20 static void fsl_dcu_irq_uninstall(struct drm_device *dev) { - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); =20 fsl_dcu_irq_reset(dev); free_irq(fsl_dev->irq, dev); @@ -99,7 +99,7 @@ static void fsl_dcu_irq_uninstall(struct drm_device *dev) =20 static int fsl_dcu_load(struct drm_device *dev, unsigned long flags) { - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); int ret; =20 ret =3D fsl_dcu_drm_modeset_init(fsl_dev); @@ -133,8 +133,6 @@ static int fsl_dcu_load(struct drm_device *dev, unsigne= d long flags) =20 drm_mode_config_cleanup(dev); done_vblank: - dev->dev_private =3D NULL; - return ret; } =20 @@ -145,8 +143,6 @@ static void fsl_dcu_unload(struct drm_device *dev) =20 drm_mode_config_cleanup(dev); fsl_dcu_irq_uninstall(dev); - - dev->dev_private =3D NULL; } =20 DEFINE_DRM_GEM_DMA_FOPS(fsl_dcu_drm_fops); @@ -322,7 +318,6 @@ static int fsl_dcu_drm_probe(struct platform_device *pd= ev) =20 fsl_dev->dev =3D dev; fsl_dev->np =3D dev->of_node; - drm->dev_private =3D fsl_dev; dev_set_drvdata(dev, fsl_dev); =20 ret =3D drm_dev_register(drm, 0); diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_drv.h index 20ca13ff618a..5b61d443da96 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.h @@ -193,6 +193,8 @@ struct fsl_dcu_drm_device { const struct fsl_dcu_soc_data *soc; }; =20 +#define drm_to_fsl_dcu_drm_dev(x) container_of(x, struct fsl_dcu_drm_devic= e, base) + int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *fsl_dev); =20 #endif /* __FSL_DCU_DRM_DRV_H__ */ diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c b/drivers/gpu/drm/= fsl-dcu/fsl_dcu_drm_plane.c index 794a87d16f88..91865956da02 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c @@ -22,7 +22,7 @@ =20 static int fsl_dcu_drm_plane_index(struct drm_plane *plane) { - struct fsl_dcu_drm_device *fsl_dev =3D plane->dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(plane->dev); unsigned int total_layer =3D fsl_dev->soc->total_layer; unsigned int index; =20 @@ -63,7 +63,7 @@ static int fsl_dcu_drm_plane_atomic_check(struct drm_plan= e *plane, static void fsl_dcu_drm_plane_atomic_disable(struct drm_plane *plane, struct drm_atomic_state *state) { - struct fsl_dcu_drm_device *fsl_dev =3D plane->dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(plane->dev); unsigned int value; int index; =20 @@ -80,7 +80,7 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_pl= ane *plane, struct drm_atomic_state *state) =20 { - struct fsl_dcu_drm_device *fsl_dev =3D plane->dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(plane->dev); struct drm_plane_state *new_state =3D drm_atomic_get_new_plane_state(stat= e, plane); struct drm_framebuffer *fb =3D plane->state->fb; @@ -194,7 +194,7 @@ static const u32 fsl_dcu_drm_plane_formats[] =3D { =20 void fsl_dcu_drm_init_planes(struct drm_device *dev) { - struct fsl_dcu_drm_device *fsl_dev =3D dev->dev_private; + struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); int i, j; =20 for (i =3D 0; i < fsl_dev->soc->total_layer; i++) { --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EF35C6FA82 for ; Thu, 15 Sep 2022 00:33:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230173AbiIOAd3 (ORCPT ); Wed, 14 Sep 2022 20:33:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230152AbiIOAdK (ORCPT ); Wed, 14 Sep 2022 20:33:10 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC2388B2C0 for ; Wed, 14 Sep 2022 17:32:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201971; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Xaw3iUtMLKwH2xCvo5P17z6DGidg5D+TvENUAVXK2ek=; b=OZ9NZ5puW7iyMjMsSmMoAYVQ6p+iKKdd1abqES+HrjMkNF17UxMUF8oVtCbfx/gtPma7lJ rTP3I/mfK0zJQMr045Hce55qFWAlLYcVjsDGKicaPEJb0qcQX7yOV+OUgD5Nu1fVfys1kZ 4jPC685c5/yoGQbaDPeW0LDtS6f1h6Y= Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-577-NawfuPHhMgCn1JdXbWnmiA-1; Wed, 14 Sep 2022 20:32:50 -0400 X-MC-Unique: NawfuPHhMgCn1JdXbWnmiA-1 Received: by mail-ed1-f71.google.com with SMTP id q32-20020a05640224a000b004462f105fa9so11716674eda.4 for ; Wed, 14 Sep 2022 17:32:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=Xaw3iUtMLKwH2xCvo5P17z6DGidg5D+TvENUAVXK2ek=; b=uUtKHenhd2PG82tdSsd4CUTkK+Vj2OwVXnpkbRKQthJWe2wLZ+ErS3yJpKcSqpUPnD 8O6vR9na+IcH3pPwPpu8SAIFtvCpADPWmsY4LcixXTya8MwEvkVv4Wvaca6wUGQHpIbx hz8I04pkOzeAgUxBXkIr2okti43buWqQHCb+/6QGs/+Vs/oR2ZXbGNVt2ArV+9u5qaz1 nFVGsOExaY0or/iLA1+KXHDxk5bjdnccdUS2+QvQr+WKRfON8RNRQTg3EqhSS6ZkXcMv W8J1Hr1VE6eTTS1JQdmEebSJEIIHovf70vfNo2+INlNrbzFXna9MNNDiWPRYYh+9f1nX 44WA== X-Gm-Message-State: ACgBeo0761na+v+CbaTikOQlmpRc4Xdt8C8OEaxHsZ3ugg42fPqORNby vgDjw78Pty5njR6B9mKmWIrbKiczJ067LKf4pkbI1rFxj6dLRdWfu3Wikg7mVMUzyKLJM/txzFq kl+UXfLkKnD8+qV4FLUCog2yT X-Received: by 2002:a17:907:6293:b0:769:9dfc:10eb with SMTP id nd19-20020a170907629300b007699dfc10ebmr28017386ejc.191.1663201969518; Wed, 14 Sep 2022 17:32:49 -0700 (PDT) X-Google-Smtp-Source: AA6agR76AUHZP7TSM1OI8rVca0sDWA90ENPNmx7n18UfSpYDwhdtincdX9d/3H678m4vxuSNRmwafw== X-Received: by 2002:a17:907:6293:b0:769:9dfc:10eb with SMTP id nd19-20020a170907629300b007699dfc10ebmr28017377ejc.191.1663201969380; Wed, 14 Sep 2022 17:32:49 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id s1-20020a056402014100b0044e8d0682b2sm10672079edu.71.2022.09.14.17.32.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:32:48 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 3/8] drm/fsl-dcu: crtc: use drmm_crtc_init_with_planes() Date: Thu, 15 Sep 2022 02:32:26 +0200 Message-Id: <20220915003231.363447-4-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use drmm_crtc_init_with_planes() instead of drm_crtc_init_with_planes() to get rid of the explicit destroy hook in struct drm_plane_funcs. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/f= sl-dcu/fsl_dcu_drm_crtc.c index e05311e2b0e0..0b70624260fc 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c @@ -159,7 +159,6 @@ static void fsl_dcu_drm_crtc_disable_vblank(struct drm_= crtc *crtc) static const struct drm_crtc_funcs fsl_dcu_drm_crtc_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_crtc_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_crtc_destroy_state, - .destroy =3D drm_crtc_cleanup, .page_flip =3D drm_atomic_helper_page_flip, .reset =3D drm_atomic_helper_crtc_reset, .set_config =3D drm_atomic_helper_set_config, @@ -180,8 +179,8 @@ int fsl_dcu_drm_crtc_create(struct fsl_dcu_drm_device *= fsl_dev) if (!primary) return -ENOMEM; =20 - ret =3D drm_crtc_init_with_planes(drm, crtc, primary, NULL, - &fsl_dcu_drm_crtc_funcs, NULL); + ret =3D drmm_crtc_init_with_planes(drm, crtc, primary, NULL, + &fsl_dcu_drm_crtc_funcs, NULL); if (ret) { primary->funcs->destroy(primary); return ret; --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0BD98C6FA82 for ; Thu, 15 Sep 2022 00:33:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230234AbiIOAdy (ORCPT ); Wed, 14 Sep 2022 20:33:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230219AbiIOAdP (ORCPT ); Wed, 14 Sep 2022 20:33:15 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FEB38992F for ; Wed, 14 Sep 2022 17:32:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201978; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OuGypoVnJNhzQ829OSUgv+IQ/uot1AKSMTgWYQGrHy8=; b=f1Hv1olr/BC82QWkCn49K8tZr41rQVUU6OltO34EMPMuHCEZW1GDIVa+QljZniYt3IO6Ti U/OT0wa+Egt6D2uB2nP6snzM4ZeaX3Uw6YBWkzCjznNe8gjXVV7UL3Olj9VHDOjAVouGwG 2Nio6gM4ncgOVfGTpbMr6aSXa3Ro0Fc= Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-494-R5SAjrXDNoWZYsDXay6zSw-1; Wed, 14 Sep 2022 20:32:57 -0400 X-MC-Unique: R5SAjrXDNoWZYsDXay6zSw-1 Received: by mail-ej1-f72.google.com with SMTP id qf40-20020a1709077f2800b0077b43f8b94cso5213485ejc.23 for ; Wed, 14 Sep 2022 17:32:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=OuGypoVnJNhzQ829OSUgv+IQ/uot1AKSMTgWYQGrHy8=; b=JCmO7JmF/qfbiUYC6//djKz0F7Fn3e1bLyLEw6nfT2w5GamoiE4WFIVcwnzeyKL8wB v3ZpuehZAxqqRJxo0Lzp5d9dabN8Li/1D5L+VEcHGMkDEiIwRS3cnkyKt1R0RtsBq7Zh r2ZLW5DkR1ALytNKAGa13K3XXxWaX2rgqojH9KmkXwZygv3AQFQ8b1sH5UL9txw9lX5y wR+IKAEIX4/vXDtBMgnrUZtZj1faA7rHVsA7L49EvmjqOYG8NPTWrqxRod9AAwDy7mVj KfIuHOBTBfHIT+uZFTPY4Cdp074If9o2PvAtj4EzXd4hG6I1q460yNhFK9/4WrXM06X7 gt/w== X-Gm-Message-State: ACgBeo1rpt+6CI6WxATJzxWC7mcfPX7g1yZo24sjgEGWxnlApuFd5XcD mMJE4ifR49w2ExeN+pEZDGQ/U+d/3R70E68Md7UQsd3z66/k6Oi9X2xqeI8htm7H+3AufdHt0dt ClrPgR2U5Y4p6A6DX8AyTTOhZ X-Received: by 2002:a17:907:75d4:b0:77a:fcb7:a2cc with SMTP id jl20-20020a17090775d400b0077afcb7a2ccmr17036615ejc.480.1663201974087; Wed, 14 Sep 2022 17:32:54 -0700 (PDT) X-Google-Smtp-Source: AA6agR4MNS6XjdMbm8wBWysxd/Ofibg9IanT71clyMWCRa2Ji1qtA7+ijOuAd2lmEatpGLIF+B5n7Q== X-Received: by 2002:a17:907:75d4:b0:77a:fcb7:a2cc with SMTP id jl20-20020a17090775d400b0077afcb7a2ccmr17036608ejc.480.1663201973936; Wed, 14 Sep 2022 17:32:53 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id o22-20020a056402039600b00450d23d40besm10663787edv.82.2022.09.14.17.32.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:32:52 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 4/8] drm/fsl-dcu: plane: use drm managed resources Date: Thu, 15 Sep 2022 02:32:27 +0200 Message-Id: <20220915003231.363447-5-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use drm managed resource allocation (drmm_universal_plane_alloc()) in order to get rid of the explicit destroy hook in struct drm_plane_funcs. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 4 ++-- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c | 25 ++++++++------------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/f= sl-dcu/fsl_dcu_drm_crtc.c index 0b70624260fc..1dad90f701c8 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c @@ -176,8 +176,8 @@ int fsl_dcu_drm_crtc_create(struct fsl_dcu_drm_device *= fsl_dev) fsl_dcu_drm_init_planes(drm); =20 primary =3D fsl_dcu_drm_primary_create_plane(drm); - if (!primary) - return -ENOMEM; + if (IS_ERR(primary)) + return PTR_ERR(primary); =20 ret =3D drmm_crtc_init_with_planes(drm, crtc, primary, NULL, &fsl_dcu_drm_crtc_funcs, NULL); diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c b/drivers/gpu/drm/= fsl-dcu/fsl_dcu_drm_plane.c index 91865956da02..23ff285da477 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c @@ -174,7 +174,6 @@ static const struct drm_plane_helper_funcs fsl_dcu_drm_= plane_helper_funcs =3D { static const struct drm_plane_funcs fsl_dcu_drm_plane_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_plane_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_plane_destroy_state, - .destroy =3D drm_plane_helper_destroy, .disable_plane =3D drm_atomic_helper_disable_plane, .reset =3D drm_atomic_helper_plane_reset, .update_plane =3D drm_atomic_helper_update_plane, @@ -206,24 +205,18 @@ void fsl_dcu_drm_init_planes(struct drm_device *dev) struct drm_plane *fsl_dcu_drm_primary_create_plane(struct drm_device *dev) { struct drm_plane *primary; - int ret; - - primary =3D kzalloc(sizeof(*primary), GFP_KERNEL); - if (!primary) { - DRM_DEBUG_KMS("Failed to allocate primary plane\n"); - return NULL; - } =20 /* possible_crtc's will be filled in later by crtc_init */ - ret =3D drm_universal_plane_init(dev, primary, 0, - &fsl_dcu_drm_plane_funcs, - fsl_dcu_drm_plane_formats, - ARRAY_SIZE(fsl_dcu_drm_plane_formats), - NULL, DRM_PLANE_TYPE_PRIMARY, NULL); - if (ret) { - kfree(primary); - primary =3D NULL; + primary =3D drmm_universal_plane_alloc(dev, struct drm_plane, dev, 0, + &fsl_dcu_drm_plane_funcs, + fsl_dcu_drm_plane_formats, + ARRAY_SIZE(fsl_dcu_drm_plane_formats), + NULL, DRM_PLANE_TYPE_PRIMARY, NULL); + if (IS_ERR(primary)) { + DRM_DEBUG_KMS("Failed to create primary plane\n"); + return primary; } + drm_plane_helper_add(primary, &fsl_dcu_drm_plane_helper_funcs); =20 return primary; --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3FAB2C6FA82 for ; Thu, 15 Sep 2022 00:34:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230250AbiIOAd7 (ORCPT ); Wed, 14 Sep 2022 20:33:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230179AbiIOAdS (ORCPT ); Wed, 14 Sep 2022 20:33:18 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B54158B9AE for ; Wed, 14 Sep 2022 17:33:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AJ+r++kfC5cLOYGbcZ2ityl6Btvuyg0jJylQkWmqY/s=; b=hqaWhVC3FAYexTCvNgLp2WIRqm/ZJo5/pXvlDHh6wne9CZsiQMmf8ZjWNJLZE2zDSlwgvO avHKuhOuPSpPHYWh2fR7b4Z4JpycjhbeWcO9CpCtt1CA36QfY4n6KMC5DoHetV2p0/1a32 Ik1+Jz3dI9lV+mYjQNjd3kdrzrJ5EL0= Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-192-s9gK1FDOPQ2uuOZkGRaH-g-1; Wed, 14 Sep 2022 20:32:59 -0400 X-MC-Unique: s9gK1FDOPQ2uuOZkGRaH-g-1 Received: by mail-ej1-f69.google.com with SMTP id jg32-20020a170907972000b0077ce313a8f0so4662025ejc.15 for ; Wed, 14 Sep 2022 17:32:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=AJ+r++kfC5cLOYGbcZ2ityl6Btvuyg0jJylQkWmqY/s=; b=Ut82wuY9Hv6E209hCJmPx5irnyz61NUT3yBDX26Z89DEPDkng1noDq80MjiYfd7PUE yUG8j2VXVkaw3BjV2x2jCFRCo3MvqHxLLhScsIZUffn8zoC/C/Ah0imwpFEFEn3EKjIV G87lO/1cjm7eMoaGkBg/n/2Db/CZ8NseqbY70OzIhbq+28dzM+LzxCdzDpRJBdNQs7ir 9TPd2V7zWRY09cEip/B8TB9QCBqrkk0nEjV3a6P/T/O6cOGPB80WJM2rRwpy6RV3LqgP aHCe6WVqn9bCf8ZgoK47+YXQVWM+yyeFRXHoiy6w9VNDNgCAjFh5S2rxGFAOOTmWsOX+ d2/w== X-Gm-Message-State: ACgBeo19mbsK1b7b87Tq+siDIEHgI35lg46/k2Th4PU0j6iahVYag+KG Cwt3dj3G8NTuvfYMGR+qgXWjJ3ea2eScuq+Fqth4kHB3+2ViXS1sRsr16ahBwBE7PXGTKXT/B4V igxZn38VmZXZSEsTfQLjNUtRM X-Received: by 2002:a17:907:a05:b0:77b:b538:6476 with SMTP id bb5-20020a1709070a0500b0077bb5386476mr15229458ejc.324.1663201978450; Wed, 14 Sep 2022 17:32:58 -0700 (PDT) X-Google-Smtp-Source: AA6agR6aUx7J56s8B+MvIs3ZSkyOZ3rDzmk5K47Dc+uS1kdk6njw7e3KJEUrvUuZKRX+25BjZL8S0w== X-Received: by 2002:a17:907:a05:b0:77b:b538:6476 with SMTP id bb5-20020a1709070a0500b0077bb5386476mr15229452ejc.324.1663201978310; Wed, 14 Sep 2022 17:32:58 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id c18-20020a17090618b200b00773f3ccd989sm8240828ejf.68.2022.09.14.17.32.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:32:57 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 5/8] drm/fsl-dcu: use drm_dev_unplug() Date: Thu, 15 Sep 2022 02:32:28 +0200 Message-Id: <20220915003231.363447-6-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" When the driver is unbound, there might still be users in userspace having an open fd and are calling into the driver. While this is fine for drm managed resources, it is not for resources bound to the device/driver lifecycle, e.g. clocks or MMIO mappings. To prevent use-after-free issues we need to protect those resources with drm_dev_enter() and drm_dev_exit(). This does only work if we indicate that the drm device was unplugged, hence use drm_dev_unplug() instead of drm_dev_unregister(). Protecting the particular resources with drm_dev_enter()/drm_dev_exit() is handled by subsequent patches. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_drv.c index 4139f674c5de..3ac57516c3fe 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -340,7 +340,7 @@ static int fsl_dcu_drm_remove(struct platform_device *p= dev) struct fsl_dcu_drm_device *fsl_dev =3D platform_get_drvdata(pdev); struct drm_device *drm =3D &fsl_dev->base; =20 - drm_dev_unregister(drm); + drm_dev_unplug(drm); clk_disable_unprepare(fsl_dev->clk); clk_unregister(fsl_dev->pix_clk); =20 --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA33EECAAD3 for ; Thu, 15 Sep 2022 00:34:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230238AbiIOAeH (ORCPT ); Wed, 14 Sep 2022 20:34:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230195AbiIOAdV (ORCPT ); Wed, 14 Sep 2022 20:33:21 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1EF058D3D1 for ; Wed, 14 Sep 2022 17:33:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FtNtNsp7OqPqPE1l1U/CkF2qeKiAYQ9N67dyPKGWxE4=; b=jRtZwV7GIpVBggCrgeYjmMCHwItkbfmaZI4+nRgP6ZrM53fK5cJ089Q0NEpOSaEnv0n1qs gyc/9TUEPZWRVkfJbBxBd2OfCS3R/Fns4TC3MYYD4vFizYkrevF8pEk2Oxh2MJ2E8XFDX7 xcH2yU/OJ4uVBtEdUyQSfmR6x0eE0Yo= Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-163-AU7zZzpsOXO8MiZWMmKuWw-1; Wed, 14 Sep 2022 20:33:03 -0400 X-MC-Unique: AU7zZzpsOXO8MiZWMmKuWw-1 Received: by mail-ed1-f72.google.com with SMTP id dz21-20020a0564021d5500b0045217702048so6509788edb.5 for ; Wed, 14 Sep 2022 17:33:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=FtNtNsp7OqPqPE1l1U/CkF2qeKiAYQ9N67dyPKGWxE4=; b=uKOZKhXAZ0uMFmV4/VwqMISg5iF/VtQmEE/pT9hKoczfdZA43Sj6f8t/0y+AC+XLhO QTB+kPZYIVVfvcU5cRnKsyPuwh/32X/0kxqHycUwq/tEwBV3kql0gBwpXJkDgBQodq9Q vhUyWPJs6MJKnBnIuYjNRlHQNPd4c4pXLZdqJC01ITzIHUe54tT9pUoEVbpbjRc+P8so fbQCWVeBSX9TYto7E0Zoh4IG4x3YoPzC8opPmcxcppraRWcW6H50K2E9MRQwt2Ujr5cE wYBqCsViJcNAk2BqtSGQKXgjhGrdH9Z359FRicJ0eBLWEwyDc4xV953A4BGZ4xvQeAt7 il6Q== X-Gm-Message-State: ACgBeo3duo1NAeRkzzEXM6wazGYUB9xQm0qpVJFIfCzDhvPwBRxW8X1J bD+L9FY4YSDHWNaWzq+phxMyvIXA63TdLtJLAMrw5hoR25fRrDyfSvOtbSCAxF5U3aT51nfKdtJ C3N7uyV+kz63LC9BQ5451xIDM X-Received: by 2002:a17:907:e9e:b0:77f:9688:2714 with SMTP id ho30-20020a1709070e9e00b0077f96882714mr9587299ejc.208.1663201982187; Wed, 14 Sep 2022 17:33:02 -0700 (PDT) X-Google-Smtp-Source: AA6agR5ZRBZU53BRdNeyOhVVcill9G3iLRkCUJ/jYRhr4Dk+1M2YpVqKN5hH2aUWRV4Wra1YNWfF2A== X-Received: by 2002:a17:907:e9e:b0:77f:9688:2714 with SMTP id ho30-20020a1709070e9e00b0077f96882714mr9587289ejc.208.1663201981992; Wed, 14 Sep 2022 17:33:01 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id kx25-20020a170907775900b0073d70df6e56sm8240280ejc.138.2022.09.14.17.33.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:33:01 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 6/8] drm/fsl-dcu: plane: protect device resources after removal Date: Thu, 15 Sep 2022 02:32:29 +0200 Message-Id: <20220915003231.363447-7-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" (Hardware) resources which are bound to the driver and device lifecycle must not be accessed after the device and driver are unbound. However, the DRM device isn't freed as long as the last user didn't close it, hence userspace can still call into the driver. Therefore protect the critical sections which are accessing those resources with drm_dev_enter() and drm_dev_exit(). Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c b/drivers/gpu/drm/= fsl-dcu/fsl_dcu_drm_plane.c index 23ff285da477..1be3062a95df 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -65,7 +66,10 @@ static void fsl_dcu_drm_plane_atomic_disable(struct drm_= plane *plane, { struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(plane->dev); unsigned int value; - int index; + int index, idx; + + if (!drm_dev_enter(plane->dev, &idx)) + return; =20 index =3D fsl_dcu_drm_plane_index(plane); if (index < 0) @@ -74,6 +78,8 @@ static void fsl_dcu_drm_plane_atomic_disable(struct drm_p= lane *plane, regmap_read(fsl_dev->regmap, DCU_CTRLDESCLN(index, 4), &value); value &=3D ~DCU_LAYER_EN; regmap_write(fsl_dev->regmap, DCU_CTRLDESCLN(index, 4), value); + + drm_dev_exit(idx); } =20 static void fsl_dcu_drm_plane_atomic_update(struct drm_plane *plane, @@ -86,7 +92,10 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_p= lane *plane, struct drm_framebuffer *fb =3D plane->state->fb; struct drm_gem_dma_object *gem; unsigned int alpha =3D DCU_LAYER_AB_NONE, bpp; - int index; + int index, idx; + + if (!drm_dev_enter(plane->dev, &idx)) + return; =20 if (!fb) return; @@ -162,6 +171,7 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_= plane *plane, DCU_LAYER_PRE_SKIP(0)); } =20 + drm_dev_exit(idx); return; } =20 --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08F01C6FA82 for ; Thu, 15 Sep 2022 00:34:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230142AbiIOAe3 (ORCPT ); Wed, 14 Sep 2022 20:34:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230111AbiIOAd4 (ORCPT ); Wed, 14 Sep 2022 20:33:56 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9D468A1C7 for ; Wed, 14 Sep 2022 17:33:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663201999; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IqWM55e5x02znRK55veSvbQ977VUM5OMWrptzYqj4WI=; b=W9/nw2jv3HxF+4UEJ5ZqV9OSTTeEV3ilZPqjiOc7r7MCeyhT4MdRIk0JKAofVmJkFyQK3y zqEvT9v19SloV83rKDsyvEPUCdXmMziCNLr2QZ1l3j2xBy4kIXrkxHG9sG57tcWlaaCGQD NLYYwd3wRHObZl5QY7WJ5JXMK78aJo0= Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-636-Unpv0UoAMwOKq71vvshR7Q-1; Wed, 14 Sep 2022 20:33:07 -0400 X-MC-Unique: Unpv0UoAMwOKq71vvshR7Q-1 Received: by mail-ej1-f72.google.com with SMTP id nb35-20020a1709071ca300b007805be52049so139917ejc.17 for ; Wed, 14 Sep 2022 17:33:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=IqWM55e5x02znRK55veSvbQ977VUM5OMWrptzYqj4WI=; b=aDEEWnQlto/7OguHUJ0b7KXdZoW1zpiUD0nilqtoHabm0VuQACga01n3XdYgEl8GPz eGZZm59UkAX5kFtZVXp8a0EUhXIAlQ8+FhLbcdNV8Ooe7sP2pkYmwEWL+mwlpnSW6+zo SZk4xlSiczFkqUInT5FqlZElMy9FIGaOBEKHTE90UI+sQR73i8KwkRjT3EgDBBNniY7+ 6stKjjplYWSZwvLFGVTU4PunDUuAABEcrlyi4uObXE/01mkhpaDS//iA+eDQY7E4lVw2 919/1oLmekJqcf8S9fEmf7WagsOz4fxrH0nHa6Ptb9Jgoa5z85dYXJyBB4lRH2iKmKU6 rpAw== X-Gm-Message-State: ACgBeo121QN35AQ/8CPNdzKzIOoxl01uKBc/dawbFAJyAWr03RiRgq7f ChWbq+6Rb5z0g0cxSIV6jCohhkSPxZ/DioylH3mEqoIH6uV+3rqN/bsLBnb98MWejSfwTTSIqAx Y5uj9A0+KeB0jP1vwQtSRSyJR X-Received: by 2002:a17:907:94d4:b0:77f:d0c9:573f with SMTP id dn20-20020a17090794d400b0077fd0c9573fmr8146058ejc.98.1663201986324; Wed, 14 Sep 2022 17:33:06 -0700 (PDT) X-Google-Smtp-Source: AA6agR6iVRAQ1Z8stFf5ouzhJoapY1r+dUfoumzBdmir+QwjM/bFap5BDDwaSqryltzmVKD37aquAA== X-Received: by 2002:a17:907:94d4:b0:77f:d0c9:573f with SMTP id dn20-20020a17090794d400b0077fd0c9573fmr8146041ejc.98.1663201986181; Wed, 14 Sep 2022 17:33:06 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id p20-20020a056402155400b004479cec6496sm10715506edx.75.2022.09.14.17.33.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:33:05 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 7/8] drm/fsl-dcu: crtc: protect device resources after removal Date: Thu, 15 Sep 2022 02:32:30 +0200 Message-Id: <20220915003231.363447-8-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" (Hardware) resources which are bound to the driver and device lifecycle must not be accessed after the device and driver are unbound. However, the DRM device isn't freed as long as the last user didn't close it, hence userspace can still call into the driver. Therefore protect the critical sections which are accessing those resources with drm_dev_enter() and drm_dev_exit(). Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/f= sl-dcu/fsl_dcu_drm_crtc.c index 1dad90f701c8..c77df9b7893f 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include =20 @@ -26,6 +27,10 @@ static void fsl_dcu_drm_crtc_atomic_flush(struct drm_crt= c *crtc, struct drm_device *dev =3D crtc->dev; struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); struct drm_pending_vblank_event *event =3D crtc->state->event; + int idx; + + if (!drm_dev_enter(dev, &idx)) + return; =20 regmap_write(fsl_dev->regmap, DCU_UPDATE_MODE, DCU_UPDATE_MODE_READREG); @@ -40,6 +45,8 @@ static void fsl_dcu_drm_crtc_atomic_flush(struct drm_crtc= *crtc, drm_crtc_send_vblank_event(crtc, event); spin_unlock_irq(&crtc->dev->event_lock); } + + drm_dev_exit(idx); } =20 static void fsl_dcu_drm_crtc_atomic_disable(struct drm_crtc *crtc, @@ -49,6 +56,10 @@ static void fsl_dcu_drm_crtc_atomic_disable(struct drm_c= rtc *crtc, crtc); struct drm_device *dev =3D crtc->dev; struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); + int idx; + + if (!drm_dev_enter(dev, &idx)) + return; =20 /* always disable planes on the CRTC */ drm_atomic_helper_disable_planes_on_crtc(old_crtc_state, true); @@ -61,6 +72,8 @@ static void fsl_dcu_drm_crtc_atomic_disable(struct drm_cr= tc *crtc, regmap_write(fsl_dev->regmap, DCU_UPDATE_MODE, DCU_UPDATE_MODE_READREG); clk_disable_unprepare(fsl_dev->pix_clk); + + drm_dev_exit(idx); } =20 static void fsl_dcu_drm_crtc_atomic_enable(struct drm_crtc *crtc, @@ -68,6 +81,10 @@ static void fsl_dcu_drm_crtc_atomic_enable(struct drm_cr= tc *crtc, { struct drm_device *dev =3D crtc->dev; struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); + int idx; + + if (!drm_dev_enter(dev, &idx)) + return; =20 clk_prepare_enable(fsl_dev->pix_clk); regmap_update_bits(fsl_dev->regmap, DCU_DCU_MODE, @@ -77,6 +94,8 @@ static void fsl_dcu_drm_crtc_atomic_enable(struct drm_crt= c *crtc, DCU_UPDATE_MODE_READREG); =20 drm_crtc_vblank_on(crtc); + + drm_dev_exit(idx); } =20 static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_crtc *crtc) @@ -87,6 +106,10 @@ static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_c= rtc *crtc) struct drm_display_mode *mode =3D &crtc->state->mode; unsigned int pol =3D 0; struct videomode vm; + int idx; + + if (!drm_dev_enter(dev, &idx)) + return; =20 clk_set_rate(fsl_dev->pix_clk, mode->clock * 1000); =20 @@ -122,6 +145,8 @@ static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_c= rtc *crtc) DCU_THRESHOLD_LS_BF_VS(BF_VS_VAL) | DCU_THRESHOLD_OUT_BUF_HIGH(BUF_MAX_VAL) | DCU_THRESHOLD_OUT_BUF_LOW(BUF_MIN_VAL)); + + drm_dev_exit(idx); return; } =20 @@ -137,11 +162,17 @@ static int fsl_dcu_drm_crtc_enable_vblank(struct drm_= crtc *crtc) struct drm_device *dev =3D crtc->dev; struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); unsigned int value; + int idx; + + if (!drm_dev_enter(dev, &idx)) + return -ENODEV; =20 regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); value &=3D ~DCU_INT_MASK_VBLANK; regmap_write(fsl_dev->regmap, DCU_INT_MASK, value); =20 + drm_dev_exit(idx); + return 0; } =20 @@ -150,10 +181,16 @@ static void fsl_dcu_drm_crtc_disable_vblank(struct dr= m_crtc *crtc) struct drm_device *dev =3D crtc->dev; struct fsl_dcu_drm_device *fsl_dev =3D drm_to_fsl_dcu_drm_dev(dev); unsigned int value; + int idx; + + if (!drm_dev_enter(dev, &idx)) + return; =20 regmap_read(fsl_dev->regmap, DCU_INT_MASK, &value); value |=3D DCU_INT_MASK_VBLANK; regmap_write(fsl_dev->regmap, DCU_INT_MASK, value); + + drm_dev_exit(idx); } =20 static const struct drm_crtc_funcs fsl_dcu_drm_crtc_funcs =3D { --=20 2.37.3 From nobody Fri Apr 3 06:40:49 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35018ECAAD3 for ; Thu, 15 Sep 2022 00:34:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230159AbiIOAef (ORCPT ); Wed, 14 Sep 2022 20:34:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230228AbiIOAeD (ORCPT ); Wed, 14 Sep 2022 20:34:03 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A1648D3F4 for ; Wed, 14 Sep 2022 17:33:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1663202000; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UrTT7QwQof63VN7IDSDKfIt2sJtV3+I3xYSNcLHiNaY=; b=TpTcnpMKOpKcegZnA5EhsEt7r5kSIt5d5Denj+U8M4hWmjxsR4bAZEl5IGjrJXc4s+hvs+ F6XQgFGu/Njmdq2LEX1FyEttrLpoajzKdE88DXyb24O7Jn7xeGQXTjAP0mGNzN7qfcfoto WG4z9eO70FBgXAsqS+HsrftbTLPPVKI= Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-436-T7oj1C5EM3aNlSIIqvSQaw-1; Wed, 14 Sep 2022 20:33:11 -0400 X-MC-Unique: T7oj1C5EM3aNlSIIqvSQaw-1 Received: by mail-ed1-f70.google.com with SMTP id w20-20020a05640234d400b00450f24c8ca6so11783462edc.13 for ; Wed, 14 Sep 2022 17:33:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=UrTT7QwQof63VN7IDSDKfIt2sJtV3+I3xYSNcLHiNaY=; b=KYt8X7tIFJQCTwrv3sLPCEi258wRuVNvLCRk5LEos5D05CwCDyfL+GKffddFgoYDVw 2yaQkMMOgrqdGFwVGhpPXqX5BqqpsYBxnSsWcWElE6FwjDkeVW5DrEoFrXozhhXMMbRS uyjkq/ma+tLUKO9l0urqNDA+UBE/AZ7DwXj4Co8c6Kfpp+mWS6iDzMTGJ0QbXMeS/IEF DTtzv3uvw8RGo0v9/jWX+BX9VmTZe5qPampKPDjZ7HHCy1wA8ut5WKFsFXtIA/sJ7v+j HG6fl+nY3pH3bpIMxTyDVY05mHwe4UYO+ll6fZOzpNsv/n4XHL1wfGx00a4QNv9zuucl ZJag== X-Gm-Message-State: ACgBeo0Jq/xEWv1S0zfvgFz1cIq6qxtox0tZTKWEmqLu2R0Hn4w4/S/7 WDTTme7SG2F+6d9odF4J9d+HPqiGshL+6zFujiH9iyai/v+Jy/DdPECoT9r1TQckViw2/DHrInP TXv5TbeBAwIyOZCtYba4P0b9Y X-Received: by 2002:a17:907:b09:b0:76f:99cc:81cd with SMTP id h9-20020a1709070b0900b0076f99cc81cdmr26426926ejl.530.1663201990444; Wed, 14 Sep 2022 17:33:10 -0700 (PDT) X-Google-Smtp-Source: AA6agR5g8V/nPxzHQDJZl0DRT92LXzhiR3i8YcPsXKLctBnnQWAlIwXPYox1IBRFR7Ze6l8SXhLAKA== X-Received: by 2002:a17:907:b09:b0:76f:99cc:81cd with SMTP id h9-20020a1709070b0900b0076f99cc81cdmr26426916ejl.530.1663201990310; Wed, 14 Sep 2022 17:33:10 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id p5-20020a50cd85000000b0043ba7df7a42sm10701852edi.26.2022.09.14.17.33.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 17:33:09 -0700 (PDT) From: Danilo Krummrich To: daniel@ffwll.ch, airlied@linux.ie, tzimmermann@suse.de, mripard@kernel.org, stefan@agner.ch, alison.wang@nxp.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Danilo Krummrich Subject: [PATCH drm-misc-next 8/8] drm/fsl-dcu: remove trailing return statements Date: Thu, 15 Sep 2022 02:32:31 +0200 Message-Id: <20220915003231.363447-9-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220915003231.363447-1-dakr@redhat.com> References: <20220915003231.363447-1-dakr@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Remove the trailing return statements at the end of void functions. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 1 - drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/f= sl-dcu/fsl_dcu_drm_crtc.c index c77df9b7893f..23687551c831 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c @@ -147,7 +147,6 @@ static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_c= rtc *crtc) DCU_THRESHOLD_OUT_BUF_LOW(BUF_MIN_VAL)); =20 drm_dev_exit(idx); - return; } =20 static const struct drm_crtc_helper_funcs fsl_dcu_drm_crtc_helper_funcs = =3D { diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c b/drivers/gpu/drm/= fsl-dcu/fsl_dcu_drm_plane.c index 1be3062a95df..d0a14b5b506e 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c @@ -172,7 +172,6 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_= plane *plane, } =20 drm_dev_exit(idx); - return; } =20 static const struct drm_plane_helper_funcs fsl_dcu_drm_plane_helper_funcs = =3D { --=20 2.37.3