[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