From nobody Sun Apr 28 20:00:48 2024 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 D0F30C433FE for ; Sat, 1 Oct 2022 14:58:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229625AbiJAO6Y (ORCPT ); Sat, 1 Oct 2022 10:58:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49154 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229548AbiJAO6R (ORCPT ); Sat, 1 Oct 2022 10:58:17 -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 9B0A89AFD1 for ; Sat, 1 Oct 2022 07:58:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636294; 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=Fzjxn7w4rx1mqMTR505zo3FraEs0YT1lBoxwn5zgxwHQyARrqZXmVISRL3Wb4QMxSsTMAQ onHEgRVKd5nFzESfrTxpxuw4dOdkVp7xkuIVFXoaO2XXyEJT8bY7huigjrgslMXyVlPxyC w1eIIMo6Ziq8v9vfk/sylpuCQYyX/Ts= 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-426-GVe-venlN7-ZSS_481PLfQ-1; Sat, 01 Oct 2022 10:58:12 -0400 X-MC-Unique: GVe-venlN7-ZSS_481PLfQ-1 Received: by mail-ed1-f69.google.com with SMTP id dz21-20020a0564021d5500b0045217702048so5564605edb.5 for ; Sat, 01 Oct 2022 07:58:12 -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=mI6kTGhw7+UBnD0a4i+8gJHsuXsAsiQPSS/YACw+As5LT22K/wy6D4O5Y/UKt4F+Jv w+Yu9OG2OH0tSq6bj5kuokAxmTJjL6ZK2Nj0OOaHgxMXWCNtOFdNZWCJ3kM1GbNdrmkS Qo5IEEjmD+5lo+t0uNGIgq7QqxyogYCe/Ej3pb6R/+RUXfPkgXbybIjUcHxjX+3tKdib JRtA2QrjvRkloqsCq7thwVe4P/GKV7npF0YQ0NaSqCO+cDbMgKe2pIIXf4REHDgmlcqh Q99GVBNaCgkzBT0dUo9Y7Ym2deiykPWfds6TFlWbhNNzs03n8smiAaLA7wcH8TjWX77l KPvA== X-Gm-Message-State: ACrzQf3Vq5VjDJZjO6nU8FkEsOsCP7z2xFmpBZd4dSzuv7P2q2ReOSPQ GKpESYykNLtQuF0ipJBovwSKaLeQW4i4k9uZ4kEeCVZhFju3ZwobPnsdOmPMlU4j9nLHEGCjKu/ SY/NVBvesBarVfCCYoZ2ZLzYV X-Received: by 2002:aa7:cd4f:0:b0:458:6077:c3ac with SMTP id v15-20020aa7cd4f000000b004586077c3acmr8383491edw.32.1664636291354; Sat, 01 Oct 2022 07:58:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5quDAMs15O1EjA+ONIf+6V51idpelHTXT3LBeScuciqSA9637lLszp8q/Y+fE9d7gydpiI7A== X-Received: by 2002:aa7:cd4f:0:b0:458:6077:c3ac with SMTP id v15-20020aa7cd4f000000b004586077c3acmr8383476edw.32.1664636291177; Sat, 01 Oct 2022 07:58:11 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id q1-20020a17090609a100b00772b5835c12sm2841964eje.23.2022.10.01.07.58.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:10 -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 v2 1/9] drm/fsl-dcu: use drmm_* to allocate driver structures Date: Sat, 1 Oct 2022 16:57:54 +0200 Message-Id: <20221001145802.515916-2-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 Sun Apr 28 20:00:48 2024 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 38AE2C433F5 for ; Sat, 1 Oct 2022 14:58:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229712AbiJAO6g (ORCPT ); Sat, 1 Oct 2022 10:58:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229614AbiJAO6W (ORCPT ); Sat, 1 Oct 2022 10:58:22 -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 D6AF09C202 for ; Sat, 1 Oct 2022 07:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636300; 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=LGvpllU2Hta5T+Mec7FgAtz77lXsK76XE6VTeXr+AzSws94PwCh0XIYy5oJNEPDDBf/lry OnSjSdfOhzgGQQ3pVfuAfUKzfL9wHoutG2kvOJZbZrlFUFTnVVZrzlv834sXIdH+mon7sC thrFc4enq3XugY6/Ta3P6OaFzPt2jNY= 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-638-rBbNq1aaOzSvT-6IdySe0Q-1; Sat, 01 Oct 2022 10:58:16 -0400 X-MC-Unique: rBbNq1aaOzSvT-6IdySe0Q-1 Received: by mail-ed1-f69.google.com with SMTP id f10-20020a0564021e8a00b00451be6582d5so5646817edf.15 for ; Sat, 01 Oct 2022 07:58:16 -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=B3bzUn3LTK0MrtCvbhOqMUUhVeYqIHASgnAXzfIZ0rZR4y9Y1mKkYbv2fuqbSne1DF +PrdEgZaq7vsIaLkN/2cCmolrARCaAixqxGakLRAhF8o9fufe9vb+6w6nUM9zE2mfodp JeWQzDUkhvXFNWo+EAGF6XNKQcAeGQnr8uJGGhxeqMTvC9IFs4gEHr59yHDRpfcrWkhj vwV4skSKJWs/JvuXck9ptqT/NgIJcyctVtiqBFd7B7WhzCoyNRIc6STzk2IoTkGlRw6T EBrZx4z7/7WHckRGUL+Fe0nvsCoOdfEa8KfFNvKiBQTr1RpQcjHFKWaBp0FxL67l9Ri3 e6bg== X-Gm-Message-State: ACrzQf0QDnyvnP4hNNpHUR7Ls/y1UB3urXMJSVFdJp3JaH2AviVqruAT cMgsUQw2EUuJADRbskeA4S+sBMhFHyfgRwdk2cXfnoxjsmNhkCfjLbn+uQ5loGIZNLI+c9dvodT kJTDOrYzQqhVtcmcDlQqMEsA2 X-Received: by 2002:a17:907:1607:b0:788:799e:dc97 with SMTP id hb7-20020a170907160700b00788799edc97mr4561647ejc.747.1664636295093; Sat, 01 Oct 2022 07:58:15 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5VJBdJUX0WjKukx6WE4HACChCOch/Y067lt40Lp/eZFkvVlX4nIZuEOa8HPfaHF1kX200UDQ== X-Received: by 2002:a17:907:1607:b0:788:799e:dc97 with SMTP id hb7-20020a170907160700b00788799edc97mr4561641ejc.747.1664636294860; Sat, 01 Oct 2022 07:58:14 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id p20-20020a1709066a9400b0072f112a6ad2sm2805616ejr.97.2022.10.01.07.58.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:14 -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 v2 2/9] drm/fsl-dcu: replace drm->dev_private with drm_to_fsl_dcu_drm_dev() Date: Sat, 1 Oct 2022 16:57:55 +0200 Message-Id: <20221001145802.515916-3-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 Sun Apr 28 20:00:48 2024 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 C5A0EC4332F for ; Sat, 1 Oct 2022 14:58:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229577AbiJAO6l (ORCPT ); Sat, 1 Oct 2022 10:58:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229617AbiJAO6W (ORCPT ); Sat, 1 Oct 2022 10:58:22 -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 8EEEC9AFD1 for ; Sat, 1 Oct 2022 07:58:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636300; 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=Ge4wTODCgNuMHZufQDdz2TGzLs4/Ip2i7Ymjah1Pr1oDc2vyzlurNKIS5mMyoxJBcMWPSz ID4ajHct3ZhDt2UfEQgUKreSZnWIe6gRMIzE0LCZwfDi3lYKpxApUw4C+LyH3CDuf/zJ4g LVOUJIBOJ2M6JZq/7hgia/T/ZqIo5Hc= 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-150-fxRw21DRPmedLVRNxM9ZIw-1; Sat, 01 Oct 2022 10:58:19 -0400 X-MC-Unique: fxRw21DRPmedLVRNxM9ZIw-1 Received: by mail-ed1-f69.google.com with SMTP id r11-20020a05640251cb00b004516feb8c09so5609652edd.10 for ; Sat, 01 Oct 2022 07:58:19 -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=oYyt3iYqGBsoNWKBpZja/qnYrRhMW9qJVxklkGQUoozLaOrbqHjcO0sKWXMG6+f9Iu ypSm0tFDtaqYgYvJ+PiW75kUxeEfNMudWLuG38rxmV3SjEbUnmnHnkjXR8LROg7DBnV7 MAPN9kc8i/CnuDVeTaTveSornHashHaxMf/a6R7xo/iNAgF94A4XF5LtpvDxqskpx9Ul YCcAJvFgO0gLBKcwxxu7DHvE+sZLt31atd+knAx5ZYULjXxYPs6578K0vIMXTNjJ1F5V t9yvF/VX2QMDdMlcYIoVg22+DYsR7Qdu38E99sBAMUenEpHurCZLuOXdZ6tRwraH4PCU yH3Q== X-Gm-Message-State: ACrzQf077iUDGtt/7q6yFvhfDf4C1Wv39zVjleSGBj8WDe/rZn4x/ibZ bj60CLtlmc1yygFMMZipVcjqxdABW/8tTvu8qgEpHvHccNIDyDfQdqkBSvSxlemEXgmVcXr/Wr8 tZUxTuv+hsFEOezg6w9rmKKgo X-Received: by 2002:a17:907:3e03:b0:722:e694:438 with SMTP id hp3-20020a1709073e0300b00722e6940438mr9931985ejc.755.1664636298702; Sat, 01 Oct 2022 07:58:18 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6McnwQbh25ByTVLN8VQt9u6fQvaQzvbsTHh1j6XxDmkF9GAiQCD/6b0HFlFj3pU/ONxJXXjQ== X-Received: by 2002:a17:907:3e03:b0:722:e694:438 with SMTP id hp3-20020a1709073e0300b00722e6940438mr9931973ejc.755.1664636298531; Sat, 01 Oct 2022 07:58:18 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id q21-20020a17090676d500b0072af4af2f46sm2816338ejn.74.2022.10.01.07.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:18 -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 v2 3/9] drm/fsl-dcu: crtc: use drmm_crtc_init_with_planes() Date: Sat, 1 Oct 2022 16:57:56 +0200 Message-Id: <20221001145802.515916-4-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 Sun Apr 28 20:00:48 2024 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 722D1C433FE for ; Sat, 1 Oct 2022 14:58:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229722AbiJAO6r (ORCPT ); Sat, 1 Oct 2022 10:58:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229623AbiJAO62 (ORCPT ); Sat, 1 Oct 2022 10:58:28 -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 C46FD9C216 for ; Sat, 1 Oct 2022 07:58:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636305; 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=OSUjilZe4+amow3pM51i/xyAvYws5izoC2t4GsHMjnVOeu996QzTnGqzFVZDYY/sbFccfv SDjib9PNML39rbnpxC15baBSlIt/aW2joZsHgJE8d2LkbKT5yYCvtjE9h1K7LdJRzpgjCP Qwloc6C+QsZWN5lZgBo9CFhM0Q3PY9Y= 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-235-ytc08axIMHW4n763tzxVLQ-1; Sat, 01 Oct 2022 10:58:23 -0400 X-MC-Unique: ytc08axIMHW4n763tzxVLQ-1 Received: by mail-ed1-f69.google.com with SMTP id h11-20020a05640250cb00b004580ee86ca8so5522312edb.6 for ; Sat, 01 Oct 2022 07:58:23 -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=Wd1yUDHWc5SOdeMwxwaOgvtKU0eW5LIIlzPONJyDBThBtz4h2LwzNKTI4DOI5WDghn eiSnRAeYbMo7sgqrghfg2za3GN6FuMAmCj+b4oFcJaVMoAuDZp16bubjnxRn7B2ghaRv Mb1sO/fDmdDJhCOr8Umx2DhfYnWkaMBv7Evo9kgZzInUX6sD7iA3BlCdGxw1Yu04KLxS KxEmCI6GRXZKX6eVuAsV4fqX6gnR3UuTjsmHeHScKddowR0gqpRwAAt4teM1rT79L73N 7HdLj0wHQJTflAtfQvfD1Jti/xr4MckSU7ssmEyLR6hKWl1Dbg6+7AbygF4ZPAkqEtzA RIQg== X-Gm-Message-State: ACrzQf3Pix0tr7GxokvDT+09fyfpe2gTus/tNLVK/qrbT9wtOzSuiHH5 rMR6ZiDAeOx2lP58IUi8M7ilENJdf/7Y7iQHfC5P9WHruoPHAKDBaEeUWjnOkjllB1MJEZPT201 ifrHa08E8NB/Kc21D9rWBM3Fl X-Received: by 2002:a17:907:75c6:b0:788:e57b:e809 with SMTP id jl6-20020a17090775c600b00788e57be809mr3735267ejc.381.1664636302382; Sat, 01 Oct 2022 07:58:22 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6tYvJN/BoUijgGJpiQA9gruyLcr6e+s4NgjahO10nZI7Z+Sz0VARMJ4HyrIlczlfiZU4mzZw== X-Received: by 2002:a17:907:75c6:b0:788:e57b:e809 with SMTP id jl6-20020a17090775c600b00788e57be809mr3735257ejc.381.1664636302172; Sat, 01 Oct 2022 07:58:22 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id y8-20020a056402358800b0044dbecdcd29sm3761029edc.12.2022.10.01.07.58.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:21 -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 v2 4/9] drm/fsl-dcu: plane: use drm managed resources Date: Sat, 1 Oct 2022 16:57:57 +0200 Message-Id: <20221001145802.515916-5-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 Sun Apr 28 20:00:48 2024 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 3E65FC433FE for ; Sat, 1 Oct 2022 14:58:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229727AbiJAO6u (ORCPT ); Sat, 1 Oct 2022 10:58:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229662AbiJAO6a (ORCPT ); Sat, 1 Oct 2022 10:58:30 -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 3776A9C7F6 for ; Sat, 1 Oct 2022 07:58:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636308; 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=TMd0s6h1NJMCxlh0BQdQ+98pGnrkjR2itHYk8K51O4Dc5Tt/TqsjgzM7S++IRWhz11svBx tm0J0vSPCL11BWR7JvjOvljJgl40HWEebSySO5Z42qmWvmc8dGBLVlwerZIgS/o8rz9UE5 vNuJKzvaris5o+henvXj5O7FwqudWW0= 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-532-j_ihxcmzPC6OesEF_CUH5Q-1; Sat, 01 Oct 2022 10:58:27 -0400 X-MC-Unique: j_ihxcmzPC6OesEF_CUH5Q-1 Received: by mail-ed1-f72.google.com with SMTP id f18-20020a056402355200b0045115517911so5606533edd.14 for ; Sat, 01 Oct 2022 07:58:26 -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=UJYVzNEiWRjv1k4ATIMXZbqPwjryqExVqJKv1o8aKRs5Z+Sksx5aMW+XAsLcHswJsi AKm9oNbabB27K2rijdo+T+0M14Y28xXgUkrMXf/E1SlVKSmV3rUxIWGF3uhNk5eX6sml 6fM8wYXu7KICE6AcM9KYrffiLrbp+4kXLFOM9HYsPRiRonqEhHV4ey42+5h7bZle5EiO L6oZQo2VzBOCqhXH2xLkJVtQw17z2IaxFBliLJrGlJtKqdG7+p66IllA4D4dqSsmGbP/ hMtYlNNmnBIkAmyCINxQpvBYtGuo3JvSj/1Jp5BGFI/iFWeU2qsuAeZUSqAjiyoGBR/C kLWQ== X-Gm-Message-State: ACrzQf13D8nC8rofUsQ3Is1qjvW3YDYo/sdnV7DMS6cXdBQc3TPYkKY5 XqZXoWqOH+61KLpjxttF1aiyCv6Dq+xR9fpZ+1wtZShDefc8XR8dkWKOwJX6QOeAy1V+1Gs3UEs zgps3xIWic54mbZRdiJR0UNwx X-Received: by 2002:a05:6402:d58:b0:458:5eca:a2c9 with SMTP id ec24-20020a0564020d5800b004585ecaa2c9mr8666626edb.306.1664636306052; Sat, 01 Oct 2022 07:58:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4syfsKXsxvYYfn7fvRiEa9nCMbGy+JIuRGwK9SSQu/V4k3YaMKliTq0OSkaegLlpeFXpoyig== X-Received: by 2002:a05:6402:d58:b0:458:5eca:a2c9 with SMTP id ec24-20020a0564020d5800b004585ecaa2c9mr8666615edb.306.1664636305905; Sat, 01 Oct 2022 07:58:25 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id 17-20020a170906301100b00731582babcasm2832561ejz.71.2022.10.01.07.58.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:25 -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 v2 5/9] drm/fsl-dcu: use drm_dev_unplug() Date: Sat, 1 Oct 2022 16:57:58 +0200 Message-Id: <20221001145802.515916-6-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 Sun Apr 28 20:00:48 2024 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 23930C433F5 for ; Sat, 1 Oct 2022 14:59:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229763AbiJAO7D (ORCPT ); Sat, 1 Oct 2022 10:59:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229643AbiJAO6h (ORCPT ); Sat, 1 Oct 2022 10:58:37 -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 4622A9D51C for ; Sat, 1 Oct 2022 07:58:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636312; 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=fbBek+DLo1uAiT4bxT5GcOfjUqanpBLVsNY+19U/h8w=; b=eNyPeVYMMlBk062ZQbD0iPX/yzVBBm8RIGB9pBuvgp1EHMeZGkXiIPuC5phkTO7rfT87FR kMiR+qQcmjLV64F78KzU8G7dKZI85nip3YOQSVIxnOYtSXJZ3gidrpkqlLv0paqLlomgrs t8wU/gcjH754+/7fmiGzQKJLGAG/yak= 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-574-r5B_i9gHNey1wq78Rbayqw-1; Sat, 01 Oct 2022 10:58:30 -0400 X-MC-Unique: r5B_i9gHNey1wq78Rbayqw-1 Received: by mail-ed1-f71.google.com with SMTP id x5-20020a05640226c500b00451ec193793so5651959edd.16 for ; Sat, 01 Oct 2022 07:58:30 -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=fbBek+DLo1uAiT4bxT5GcOfjUqanpBLVsNY+19U/h8w=; b=tEN4rDOfBfwIYAeQADlAgPQe7z/xMABRfOuZUAOSPcgF7WNFp/WtJo04t0j1ETAymA Srf2ESKvO4UhXj536S4H8KbneckAU8ratYRZoDeP74dUSm+0TJ7+9hhrMSLJXLppXH3U bu4NRFy31P45q11AQVOlYY2Sr2g5kLbQEUQwUr5MX/WADwSb8QCgA85bAuM+wt6VSi6v ry0mhIWqm0uBg1nnKgYSNwRbtqdcy7/fFYPwDScinR/+c5Co4sDOY7ic7T6V6Uu1fKMv EeyYzhcq5uPRUeEF/E7JBmaVmF3kQ9Ky9l3skG0ufa9P90WjVgqEdk+8qEm/hGd0fHvY iiqg== X-Gm-Message-State: ACrzQf37drYHCDbmU1gPVMzAZVv+J/ffaYMndhJoNyJHH3qxSpofaUAD 7COkFELGsz47JZKgCsM9FhgccU5E8NE5WGYnfyOKsusqTgBOi3nYW6BCSR4O1AdNOOnGoQdg3zv 0+jytKdmLYHs4QJAExenUTcNr X-Received: by 2002:a17:907:845:b0:731:2f6c:6dbd with SMTP id ww5-20020a170907084500b007312f6c6dbdmr9754614ejb.551.1664636309696; Sat, 01 Oct 2022 07:58:29 -0700 (PDT) X-Google-Smtp-Source: AMsMyM77lcdC7sJsRPEhN5747tLtzHdni0e5EG5ogppqYZX80M+PrQk5aORErJsk4Ntf6tTYwo6zXw== X-Received: by 2002:a17:907:845:b0:731:2f6c:6dbd with SMTP id ww5-20020a170907084500b007312f6c6dbdmr9754596ejb.551.1664636309517; Sat, 01 Oct 2022 07:58:29 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id cb15-20020a0564020b6f00b004576e3aee69sm3768376edb.4.2022.10.01.07.58.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:29 -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 v2 6/9] drm/fsl-dcu: plane: protect device resources after removal Date: Sat, 1 Oct 2022 16:57:59 +0200 Message-Id: <20221001145802.515916-7-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 | 24 +++++++++++++++------ 1 file changed, 18 insertions(+), 6 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..b1305f0af9d5 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,15 +66,21 @@ 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) - return; + goto out; =20 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); + +out: + drm_dev_exit(idx); } =20 static void fsl_dcu_drm_plane_atomic_update(struct drm_plane *plane, @@ -86,14 +93,17 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_= plane *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; =20 - if (!fb) + if (!drm_dev_enter(plane->dev, &idx)) return; =20 + if (!fb) + goto out; + index =3D fsl_dcu_drm_plane_index(plane); if (index < 0) - return; + goto out; =20 gem =3D drm_fb_dma_get_gem_obj(fb, 0); =20 @@ -126,7 +136,7 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_= plane *plane, bpp =3D FSL_DCU_YUV422; break; default: - return; + goto out; } =20 regmap_write(fsl_dev->regmap, DCU_CTRLDESCLN(index, 1), @@ -162,6 +172,8 @@ static void fsl_dcu_drm_plane_atomic_update(struct drm_= plane *plane, DCU_LAYER_PRE_SKIP(0)); } =20 +out: + drm_dev_exit(idx); return; } =20 --=20 2.37.3 From nobody Sun Apr 28 20:00:48 2024 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 C0BE9C4332F for ; Sat, 1 Oct 2022 14:59:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229743AbiJAO7Q (ORCPT ); Sat, 1 Oct 2022 10:59:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229704AbiJAO7A (ORCPT ); Sat, 1 Oct 2022 10:59:00 -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 C6ACD9DFB5 for ; Sat, 1 Oct 2022 07:58:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636317; 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=XZYAaFtWCsu0wJs5SYMv151hpBcdiXxO0/uJVMndEicJJ4pDT0vf1OOmUwgQ1RcYK5EXV9 cNmJsYW2TTZii2EqE0IO1ZfdN3dYNow+AQxuOD5q7tlTlOuwHVtnPWDlMw1t1moS8/uB6z JjvQ8CtXq+KeQJqGezazFrFTigCVKQA= 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-333-8CCcJDjAMF-UxmxvVMR2vg-1; Sat, 01 Oct 2022 10:58:34 -0400 X-MC-Unique: 8CCcJDjAMF-UxmxvVMR2vg-1 Received: by mail-ed1-f71.google.com with SMTP id t13-20020a056402524d00b00452c6289448so5656536edd.17 for ; Sat, 01 Oct 2022 07:58:34 -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=2KV84S4gyldXMVFo9DuJnCcOqTTrY9QesjBhPenghV2yv04I+DKyHDlJ0o+1C23uS3 N1iZsfKNyDKQ8731WM2kq5C4KR3QOMhxMrbA8+/0+659WVnonkFU2OfJMGXpbY87ePQm qmCQTv4TnpCsuVlNrqiqT/+NdqDPPY9TEmlKpNaEC5JDGaMYJneEAQQ7O64bLP9277Gt mJ8CFq92t498/IMxQ4CXO9oO5bDOo7ldMIb13tUbwoe6cq1OJIItt/VwIRME+ZmSK6N/ 5TFpbv6TvlmzrpS94XfLAUBTWkJHcvi2CvM5hU50N47KFzxXGPXf/yX42qqSZnD9KNeL jPFQ== X-Gm-Message-State: ACrzQf1eCOOtSWqmKyZfMiDLhGku34AmRr/6tcMUD10D3wi2PwcOEtL9 sxvOrebLmWH3FrZNKcrOGB+poFFY+CnNbm/uRZPgJyr4k5+o4WBhyvUMzj+/gNCqCViQODdQ7Vr yZ7L0Wuv/gvgy3E54LSUbGJJc X-Received: by 2002:a17:907:6ea4:b0:782:6b82:a2cb with SMTP id sh36-20020a1709076ea400b007826b82a2cbmr10122992ejc.408.1664636313407; Sat, 01 Oct 2022 07:58:33 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7yvsyArbVNFdDnwv/ocXdiRliElOJYmVUR11MG6/x3BFrrdNeYB3g5s60MP+XkB94O71odTg== X-Received: by 2002:a17:907:6ea4:b0:782:6b82:a2cb with SMTP id sh36-20020a1709076ea400b007826b82a2cbmr10122982ejc.408.1664636313177; Sat, 01 Oct 2022 07:58:33 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id i26-20020a50fc1a000000b00457c9b7ac07sm3649245edr.84.2022.10.01.07.58.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:32 -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 v2 7/9] drm/fsl-dcu: crtc: protect device resources after removal Date: Sat, 1 Oct 2022 16:58:00 +0200 Message-Id: <20221001145802.515916-8-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 Sun Apr 28 20:00:48 2024 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 134F6C433F5 for ; Sat, 1 Oct 2022 14:59:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229817AbiJAO7Z (ORCPT ); Sat, 1 Oct 2022 10:59:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229650AbiJAO7B (ORCPT ); Sat, 1 Oct 2022 10:59:01 -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 07F839E691 for ; Sat, 1 Oct 2022 07:58:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636319; 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=V/3Usn0qxo83EKXGxCer0F1RKa2ZQEkOpzpL2CjOlas=; b=TbccEn55uWC+ntpweff5hG+jtLFR5T7RGH0r96/hB/sdkSt0g+yYCzOHqwQqKz/nXe2Cxu cGJXtivPtO3jz81FsBx7i0ngTyRjFgzIVJsf7FGJ6lmqO7s+eXEXAIXRvcwe/74FymPFuF MkvcRn+oDsvaETakw8gp+SUBpmL+CH0= 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-459-4RSpzVohOS2z3EFadAUrSw-1; Sat, 01 Oct 2022 10:58:38 -0400 X-MC-Unique: 4RSpzVohOS2z3EFadAUrSw-1 Received: by mail-ed1-f71.google.com with SMTP id y14-20020a056402440e00b0044301c7ccd9so5594574eda.19 for ; Sat, 01 Oct 2022 07:58:38 -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=V/3Usn0qxo83EKXGxCer0F1RKa2ZQEkOpzpL2CjOlas=; b=8P2d3Ov7SUCVUTqEeA5+wsGzGgtttS4pJFlWN9ng2NKFkm9nhPyHTLiGTCl+wEzNKJ 8Gzn1D0YvqTWI633yRjJ68qMXsMBbUv4VkIRvBuPGjPHVHNaHZcAaRAQzVyLqRu1uTbo nr+fgN8gjd+8yqJ2aeSA8EGmfzzqAKVesh19YaAeiSVwuTMNb4nwAWrWhIw0QDLMF9UB pjR+are5pnG4C0mYpp+ZRgspjU2vo9nMaWp7MblR4xBvowNUm7Qr3wyHFi3p1xZHqvok P/Ak54nXp+rUK6KgxA6giUhD6bMn5bl4A1/IMSJVhmtrR5Cop5NX4HsGdm4YQloYvh2K WBPg== X-Gm-Message-State: ACrzQf2ZOjoTMqh+85Rahb0Qyvzb6V3dL2ssZoJNk2Zrw5VgGYpWus/C E4GUG3Y/mYFvZXqvEiwR3iCnp3qhqvqUotWTPTsTS4MUHWrlwcoQScYJshk+leNQ9I6IYkVt3Hy BIUXOA6niQl4ag/HgmxfiHLK9 X-Received: by 2002:a17:907:1b1c:b0:72f:9aac:ee41 with SMTP id mp28-20020a1709071b1c00b0072f9aacee41mr9815149ejc.56.1664636317150; Sat, 01 Oct 2022 07:58:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM46nLpKvPd5A48MwRU0YYtpmobTJ4KvgIEBc3OFsMZ1VMWEAONqeJWMYiLUogbRofwIWzwDfQ== X-Received: by 2002:a17:907:1b1c:b0:72f:9aac:ee41 with SMTP id mp28-20020a1709071b1c00b0072f9aacee41mr9815139ejc.56.1664636316950; Sat, 01 Oct 2022 07:58:36 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id e20-20020a170906c01400b007803083a36asm2805616ejz.115.2022.10.01.07.58.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:36 -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 v2 8/9] drm/fsl-dcu: remove trailing return statements Date: Sat, 1 Oct 2022 16:58:01 +0200 Message-Id: <20221001145802.515916-9-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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 b1305f0af9d5..b95dca47de3e 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 void fsl_dcu_drm_plane_atomic_update(struct drm_= plane *plane, =20 out: drm_dev_exit(idx); - return; } =20 static const struct drm_plane_helper_funcs fsl_dcu_drm_plane_helper_funcs = =3D { --=20 2.37.3 From nobody Sun Apr 28 20:00:48 2024 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 75357C433FE for ; Sat, 1 Oct 2022 14:59:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229823AbiJAO7e (ORCPT ); Sat, 1 Oct 2022 10:59:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229723AbiJAO7D (ORCPT ); Sat, 1 Oct 2022 10:59:03 -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 492CF9F8C8 for ; Sat, 1 Oct 2022 07:58:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664636323; 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=kkvjlmHN1GT70TYbeV/tCW9Fb42UM2HGXIPJtWzhOMU=; b=CDFtKro91D2ktCeOCqm7wmu97p2qItE7+WWq9JlnR50nnKLqBDJWiElO7yvTsTdAkRqTjJ GCVpW7p8jbgreSOB/9QLRWXE3ppD4WuO/wxKVMkZHnaWVA0Eh6SKTPbiOFUGpEYNHXlzO8 N3Z+vh1l9TZp1Uf8CxqH2djSJ2aopks= 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-101-3TBHzHeDPx2Dae5J3MMNxg-1; Sat, 01 Oct 2022 10:58:42 -0400 X-MC-Unique: 3TBHzHeDPx2Dae5J3MMNxg-1 Received: by mail-ed1-f70.google.com with SMTP id m13-20020a056402510d00b004519332f0b1so5587921edd.7 for ; Sat, 01 Oct 2022 07:58:41 -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=kkvjlmHN1GT70TYbeV/tCW9Fb42UM2HGXIPJtWzhOMU=; b=q//p9AusQup3jn2M3dxSj43HnIOMsHneyQ7oRb22O9NkUoN8KOZn320b2iYFBUx3D5 8l6U9b6a9N1aWqNSgnLhPzY0ZX69Q4weoeCE3oXO+UbDrr47Z0/T+a+0fgspe5mvD+XX TWCAbkZwX+6i7Zmmpc6RT5JCUmYI8irB1bHUavjAe3K+mbtXalZOBpvOhpcBo4nZFMml RUeNG7x97qYSQXRgDnSPLpUzKPD7YSjOay19GcEBqFbt1+35s6Ui/0LSIXanibJ+dFOL 4XGs4XoWtvnxgQL3x3Zi3ceBnDrgGfvZpbB6+P/gAyptXf87Bf9BDeFKrFRCb06kfmqO PcKw== X-Gm-Message-State: ACrzQf0uVYo49+K6P32C5V+nq4zVP2IEVwNQJGgknpmPKcWgTMufVy2z ZvyGnIXeTHjWdZ1lBVz4j2EqIa00j+wmfqFkPkO+ZT9dQn91rsSfBgzbIXDqvGQeUa3308txd13 5pfdzYwiIlRDWdFwioNkxU5f8 X-Received: by 2002:a17:906:8461:b0:78a:5e7c:a46b with SMTP id hx1-20020a170906846100b0078a5e7ca46bmr368869ejc.592.1664636320785; Sat, 01 Oct 2022 07:58:40 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6iCEsOFNwU2idahd/mpe75sVMBpercNJiTFFD1VX3LoGxt69klTiFnKH/4LCENoljmciJjXw== X-Received: by 2002:a17:906:8461:b0:78a:5e7c:a46b with SMTP id hx1-20020a170906846100b0078a5e7ca46bmr368859ejc.592.1664636320624; Sat, 01 Oct 2022 07:58:40 -0700 (PDT) Received: from pollux.redhat.com ([2a02:810d:4b40:2ee8:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id la15-20020a170907780f00b007812ba2a360sm2868328ejc.149.2022.10.01.07.58.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 07:58:40 -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 v2 9/9] drm/fsl-dcu: remove calls to drm_mode_config_cleanup() Date: Sat, 1 Oct 2022 16:58:02 +0200 Message-Id: <20221001145802.515916-10-dakr@redhat.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221001145802.515916-1-dakr@redhat.com> References: <20221001145802.515916-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" drm_mode_config_init() simply calls drmm_mode_config_init(), hence cleanup is automatically handled through registering drm_mode_config_cleanup() with drmm_add_action_or_reset(). While at it, get rid of the deprecated drm_mode_config_init() and replace it with drmm_mode_config_init() directly. Signed-off-by: Danilo Krummrich --- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 4 +--- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c | 5 +++-- 2 files changed, 4 insertions(+), 5 deletions(-) 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 3ac57516c3fe..cb74ae663f25 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -128,10 +128,9 @@ static int fsl_dcu_load(struct drm_device *dev, unsign= ed long flags) } =20 return 0; + done_irq: drm_kms_helper_poll_fini(dev); - - drm_mode_config_cleanup(dev); done_vblank: return ret; } @@ -141,7 +140,6 @@ static void fsl_dcu_unload(struct drm_device *dev) drm_atomic_helper_shutdown(dev); drm_kms_helper_poll_fini(dev); =20 - drm_mode_config_cleanup(dev); fsl_dcu_irq_uninstall(dev); } =20 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 c3d55c0aca9f..219ca539dedd 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c @@ -23,7 +23,9 @@ int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *f= sl_dev) struct drm_device *drm =3D &fsl_dev->base; int ret; =20 - drm_mode_config_init(drm); + ret =3D drmm_mode_config_init(drm); + if (ret) + goto err; =20 drm->mode_config.min_width =3D 0; drm->mode_config.min_height =3D 0; @@ -49,6 +51,5 @@ int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *f= sl_dev) return 0; =20 err: - drm_mode_config_cleanup(drm); return ret; } --=20 2.37.3