[PATCH 01/24] drm/armada: Use devm_drm_dev_alloc

Dave Airlie airlied at gmail.com
Thu Sep 10 01:20:41 UTC 2020


For the two armada patches.

Reviewed-by: Dave Airlie <airlied at redhat.com>

On Sat, 5 Sep 2020 at 00:40, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
>
> Also remove the now no longer needed build bug on since that's already
> not needed anymore with drmm_add_final_kfree. Conversion to managed
> drm_device cleanup is easy, the final drm_dev_put() is already the
> last thing in both the bind unbind as in the unbind flow.
>
> Also, this relies on component.c correctly wrapping bind&unbind in
> separate devres groups, which it does.
>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> Cc: Russell King <linux at armlinux.org.uk>
> ---
>  drivers/gpu/drm/armada/armada_drv.c | 26 ++++++--------------------
>  1 file changed, 6 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
> index 5fc25c3f445c..a8d5908b3922 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -87,24 +87,13 @@ static int armada_drm_bind(struct device *dev)
>                                      "armada-drm"))
>                 return -EBUSY;
>
> -       priv = kzalloc(sizeof(*priv), GFP_KERNEL);
> -       if (!priv)
> -               return -ENOMEM;
> -
> -       /*
> -        * The drm_device structure must be at the start of
> -        * armada_private for drm_dev_put() to work correctly.
> -        */
> -       BUILD_BUG_ON(offsetof(struct armada_private, drm) != 0);
> -
> -       ret = drm_dev_init(&priv->drm, &armada_drm_driver, dev);
> -       if (ret) {
> -               dev_err(dev, "[" DRM_NAME ":%s] drm_dev_init failed: %d\n",
> -                       __func__, ret);
> -               kfree(priv);
> -               return ret;
> +       priv = devm_drm_dev_alloc(dev, &armada_drm_driver,
> +                                 struct armada_private, drm);
> +       if (IS_ERR(priv)) {
> +               dev_err(dev, "[" DRM_NAME ":%s] devm_drm_dev_alloc failed: %li\n",
> +                       __func__, PTR_ERR(priv));
> +               return PTR_ERR(priv);
>         }
> -       drmm_add_final_kfree(&priv->drm, priv);
>
>         /* Remove early framebuffers */
>         ret = drm_fb_helper_remove_conflicting_framebuffers(NULL,
> @@ -174,7 +163,6 @@ static int armada_drm_bind(struct device *dev)
>   err_kms:
>         drm_mode_config_cleanup(&priv->drm);
>         drm_mm_takedown(&priv->linear);
> -       drm_dev_put(&priv->drm);
>         return ret;
>  }
>
> @@ -194,8 +182,6 @@ static void armada_drm_unbind(struct device *dev)
>
>         drm_mode_config_cleanup(&priv->drm);
>         drm_mm_takedown(&priv->linear);
> -
> -       drm_dev_put(&priv->drm);
>  }
>
>  static int compare_of(struct device *dev, void *data)
> --
> 2.28.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list