public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
* [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
       [not found] <20200221210319.2245170-1-daniel.vetter@ffwll.ch>
@ 2020-02-21 21:03 ` Daniel Vetter
  2020-02-24 19:13   ` Francesco Lavra
  0 siblings, 1 reply; 13+ messages in thread
From: Daniel Vetter @ 2020-02-21 21:03 UTC (permalink / raw)
  To: DRI Development
  Cc: Heiko Stübner, Daniel Vetter, Intel Graphics Development,
	Sandy Huang, linux-rockchip, Laurent Pinchart, Daniel Vetter,
	linux-arm-kernel

It's (almost, there's some iommu stuff without significance) right
above the drm_dev_put().

This is made possible by a preceeding patch which added a drmm_
cleanup action to drm_mode_config_init(), hence all we need to do to
ensure that drm_mode_config_cleanup() is run on final drm_device
cleanup is check the new error code for _init().

Aside: Another driver with a bit much devm_kzalloc, which should
probably use drmm_kzalloc instead ...

v2: Explain why this cleanup is possible (Laurent).

Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
Cc: Sandy Huang <hjc@rock-chips•com>
Cc: "Heiko Stübner" <heiko@sntech•de>
Cc: linux-arm-kernel@lists•infradead.org
Cc: linux-rockchip@lists•infradead.org
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 20ecb1508a22..d0eba21eebc9 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -135,7 +135,9 @@ static int rockchip_drm_bind(struct device *dev)
 	if (ret)
 		goto err_free;
 
-	drm_mode_config_init(drm_dev);
+	ret = drm_mode_config_init(drm_dev);
+	if (ret)
+		goto err_free;
 
 	rockchip_drm_mode_config_init(drm_dev);
 
@@ -174,11 +176,8 @@ static int rockchip_drm_bind(struct device *dev)
 err_unbind_all:
 	component_unbind_all(dev, drm_dev);
 err_mode_config_cleanup:
-	drm_mode_config_cleanup(drm_dev);
 	rockchip_iommu_cleanup(drm_dev);
 err_free:
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 	return ret;
 }
@@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
 
 	drm_atomic_helper_shutdown(drm_dev);
 	component_unbind_all(dev, drm_dev);
-	drm_mode_config_cleanup(drm_dev);
 	rockchip_iommu_cleanup(drm_dev);
 
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 }
 
-- 
2.24.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
  2020-02-21 21:03 ` Daniel Vetter
@ 2020-02-24 19:13   ` Francesco Lavra
  2020-02-24 20:37     ` Daniel Vetter
  0 siblings, 1 reply; 13+ messages in thread
From: Francesco Lavra @ 2020-02-24 19:13 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Heiko Stübner, Intel Graphics Development, Sandy Huang,
	DRI Development, linux-rockchip, Laurent Pinchart, Daniel Vetter,
	linux-arm-kernel

On Fri, Feb 21, 2020 at 10:04 PM Daniel Vetter <daniel.vetter@ffwll•ch> wrote:
>
> It's (almost, there's some iommu stuff without significance) right
> above the drm_dev_put().
>
> This is made possible by a preceeding patch which added a drmm_
> cleanup action to drm_mode_config_init(), hence all we need to do to
> ensure that drm_mode_config_cleanup() is run on final drm_device
> cleanup is check the new error code for _init().
>
> Aside: Another driver with a bit much devm_kzalloc, which should
> probably use drmm_kzalloc instead ...
>
> v2: Explain why this cleanup is possible (Laurent).
>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
> Cc: Sandy Huang <hjc@rock-chips•com>
> Cc: "Heiko Stübner" <heiko@sntech•de>
> Cc: linux-arm-kernel@lists•infradead.org
> Cc: linux-rockchip@lists•infradead.org
> ---
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index 20ecb1508a22..d0eba21eebc9 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -135,7 +135,9 @@ static int rockchip_drm_bind(struct device *dev)
>         if (ret)
>                 goto err_free;
>
> -       drm_mode_config_init(drm_dev);
> +       ret = drm_mode_config_init(drm_dev);
> +       if (ret)
> +               goto err_free;

Shouldn't the goto label be err_mode_config_cleanup here? Otherwise
this error path misses the call to rockchip_iommu_cleanup().

>
>         rockchip_drm_mode_config_init(drm_dev);
>
> @@ -174,11 +176,8 @@ static int rockchip_drm_bind(struct device *dev)
>  err_unbind_all:
>         component_unbind_all(dev, drm_dev);
>  err_mode_config_cleanup:
> -       drm_mode_config_cleanup(drm_dev);
>         rockchip_iommu_cleanup(drm_dev);
>  err_free:
> -       drm_dev->dev_private = NULL;
> -       dev_set_drvdata(dev, NULL);
>         drm_dev_put(drm_dev);
>         return ret;
>  }

On Fri, Feb 21, 2020 at 10:04 PM Daniel Vetter <daniel.vetter@ffwll•ch> wrote:
>
> It's (almost, there's some iommu stuff without significance) right
> above the drm_dev_put().
>
> This is made possible by a preceeding patch which added a drmm_
> cleanup action to drm_mode_config_init(), hence all we need to do to
> ensure that drm_mode_config_cleanup() is run on final drm_device
> cleanup is check the new error code for _init().
>
> Aside: Another driver with a bit much devm_kzalloc, which should
> probably use drmm_kzalloc instead ...
>
> v2: Explain why this cleanup is possible (Laurent).
>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
> Cc: Sandy Huang <hjc@rock-chips•com>
> Cc: "Heiko Stübner" <heiko@sntech•de>
> Cc: linux-arm-kernel@lists•infradead.org
> Cc: linux-rockchip@lists•infradead.org
> ---
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index 20ecb1508a22..d0eba21eebc9 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -135,7 +135,9 @@ static int rockchip_drm_bind(struct device *dev)
>         if (ret)
>                 goto err_free;
>
> -       drm_mode_config_init(drm_dev);
> +       ret = drm_mode_config_init(drm_dev);
> +       if (ret)
> +               goto err_free;
>
>         rockchip_drm_mode_config_init(drm_dev);
>
> @@ -174,11 +176,8 @@ static int rockchip_drm_bind(struct device *dev)
>  err_unbind_all:
>         component_unbind_all(dev, drm_dev);
>  err_mode_config_cleanup:
> -       drm_mode_config_cleanup(drm_dev);
>         rockchip_iommu_cleanup(drm_dev);
>  err_free:
> -       drm_dev->dev_private = NULL;
> -       dev_set_drvdata(dev, NULL);
>         drm_dev_put(drm_dev);
>         return ret;
>  }
> @@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
>
>         drm_atomic_helper_shutdown(drm_dev);
>         component_unbind_all(dev, drm_dev);
> -       drm_mode_config_cleanup(drm_dev);
>         rockchip_iommu_cleanup(drm_dev);
>
> -       drm_dev->dev_private = NULL;
> -       dev_set_drvdata(dev, NULL);
>         drm_dev_put(drm_dev);
>  }
>
> --
> 2.24.1
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists•infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
  2020-02-24 19:13   ` Francesco Lavra
@ 2020-02-24 20:37     ` Daniel Vetter
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Vetter @ 2020-02-24 20:37 UTC (permalink / raw)
  To: Francesco Lavra
  Cc: Heiko Stübner, Intel Graphics Development, Sandy Huang,
	DRI Development, open list:ARM/Rockchip SoC..., Laurent Pinchart,
	Daniel Vetter, Linux ARM

On Mon, Feb 24, 2020 at 8:13 PM Francesco Lavra
<francescolavra.fl@gmail•com> wrote:
>
> On Fri, Feb 21, 2020 at 10:04 PM Daniel Vetter <daniel.vetter@ffwll•ch> wrote:
> >
> > It's (almost, there's some iommu stuff without significance) right
> > above the drm_dev_put().
> >
> > This is made possible by a preceeding patch which added a drmm_
> > cleanup action to drm_mode_config_init(), hence all we need to do to
> > ensure that drm_mode_config_cleanup() is run on final drm_device
> > cleanup is check the new error code for _init().
> >
> > Aside: Another driver with a bit much devm_kzalloc, which should
> > probably use drmm_kzalloc instead ...
> >
> > v2: Explain why this cleanup is possible (Laurent).
> >
> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
> > Cc: Sandy Huang <hjc@rock-chips•com>
> > Cc: "Heiko Stübner" <heiko@sntech•de>
> > Cc: linux-arm-kernel@lists•infradead.org
> > Cc: linux-rockchip@lists•infradead.org
> > ---
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +++-------
> >  1 file changed, 3 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index 20ecb1508a22..d0eba21eebc9 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -135,7 +135,9 @@ static int rockchip_drm_bind(struct device *dev)
> >         if (ret)
> >                 goto err_free;
> >
> > -       drm_mode_config_init(drm_dev);
> > +       ret = drm_mode_config_init(drm_dev);
> > +       if (ret)
> > +               goto err_free;
>
> Shouldn't the goto label be err_mode_config_cleanup here? Otherwise
> this error path misses the call to rockchip_iommu_cleanup().

Indeed. I'll also rename the label to have a more meaningful name while at it.
-Daniel

>
> >
> >         rockchip_drm_mode_config_init(drm_dev);
> >
> > @@ -174,11 +176,8 @@ static int rockchip_drm_bind(struct device *dev)
> >  err_unbind_all:
> >         component_unbind_all(dev, drm_dev);
> >  err_mode_config_cleanup:
> > -       drm_mode_config_cleanup(drm_dev);
> >         rockchip_iommu_cleanup(drm_dev);
> >  err_free:
> > -       drm_dev->dev_private = NULL;
> > -       dev_set_drvdata(dev, NULL);
> >         drm_dev_put(drm_dev);
> >         return ret;
> >  }
>
> On Fri, Feb 21, 2020 at 10:04 PM Daniel Vetter <daniel.vetter@ffwll•ch> wrote:
> >
> > It's (almost, there's some iommu stuff without significance) right
> > above the drm_dev_put().
> >
> > This is made possible by a preceeding patch which added a drmm_
> > cleanup action to drm_mode_config_init(), hence all we need to do to
> > ensure that drm_mode_config_cleanup() is run on final drm_device
> > cleanup is check the new error code for _init().
> >
> > Aside: Another driver with a bit much devm_kzalloc, which should
> > probably use drmm_kzalloc instead ...
> >
> > v2: Explain why this cleanup is possible (Laurent).
> >
> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
> > Cc: Sandy Huang <hjc@rock-chips•com>
> > Cc: "Heiko Stübner" <heiko@sntech•de>
> > Cc: linux-arm-kernel@lists•infradead.org
> > Cc: linux-rockchip@lists•infradead.org
> > ---
> >  drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +++-------
> >  1 file changed, 3 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > index 20ecb1508a22..d0eba21eebc9 100644
> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> > @@ -135,7 +135,9 @@ static int rockchip_drm_bind(struct device *dev)
> >         if (ret)
> >                 goto err_free;
> >
> > -       drm_mode_config_init(drm_dev);
> > +       ret = drm_mode_config_init(drm_dev);
> > +       if (ret)
> > +               goto err_free;
> >
> >         rockchip_drm_mode_config_init(drm_dev);
> >
> > @@ -174,11 +176,8 @@ static int rockchip_drm_bind(struct device *dev)
> >  err_unbind_all:
> >         component_unbind_all(dev, drm_dev);
> >  err_mode_config_cleanup:
> > -       drm_mode_config_cleanup(drm_dev);
> >         rockchip_iommu_cleanup(drm_dev);
> >  err_free:
> > -       drm_dev->dev_private = NULL;
> > -       dev_set_drvdata(dev, NULL);
> >         drm_dev_put(drm_dev);
> >         return ret;
> >  }
> > @@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
> >
> >         drm_atomic_helper_shutdown(drm_dev);
> >         component_unbind_all(dev, drm_dev);
> > -       drm_mode_config_cleanup(drm_dev);
> >         rockchip_iommu_cleanup(drm_dev);
> >
> > -       drm_dev->dev_private = NULL;
> > -       dev_set_drvdata(dev, NULL);
> >         drm_dev_put(drm_dev);
> >  }
> >
> > --
> > 2.24.1
> >
> >
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists•infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
       [not found] <20200227181522.2711142-1-daniel.vetter@ffwll.ch>
@ 2020-02-27 18:15 ` Daniel Vetter
  2020-02-28 21:19   ` kbuild test robot
  2020-02-29  1:53   ` kbuild test robot
  0 siblings, 2 replies; 13+ messages in thread
From: Daniel Vetter @ 2020-02-27 18:15 UTC (permalink / raw)
  To: DRI Development
  Cc: Heiko Stübner, Francesco Lavra, Daniel Vetter,
	Intel Graphics Development, m.felsch, Sandy Huang, linux-rockchip,
	Laurent Pinchart, Daniel Vetter, linux-arm-kernel, l.stach

It's (almost, there's some iommu stuff without significance) right
above the drm_dev_put().

This is made possible by a preceeding patch which added a drmm_
cleanup action to drm_mode_config_init(), hence all we need to do to
ensure that drm_mode_config_cleanup() is run on final drm_device
cleanup is check the new error code for _init().

Aside: Another driver with a bit much devm_kzalloc, which should
probably use drmm_kzalloc instead ...

v2: Explain why this cleanup is possible (Laurent).

v3: Jump out at the right label (Francesco)

Cc: Francesco Lavra <francescolavra.fl@gmail•com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
Cc: Sandy Huang <hjc@rock-chips•com>
Cc: "Heiko Stübner" <heiko@sntech•de>
Cc: linux-arm-kernel@lists•infradead.org
Cc: linux-rockchip@lists•infradead.org
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 20ecb1508a22..9b2502f92018 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -135,7 +135,9 @@ static int rockchip_drm_bind(struct device *dev)
 	if (ret)
 		goto err_free;
 
-	drm_mode_config_init(drm_dev);
+	ret = drm_mode_config_init(drm_dev);
+	if (ret)
+		goto err_iommu_cleanup;
 
 	rockchip_drm_mode_config_init(drm_dev);
 
@@ -173,12 +175,9 @@ static int rockchip_drm_bind(struct device *dev)
 	rockchip_drm_fbdev_fini(drm_dev);
 err_unbind_all:
 	component_unbind_all(dev, drm_dev);
-err_mode_config_cleanup:
-	drm_mode_config_cleanup(drm_dev);
+err_iommu_cleanup:
 	rockchip_iommu_cleanup(drm_dev);
 err_free:
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 	return ret;
 }
@@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
 
 	drm_atomic_helper_shutdown(drm_dev);
 	component_unbind_all(dev, drm_dev);
-	drm_mode_config_cleanup(drm_dev);
 	rockchip_iommu_cleanup(drm_dev);
 
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 }
 
-- 
2.24.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
  2020-02-27 18:15 ` Daniel Vetter
@ 2020-02-28 21:19   ` kbuild test robot
  2020-02-28 23:34     ` Daniel Vetter
  2020-02-29  1:53   ` kbuild test robot
  1 sibling, 1 reply; 13+ messages in thread
From: kbuild test robot @ 2020-02-28 21:19 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: kbuild-all, Francesco Lavra, Daniel Vetter,
	Intel Graphics Development, m.felsch, DRI Development,
	Sandy Huang, linux-rockchip, Laurent Pinchart, Daniel Vetter,
	linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 7186 bytes --]

Hi Daniel,

I love your patch! Yet something to improve:

[auto build test ERROR on drm-tip/drm-tip]
[also build test ERROR on next-20200228]
[cannot apply to drm-intel/for-linux-next linus/master pinchartl-media/drm/du/next v5.6-rc3]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-managed-resources-v3/20200229-005817
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel•com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/rockchip/rockchip_drm_drv.c: In function 'rockchip_drm_bind':
>> drivers/gpu/drm/rockchip/rockchip_drm_drv.c:147:3: error: label 'err_mode_config_cleanup' used but not defined
      goto err_mode_config_cleanup;
      ^~~~

vim +/err_mode_config_cleanup +147 drivers/gpu/drm/rockchip/rockchip_drm_drv.c

2048e3286f347db Mark Yao          2014-08-22  110  
f706974a69b6e2b Tomeu Vizoso      2016-06-10  111  static int rockchip_drm_bind(struct device *dev)
2048e3286f347db Mark Yao          2014-08-22  112  {
f706974a69b6e2b Tomeu Vizoso      2016-06-10  113  	struct drm_device *drm_dev;
2048e3286f347db Mark Yao          2014-08-22  114  	struct rockchip_drm_private *private;
2048e3286f347db Mark Yao          2014-08-22  115  	int ret;
2048e3286f347db Mark Yao          2014-08-22  116  
f706974a69b6e2b Tomeu Vizoso      2016-06-10  117  	drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev);
0f2886057be322d Tom Gundersen     2016-09-21  118  	if (IS_ERR(drm_dev))
0f2886057be322d Tom Gundersen     2016-09-21  119  		return PTR_ERR(drm_dev);
2048e3286f347db Mark Yao          2014-08-22  120  
f706974a69b6e2b Tomeu Vizoso      2016-06-10  121  	dev_set_drvdata(dev, drm_dev);
f706974a69b6e2b Tomeu Vizoso      2016-06-10  122  
f706974a69b6e2b Tomeu Vizoso      2016-06-10  123  	private = devm_kzalloc(drm_dev->dev, sizeof(*private), GFP_KERNEL);
f706974a69b6e2b Tomeu Vizoso      2016-06-10  124  	if (!private) {
f706974a69b6e2b Tomeu Vizoso      2016-06-10  125  		ret = -ENOMEM;
9127f99c4801f32 Tomasz Figa       2016-06-21  126  		goto err_free;
f706974a69b6e2b Tomeu Vizoso      2016-06-10  127  	}
f706974a69b6e2b Tomeu Vizoso      2016-06-10  128  
2048e3286f347db Mark Yao          2014-08-22  129  	drm_dev->dev_private = private;
2048e3286f347db Mark Yao          2014-08-22  130  
5182c1a556d7ff7 Yakir Yang        2016-07-24  131  	INIT_LIST_HEAD(&private->psr_list);
60beeccc72cabef Sean Paul         2018-03-05  132  	mutex_init(&private->psr_list_lock);
5182c1a556d7ff7 Yakir Yang        2016-07-24  133  
ccea91998c8f140 Jeffy Chen        2017-04-06  134  	ret = rockchip_drm_init_iommu(drm_dev);
ccea91998c8f140 Jeffy Chen        2017-04-06  135  	if (ret)
ccea91998c8f140 Jeffy Chen        2017-04-06  136  		goto err_free;
ccea91998c8f140 Jeffy Chen        2017-04-06  137  
7db42e97bb41bd5 Daniel Vetter     2020-02-27  138  	ret = drm_mode_config_init(drm_dev);
7db42e97bb41bd5 Daniel Vetter     2020-02-27  139  	if (ret)
7db42e97bb41bd5 Daniel Vetter     2020-02-27  140  		goto err_iommu_cleanup;
2048e3286f347db Mark Yao          2014-08-22  141  
2048e3286f347db Mark Yao          2014-08-22  142  	rockchip_drm_mode_config_init(drm_dev);
2048e3286f347db Mark Yao          2014-08-22  143  
2048e3286f347db Mark Yao          2014-08-22  144  	/* Try to bind all sub drivers. */
2048e3286f347db Mark Yao          2014-08-22  145  	ret = component_bind_all(dev, drm_dev);
2048e3286f347db Mark Yao          2014-08-22  146  	if (ret)
ccea91998c8f140 Jeffy Chen        2017-04-06 @147  		goto err_mode_config_cleanup;
2048e3286f347db Mark Yao          2014-08-22  148  
ccea91998c8f140 Jeffy Chen        2017-04-06  149  	ret = drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc);
ccea91998c8f140 Jeffy Chen        2017-04-06  150  	if (ret)
ccea91998c8f140 Jeffy Chen        2017-04-06  151  		goto err_unbind_all;
ccea91998c8f140 Jeffy Chen        2017-04-06  152  
ccea91998c8f140 Jeffy Chen        2017-04-06  153  	drm_mode_config_reset(drm_dev);
2048e3286f347db Mark Yao          2014-08-22  154  
2048e3286f347db Mark Yao          2014-08-22  155  	/*
2048e3286f347db Mark Yao          2014-08-22  156  	 * enable drm irq mode.
2048e3286f347db Mark Yao          2014-08-22  157  	 * - with irq_enabled = true, we can use the vblank feature.
2048e3286f347db Mark Yao          2014-08-22  158  	 */
2048e3286f347db Mark Yao          2014-08-22  159  	drm_dev->irq_enabled = true;
2048e3286f347db Mark Yao          2014-08-22  160  
2048e3286f347db Mark Yao          2014-08-22  161  	ret = rockchip_drm_fbdev_init(drm_dev);
2048e3286f347db Mark Yao          2014-08-22  162  	if (ret)
8415ab565da966b Mark Yao          2017-08-01  163  		goto err_unbind_all;
8415ab565da966b Mark Yao          2017-08-01  164  
8415ab565da966b Mark Yao          2017-08-01  165  	/* init kms poll for handling hpd */
8415ab565da966b Mark Yao          2017-08-01  166  	drm_kms_helper_poll_init(drm_dev);
2048e3286f347db Mark Yao          2014-08-22  167  
9127f99c4801f32 Tomasz Figa       2016-06-21  168  	ret = drm_dev_register(drm_dev, 0);
9127f99c4801f32 Tomasz Figa       2016-06-21  169  	if (ret)
8415ab565da966b Mark Yao          2017-08-01  170  		goto err_kms_helper_poll_fini;
9127f99c4801f32 Tomasz Figa       2016-06-21  171  
2048e3286f347db Mark Yao          2014-08-22  172  	return 0;
2048e3286f347db Mark Yao          2014-08-22  173  err_kms_helper_poll_fini:
2048e3286f347db Mark Yao          2014-08-22  174  	drm_kms_helper_poll_fini(drm_dev);
8415ab565da966b Mark Yao          2017-08-01  175  	rockchip_drm_fbdev_fini(drm_dev);
ccea91998c8f140 Jeffy Chen        2017-04-06  176  err_unbind_all:
2048e3286f347db Mark Yao          2014-08-22  177  	component_unbind_all(dev, drm_dev);
7db42e97bb41bd5 Daniel Vetter     2020-02-27  178  err_iommu_cleanup:
ccea91998c8f140 Jeffy Chen        2017-04-06  179  	rockchip_iommu_cleanup(drm_dev);
f706974a69b6e2b Tomeu Vizoso      2016-06-10  180  err_free:
574e0fbfc95e7fc Thomas Zimmermann 2018-07-17  181  	drm_dev_put(drm_dev);
2048e3286f347db Mark Yao          2014-08-22  182  	return ret;
2048e3286f347db Mark Yao          2014-08-22  183  }
2048e3286f347db Mark Yao          2014-08-22  184  

:::::: The code at line 147 was first introduced by commit
:::::: ccea91998c8f140bc3e324bbb3c3fb7148e72d31 drm/rockchip: Reorder drm bind/unbind sequence

:::::: TO: Jeffy Chen <jeffy.chen@rock-chips•com>
:::::: CC: Sean Paul <seanpaul@chromium•org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47162 bytes --]

[-- Attachment #3: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
  2020-02-28 21:19   ` kbuild test robot
@ 2020-02-28 23:34     ` Daniel Vetter
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Vetter @ 2020-02-28 23:34 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Francesco Lavra, Intel Graphics Development,
	Marco Felsch, DRI Development, Sandy Huang,
	open list:ARM/Rockchip SoC..., Laurent Pinchart, Daniel Vetter,
	Linux ARM

Drat I butchered this. Will fix for next round and actually
compile-test arm again :-/
-Daniel

On Fri, Feb 28, 2020 at 10:19 PM kbuild test robot <lkp@intel•com> wrote:
>
> Hi Daniel,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on drm-tip/drm-tip]
> [also build test ERROR on next-20200228]
> [cannot apply to drm-intel/for-linux-next linus/master pinchartl-media/drm/du/next v5.6-rc3]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
>
> url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-managed-resources-v3/20200229-005817
> base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
> config: arm64-defconfig (attached as .config)
> compiler: aarch64-linux-gcc (GCC) 7.5.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         GCC_VERSION=7.5.0 make.cross ARCH=arm64
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel•com>
>
> All errors (new ones prefixed by >>):
>
>    drivers/gpu/drm/rockchip/rockchip_drm_drv.c: In function 'rockchip_drm_bind':
> >> drivers/gpu/drm/rockchip/rockchip_drm_drv.c:147:3: error: label 'err_mode_config_cleanup' used but not defined
>       goto err_mode_config_cleanup;
>       ^~~~
>
> vim +/err_mode_config_cleanup +147 drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>
> 2048e3286f347db Mark Yao          2014-08-22  110
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  111  static int rockchip_drm_bind(struct device *dev)
> 2048e3286f347db Mark Yao          2014-08-22  112  {
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  113       struct drm_device *drm_dev;
> 2048e3286f347db Mark Yao          2014-08-22  114       struct rockchip_drm_private *private;
> 2048e3286f347db Mark Yao          2014-08-22  115       int ret;
> 2048e3286f347db Mark Yao          2014-08-22  116
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  117       drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev);
> 0f2886057be322d Tom Gundersen     2016-09-21  118       if (IS_ERR(drm_dev))
> 0f2886057be322d Tom Gundersen     2016-09-21  119               return PTR_ERR(drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  120
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  121       dev_set_drvdata(dev, drm_dev);
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  122
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  123       private = devm_kzalloc(drm_dev->dev, sizeof(*private), GFP_KERNEL);
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  124       if (!private) {
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  125               ret = -ENOMEM;
> 9127f99c4801f32 Tomasz Figa       2016-06-21  126               goto err_free;
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  127       }
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  128
> 2048e3286f347db Mark Yao          2014-08-22  129       drm_dev->dev_private = private;
> 2048e3286f347db Mark Yao          2014-08-22  130
> 5182c1a556d7ff7 Yakir Yang        2016-07-24  131       INIT_LIST_HEAD(&private->psr_list);
> 60beeccc72cabef Sean Paul         2018-03-05  132       mutex_init(&private->psr_list_lock);
> 5182c1a556d7ff7 Yakir Yang        2016-07-24  133
> ccea91998c8f140 Jeffy Chen        2017-04-06  134       ret = rockchip_drm_init_iommu(drm_dev);
> ccea91998c8f140 Jeffy Chen        2017-04-06  135       if (ret)
> ccea91998c8f140 Jeffy Chen        2017-04-06  136               goto err_free;
> ccea91998c8f140 Jeffy Chen        2017-04-06  137
> 7db42e97bb41bd5 Daniel Vetter     2020-02-27  138       ret = drm_mode_config_init(drm_dev);
> 7db42e97bb41bd5 Daniel Vetter     2020-02-27  139       if (ret)
> 7db42e97bb41bd5 Daniel Vetter     2020-02-27  140               goto err_iommu_cleanup;
> 2048e3286f347db Mark Yao          2014-08-22  141
> 2048e3286f347db Mark Yao          2014-08-22  142       rockchip_drm_mode_config_init(drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  143
> 2048e3286f347db Mark Yao          2014-08-22  144       /* Try to bind all sub drivers. */
> 2048e3286f347db Mark Yao          2014-08-22  145       ret = component_bind_all(dev, drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  146       if (ret)
> ccea91998c8f140 Jeffy Chen        2017-04-06 @147               goto err_mode_config_cleanup;
> 2048e3286f347db Mark Yao          2014-08-22  148
> ccea91998c8f140 Jeffy Chen        2017-04-06  149       ret = drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc);
> ccea91998c8f140 Jeffy Chen        2017-04-06  150       if (ret)
> ccea91998c8f140 Jeffy Chen        2017-04-06  151               goto err_unbind_all;
> ccea91998c8f140 Jeffy Chen        2017-04-06  152
> ccea91998c8f140 Jeffy Chen        2017-04-06  153       drm_mode_config_reset(drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  154
> 2048e3286f347db Mark Yao          2014-08-22  155       /*
> 2048e3286f347db Mark Yao          2014-08-22  156        * enable drm irq mode.
> 2048e3286f347db Mark Yao          2014-08-22  157        * - with irq_enabled = true, we can use the vblank feature.
> 2048e3286f347db Mark Yao          2014-08-22  158        */
> 2048e3286f347db Mark Yao          2014-08-22  159       drm_dev->irq_enabled = true;
> 2048e3286f347db Mark Yao          2014-08-22  160
> 2048e3286f347db Mark Yao          2014-08-22  161       ret = rockchip_drm_fbdev_init(drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  162       if (ret)
> 8415ab565da966b Mark Yao          2017-08-01  163               goto err_unbind_all;
> 8415ab565da966b Mark Yao          2017-08-01  164
> 8415ab565da966b Mark Yao          2017-08-01  165       /* init kms poll for handling hpd */
> 8415ab565da966b Mark Yao          2017-08-01  166       drm_kms_helper_poll_init(drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  167
> 9127f99c4801f32 Tomasz Figa       2016-06-21  168       ret = drm_dev_register(drm_dev, 0);
> 9127f99c4801f32 Tomasz Figa       2016-06-21  169       if (ret)
> 8415ab565da966b Mark Yao          2017-08-01  170               goto err_kms_helper_poll_fini;
> 9127f99c4801f32 Tomasz Figa       2016-06-21  171
> 2048e3286f347db Mark Yao          2014-08-22  172       return 0;
> 2048e3286f347db Mark Yao          2014-08-22  173  err_kms_helper_poll_fini:
> 2048e3286f347db Mark Yao          2014-08-22  174       drm_kms_helper_poll_fini(drm_dev);
> 8415ab565da966b Mark Yao          2017-08-01  175       rockchip_drm_fbdev_fini(drm_dev);
> ccea91998c8f140 Jeffy Chen        2017-04-06  176  err_unbind_all:
> 2048e3286f347db Mark Yao          2014-08-22  177       component_unbind_all(dev, drm_dev);
> 7db42e97bb41bd5 Daniel Vetter     2020-02-27  178  err_iommu_cleanup:
> ccea91998c8f140 Jeffy Chen        2017-04-06  179       rockchip_iommu_cleanup(drm_dev);
> f706974a69b6e2b Tomeu Vizoso      2016-06-10  180  err_free:
> 574e0fbfc95e7fc Thomas Zimmermann 2018-07-17  181       drm_dev_put(drm_dev);
> 2048e3286f347db Mark Yao          2014-08-22  182       return ret;
> 2048e3286f347db Mark Yao          2014-08-22  183  }
> 2048e3286f347db Mark Yao          2014-08-22  184
>
> :::::: The code at line 147 was first introduced by commit
> :::::: ccea91998c8f140bc3e324bbb3c3fb7148e72d31 drm/rockchip: Reorder drm bind/unbind sequence
>
> :::::: TO: Jeffy Chen <jeffy.chen@rock-chips•com>
> :::::: CC: Sean Paul <seanpaul@chromium•org>
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
  2020-02-27 18:15 ` Daniel Vetter
  2020-02-28 21:19   ` kbuild test robot
@ 2020-02-29  1:53   ` kbuild test robot
  1 sibling, 0 replies; 13+ messages in thread
From: kbuild test robot @ 2020-02-29  1:53 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: kbuild-all, linux-rockchip, Francesco Lavra, Daniel Vetter,
	Intel Graphics Development, m.felsch, DRI Development,
	Sandy Huang, clang-built-linux, Laurent Pinchart, Daniel Vetter,
	linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 6958 bytes --]

Hi Daniel,

I love your patch! Yet something to improve:

[auto build test ERROR on drm-tip/drm-tip]
[also build test ERROR on next-20200228]
[cannot apply to drm-intel/for-linux-next linus/master pinchartl-media/drm/du/next v5.6-rc3]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Daniel-Vetter/drm-managed-resources-v3/20200229-005817
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arm64-defconfig (attached as .config)
compiler: clang version 11.0.0 (git://gitmirror/llvm_project 949134e2fefd34a38ed71de90dffe2300e2e1139)
reproduce:
        # FIXME the reproduce steps for clang is not ready yet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel•com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/rockchip/rockchip_drm_drv.c:147:8: error: use of undeclared label 'err_mode_config_cleanup'
                   goto err_mode_config_cleanup;
                        ^
   1 error generated.

vim +/err_mode_config_cleanup +147 drivers/gpu/drm/rockchip/rockchip_drm_drv.c

2048e3286f347d Mark Yao          2014-08-22  110  
f706974a69b6e2 Tomeu Vizoso      2016-06-10  111  static int rockchip_drm_bind(struct device *dev)
2048e3286f347d Mark Yao          2014-08-22  112  {
f706974a69b6e2 Tomeu Vizoso      2016-06-10  113  	struct drm_device *drm_dev;
2048e3286f347d Mark Yao          2014-08-22  114  	struct rockchip_drm_private *private;
2048e3286f347d Mark Yao          2014-08-22  115  	int ret;
2048e3286f347d Mark Yao          2014-08-22  116  
f706974a69b6e2 Tomeu Vizoso      2016-06-10  117  	drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev);
0f2886057be322 Tom Gundersen     2016-09-21  118  	if (IS_ERR(drm_dev))
0f2886057be322 Tom Gundersen     2016-09-21  119  		return PTR_ERR(drm_dev);
2048e3286f347d Mark Yao          2014-08-22  120  
f706974a69b6e2 Tomeu Vizoso      2016-06-10  121  	dev_set_drvdata(dev, drm_dev);
f706974a69b6e2 Tomeu Vizoso      2016-06-10  122  
f706974a69b6e2 Tomeu Vizoso      2016-06-10  123  	private = devm_kzalloc(drm_dev->dev, sizeof(*private), GFP_KERNEL);
f706974a69b6e2 Tomeu Vizoso      2016-06-10  124  	if (!private) {
f706974a69b6e2 Tomeu Vizoso      2016-06-10  125  		ret = -ENOMEM;
9127f99c4801f3 Tomasz Figa       2016-06-21  126  		goto err_free;
f706974a69b6e2 Tomeu Vizoso      2016-06-10  127  	}
f706974a69b6e2 Tomeu Vizoso      2016-06-10  128  
2048e3286f347d Mark Yao          2014-08-22  129  	drm_dev->dev_private = private;
2048e3286f347d Mark Yao          2014-08-22  130  
5182c1a556d7ff Yakir Yang        2016-07-24  131  	INIT_LIST_HEAD(&private->psr_list);
60beeccc72cabe Sean Paul         2018-03-05  132  	mutex_init(&private->psr_list_lock);
5182c1a556d7ff Yakir Yang        2016-07-24  133  
ccea91998c8f14 Jeffy Chen        2017-04-06  134  	ret = rockchip_drm_init_iommu(drm_dev);
ccea91998c8f14 Jeffy Chen        2017-04-06  135  	if (ret)
ccea91998c8f14 Jeffy Chen        2017-04-06  136  		goto err_free;
ccea91998c8f14 Jeffy Chen        2017-04-06  137  
7db42e97bb41bd Daniel Vetter     2020-02-27  138  	ret = drm_mode_config_init(drm_dev);
7db42e97bb41bd Daniel Vetter     2020-02-27  139  	if (ret)
7db42e97bb41bd Daniel Vetter     2020-02-27  140  		goto err_iommu_cleanup;
2048e3286f347d Mark Yao          2014-08-22  141  
2048e3286f347d Mark Yao          2014-08-22  142  	rockchip_drm_mode_config_init(drm_dev);
2048e3286f347d Mark Yao          2014-08-22  143  
2048e3286f347d Mark Yao          2014-08-22  144  	/* Try to bind all sub drivers. */
2048e3286f347d Mark Yao          2014-08-22  145  	ret = component_bind_all(dev, drm_dev);
2048e3286f347d Mark Yao          2014-08-22  146  	if (ret)
ccea91998c8f14 Jeffy Chen        2017-04-06 @147  		goto err_mode_config_cleanup;
2048e3286f347d Mark Yao          2014-08-22  148  
ccea91998c8f14 Jeffy Chen        2017-04-06  149  	ret = drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc);
ccea91998c8f14 Jeffy Chen        2017-04-06  150  	if (ret)
ccea91998c8f14 Jeffy Chen        2017-04-06  151  		goto err_unbind_all;
ccea91998c8f14 Jeffy Chen        2017-04-06  152  
ccea91998c8f14 Jeffy Chen        2017-04-06  153  	drm_mode_config_reset(drm_dev);
2048e3286f347d Mark Yao          2014-08-22  154  
2048e3286f347d Mark Yao          2014-08-22  155  	/*
2048e3286f347d Mark Yao          2014-08-22  156  	 * enable drm irq mode.
2048e3286f347d Mark Yao          2014-08-22  157  	 * - with irq_enabled = true, we can use the vblank feature.
2048e3286f347d Mark Yao          2014-08-22  158  	 */
2048e3286f347d Mark Yao          2014-08-22  159  	drm_dev->irq_enabled = true;
2048e3286f347d Mark Yao          2014-08-22  160  
2048e3286f347d Mark Yao          2014-08-22  161  	ret = rockchip_drm_fbdev_init(drm_dev);
2048e3286f347d Mark Yao          2014-08-22  162  	if (ret)
8415ab565da966 Mark Yao          2017-08-01  163  		goto err_unbind_all;
8415ab565da966 Mark Yao          2017-08-01  164  
8415ab565da966 Mark Yao          2017-08-01  165  	/* init kms poll for handling hpd */
8415ab565da966 Mark Yao          2017-08-01  166  	drm_kms_helper_poll_init(drm_dev);
2048e3286f347d Mark Yao          2014-08-22  167  
9127f99c4801f3 Tomasz Figa       2016-06-21  168  	ret = drm_dev_register(drm_dev, 0);
9127f99c4801f3 Tomasz Figa       2016-06-21  169  	if (ret)
8415ab565da966 Mark Yao          2017-08-01  170  		goto err_kms_helper_poll_fini;
9127f99c4801f3 Tomasz Figa       2016-06-21  171  
2048e3286f347d Mark Yao          2014-08-22  172  	return 0;
2048e3286f347d Mark Yao          2014-08-22  173  err_kms_helper_poll_fini:
2048e3286f347d Mark Yao          2014-08-22  174  	drm_kms_helper_poll_fini(drm_dev);
8415ab565da966 Mark Yao          2017-08-01  175  	rockchip_drm_fbdev_fini(drm_dev);
ccea91998c8f14 Jeffy Chen        2017-04-06  176  err_unbind_all:
2048e3286f347d Mark Yao          2014-08-22  177  	component_unbind_all(dev, drm_dev);
7db42e97bb41bd Daniel Vetter     2020-02-27  178  err_iommu_cleanup:
ccea91998c8f14 Jeffy Chen        2017-04-06  179  	rockchip_iommu_cleanup(drm_dev);
f706974a69b6e2 Tomeu Vizoso      2016-06-10  180  err_free:
574e0fbfc95e7f Thomas Zimmermann 2018-07-17  181  	drm_dev_put(drm_dev);
2048e3286f347d Mark Yao          2014-08-22  182  	return ret;
2048e3286f347d Mark Yao          2014-08-22  183  }
2048e3286f347d Mark Yao          2014-08-22  184  

:::::: The code at line 147 was first introduced by commit
:::::: ccea91998c8f140bc3e324bbb3c3fb7148e72d31 drm/rockchip: Reorder drm bind/unbind sequence

:::::: TO: Jeffy Chen <jeffy.chen@rock-chips•com>
:::::: CC: Sean Paul <seanpaul@chromium•org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 47168 bytes --]

[-- Attachment #3: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 34/51] drm/meson: Drop explicit drm_mode_config_cleanup call
       [not found] <20200302222631.3861340-1-daniel.vetter@ffwll.ch>
@ 2020-03-02 22:26 ` Daniel Vetter
  2020-03-02 22:26 ` [PATCH 37/51] drm/rockchip: " Daniel Vetter
  2020-03-02 22:26 ` [PATCH 38/51] drm/stm: " Daniel Vetter
  2 siblings, 0 replies; 13+ messages in thread
From: Daniel Vetter @ 2020-03-02 22:26 UTC (permalink / raw)
  To: DRI Development
  Cc: Neil Armstrong, Daniel Vetter, Intel Graphics Development,
	Laurent Pinchart, Thomas Zimmermann, Kevin Hilman, Daniel Vetter,
	linux-amlogic, Sam Ravnborg, linux-arm-kernel

It's right above the drm_dev_put().

This is made possible by a preceeding patch which added a drmm_
cleanup action to drm_mode_config_init(), hence all we need to do to
ensure that drm_mode_config_cleanup() is run on final drm_device
cleanup is check the new error code for _init().

Aside: This driver gets its devm_ stuff all wrong wrt drm_device and
anything hanging off that. Not the only one unfortunately.

v2: Explain why this cleanup is possible (Laurent).

v3: Use drmm_mode_config_init() for more clarity (Sam, Thomas)

Cc: Sam Ravnborg <sam@ravnborg•org>
Cc: Thomas Zimmermann <tzimmermann@suse•de>
Reviewed-by: Neil Armstrong <narmstrong@baylibre•com> (v2)
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
Cc: Neil Armstrong <narmstrong@baylibre•com>
Cc: Kevin Hilman <khilman@baylibre•com>
Cc: linux-amlogic@lists•infradead.org
Cc: linux-arm-kernel@lists•infradead.org
---
 drivers/gpu/drm/meson/meson_drv.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index b5f5eb7b4bb9..6f29fab79952 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -284,7 +284,9 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)
 	/* Remove early framebuffers (ie. simplefb) */
 	meson_remove_framebuffers();
 
-	drm_mode_config_init(drm);
+	ret = drmm_mode_config_init(drm);
+	if (ret)
+		goto free_drm;
 	drm->mode_config.max_width = 3840;
 	drm->mode_config.max_height = 2160;
 	drm->mode_config.funcs = &meson_mode_config_funcs;
@@ -379,7 +381,6 @@ static void meson_drv_unbind(struct device *dev)
 	drm_dev_unregister(drm);
 	drm_irq_uninstall(drm);
 	drm_kms_helper_poll_fini(drm);
-	drm_mode_config_cleanup(drm);
 	drm_dev_put(drm);
 }
 
-- 
2.24.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
       [not found] <20200302222631.3861340-1-daniel.vetter@ffwll.ch>
  2020-03-02 22:26 ` [PATCH 34/51] drm/meson: Drop explicit drm_mode_config_cleanup call Daniel Vetter
@ 2020-03-02 22:26 ` Daniel Vetter
  2020-03-07  8:38   ` Sam Ravnborg
  2020-03-02 22:26 ` [PATCH 38/51] drm/stm: " Daniel Vetter
  2 siblings, 1 reply; 13+ messages in thread
From: Daniel Vetter @ 2020-03-02 22:26 UTC (permalink / raw)
  To: DRI Development
  Cc: Heiko Stübner, Francesco Lavra, Daniel Vetter,
	Intel Graphics Development, Sandy Huang, linux-rockchip,
	Laurent Pinchart, Thomas Zimmermann, Daniel Vetter, Sam Ravnborg,
	linux-arm-kernel

It's (almost, there's some iommu stuff without significance) right
above the drm_dev_put().

This is made possible by a preceeding patch which added a drmm_
cleanup action to drm_mode_config_init(), hence all we need to do to
ensure that drm_mode_config_cleanup() is run on final drm_device
cleanup is check the new error code for _init().

Aside: Another driver with a bit much devm_kzalloc, which should
probably use drmm_kzalloc instead ...

v2: Explain why this cleanup is possible (Laurent).

v3: Jump out at the right label (Francesco)

v4: Try again, kbuild caught that I didn't build test this properly
...

v5: Use drmm_mode_config_init() for more clarity (Sam, Thomas)

Cc: Sam Ravnborg <sam@ravnborg•org>
Cc: Thomas Zimmermann <tzimmermann@suse•de>
Cc: Francesco Lavra <francescolavra.fl@gmail•com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
Cc: Sandy Huang <hjc@rock-chips•com>
Cc: "Heiko Stübner" <heiko@sntech•de>
Cc: linux-arm-kernel@lists•infradead.org
Cc: linux-rockchip@lists•infradead.org
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 20ecb1508a22..0f3eb392fe39 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -135,14 +135,16 @@ static int rockchip_drm_bind(struct device *dev)
 	if (ret)
 		goto err_free;
 
-	drm_mode_config_init(drm_dev);
+	ret = drmm_mode_config_init(drm_dev);
+	if (ret)
+		goto err_iommu_cleanup;
 
 	rockchip_drm_mode_config_init(drm_dev);
 
 	/* Try to bind all sub drivers. */
 	ret = component_bind_all(dev, drm_dev);
 	if (ret)
-		goto err_mode_config_cleanup;
+		goto err_iommu_cleanup;
 
 	ret = drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc);
 	if (ret)
@@ -173,12 +175,9 @@ static int rockchip_drm_bind(struct device *dev)
 	rockchip_drm_fbdev_fini(drm_dev);
 err_unbind_all:
 	component_unbind_all(dev, drm_dev);
-err_mode_config_cleanup:
-	drm_mode_config_cleanup(drm_dev);
+err_iommu_cleanup:
 	rockchip_iommu_cleanup(drm_dev);
 err_free:
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 	return ret;
 }
@@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
 
 	drm_atomic_helper_shutdown(drm_dev);
 	component_unbind_all(dev, drm_dev);
-	drm_mode_config_cleanup(drm_dev);
 	rockchip_iommu_cleanup(drm_dev);
 
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 }
 
-- 
2.24.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 38/51] drm/stm: Drop explicit drm_mode_config_cleanup call
       [not found] <20200302222631.3861340-1-daniel.vetter@ffwll.ch>
  2020-03-02 22:26 ` [PATCH 34/51] drm/meson: Drop explicit drm_mode_config_cleanup call Daniel Vetter
  2020-03-02 22:26 ` [PATCH 37/51] drm/rockchip: " Daniel Vetter
@ 2020-03-02 22:26 ` Daniel Vetter
  2020-03-07  9:25   ` Sam Ravnborg
  2 siblings, 1 reply; 13+ messages in thread
From: Daniel Vetter @ 2020-03-02 22:26 UTC (permalink / raw)
  To: DRI Development
  Cc: Maxime Coquelin, Vincent Abriou, Benjamin Gaignard, Daniel Vetter,
	Intel Graphics Development, Philippe Cornu, Yannick Fertre,
	Laurent Pinchart, Thomas Zimmermann, Daniel Vetter, Sam Ravnborg,
	linux-stm32, linux-arm-kernel, Alexandre Torgue

It's right above the drm_dev_put().

This is made possible by a preceeding patch which added a drmm_
cleanup action to drm_mode_config_init(), hence all we need to do to
ensure that drm_mode_config_cleanup() is run on final drm_device
cleanup is check the new error code for _init().

Aside: Another driver with a bit much devm_kzalloc, which should
probably use drmm_kzalloc instead ...

v2: Explain why this cleanup is possible (Laurent).

v3: Use drmm_mode_config_init() for more clarity (Sam, Thomas)

Cc: Sam Ravnborg <sam@ravnborg•org>
Cc: Thomas Zimmermann <tzimmermann@suse•de>
Acked-by: Philippe Cornu <philippe.cornu@st•com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
Cc: Yannick Fertre <yannick.fertre@st•com>
Cc: Philippe Cornu <philippe.cornu@st•com>
Cc: Benjamin Gaignard <benjamin.gaignard@linaro•org>
Cc: Vincent Abriou <vincent.abriou@st•com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail•com>
Cc: Alexandre Torgue <alexandre.torgue@st•com>
Cc: linux-stm32@st-md-mailman•stormreply.com
Cc: linux-arm-kernel@lists•infradead.org
---
 drivers/gpu/drm/stm/drv.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index ea9fcbdc68b3..0f85dd86cafa 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -88,7 +88,9 @@ static int drv_load(struct drm_device *ddev)
 
 	ddev->dev_private = (void *)ldev;
 
-	drm_mode_config_init(ddev);
+	ret = drmm_mode_config_init(ddev);
+	if (ret)
+		return ret;
 
 	/*
 	 * set max width and height as default value.
@@ -103,7 +105,7 @@ static int drv_load(struct drm_device *ddev)
 
 	ret = ltdc_load(ddev);
 	if (ret)
-		goto err;
+		return ret;
 
 	drm_mode_config_reset(ddev);
 	drm_kms_helper_poll_init(ddev);
@@ -111,9 +113,6 @@ static int drv_load(struct drm_device *ddev)
 	platform_set_drvdata(pdev, ddev);
 
 	return 0;
-err:
-	drm_mode_config_cleanup(ddev);
-	return ret;
 }
 
 static void drv_unload(struct drm_device *ddev)
@@ -122,7 +121,6 @@ static void drv_unload(struct drm_device *ddev)
 
 	drm_kms_helper_poll_fini(ddev);
 	ltdc_unload(ddev);
-	drm_mode_config_cleanup(ddev);
 }
 
 static __maybe_unused int drv_suspend(struct device *dev)
-- 
2.24.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
  2020-03-02 22:26 ` [PATCH 37/51] drm/rockchip: " Daniel Vetter
@ 2020-03-07  8:38   ` Sam Ravnborg
  0 siblings, 0 replies; 13+ messages in thread
From: Sam Ravnborg @ 2020-03-07  8:38 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Francesco Lavra, Intel Graphics Development, Sandy Huang,
	DRI Development, linux-rockchip, Laurent Pinchart,
	Thomas Zimmermann, Daniel Vetter, linux-arm-kernel

On Mon, Mar 02, 2020 at 11:26:17PM +0100, Daniel Vetter wrote:
> It's (almost, there's some iommu stuff without significance) right
> above the drm_dev_put().
> 
> This is made possible by a preceeding patch which added a drmm_
> cleanup action to drm_mode_config_init(), hence all we need to do to
> ensure that drm_mode_config_cleanup() is run on final drm_device
> cleanup is check the new error code for _init().
> 
> Aside: Another driver with a bit much devm_kzalloc, which should
> probably use drmm_kzalloc instead ...
> 
> v2: Explain why this cleanup is possible (Laurent).
> 
> v3: Jump out at the right label (Francesco)
> 
> v4: Try again, kbuild caught that I didn't build test this properly
> ...
> 
> v5: Use drmm_mode_config_init() for more clarity (Sam, Thomas)
> 
> Cc: Sam Ravnborg <sam@ravnborg•org>
> Cc: Thomas Zimmermann <tzimmermann@suse•de>
> Cc: Francesco Lavra <francescolavra.fl@gmail•com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
> Cc: Sandy Huang <hjc@rock-chips•com>
> Cc: "Heiko Stübner" <heiko@sntech•de>
> Cc: linux-arm-kernel@lists•infradead.org
> Cc: linux-rockchip@lists•infradead.org

Acked-by: Sam Ravnborg <sam@ravnborg•org>

> ---
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 14 +++++---------
>  1 file changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index 20ecb1508a22..0f3eb392fe39 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -135,14 +135,16 @@ static int rockchip_drm_bind(struct device *dev)
>  	if (ret)
>  		goto err_free;
>  
> -	drm_mode_config_init(drm_dev);
> +	ret = drmm_mode_config_init(drm_dev);
> +	if (ret)
> +		goto err_iommu_cleanup;
>  
>  	rockchip_drm_mode_config_init(drm_dev);
>  
>  	/* Try to bind all sub drivers. */
>  	ret = component_bind_all(dev, drm_dev);
>  	if (ret)
> -		goto err_mode_config_cleanup;
> +		goto err_iommu_cleanup;
>  
>  	ret = drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc);
>  	if (ret)
> @@ -173,12 +175,9 @@ static int rockchip_drm_bind(struct device *dev)
>  	rockchip_drm_fbdev_fini(drm_dev);
>  err_unbind_all:
>  	component_unbind_all(dev, drm_dev);
> -err_mode_config_cleanup:
> -	drm_mode_config_cleanup(drm_dev);
> +err_iommu_cleanup:
>  	rockchip_iommu_cleanup(drm_dev);
>  err_free:
> -	drm_dev->dev_private = NULL;
> -	dev_set_drvdata(dev, NULL);
>  	drm_dev_put(drm_dev);
>  	return ret;
>  }
> @@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
>  
>  	drm_atomic_helper_shutdown(drm_dev);
>  	component_unbind_all(dev, drm_dev);
> -	drm_mode_config_cleanup(drm_dev);
>  	rockchip_iommu_cleanup(drm_dev);
>  
> -	drm_dev->dev_private = NULL;
> -	dev_set_drvdata(dev, NULL);
>  	drm_dev_put(drm_dev);
>  }
>  
> -- 
> 2.24.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists•freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 38/51] drm/stm: Drop explicit drm_mode_config_cleanup call
  2020-03-02 22:26 ` [PATCH 38/51] drm/stm: " Daniel Vetter
@ 2020-03-07  9:25   ` Sam Ravnborg
  0 siblings, 0 replies; 13+ messages in thread
From: Sam Ravnborg @ 2020-03-07  9:25 UTC (permalink / raw)
  To: Daniel Vetter
  Cc: Thomas Zimmermann, Intel Graphics Development, Philippe Cornu,
	DRI Development, Yannick Fertre, Laurent Pinchart,
	Maxime Coquelin, Daniel Vetter, Vincent Abriou, linux-stm32,
	linux-arm-kernel, Alexandre Torgue

On Mon, Mar 02, 2020 at 11:26:18PM +0100, Daniel Vetter wrote:
> It's right above the drm_dev_put().
> 
> This is made possible by a preceeding patch which added a drmm_
> cleanup action to drm_mode_config_init(), hence all we need to do to
> ensure that drm_mode_config_cleanup() is run on final drm_device
> cleanup is check the new error code for _init().
> 
> Aside: Another driver with a bit much devm_kzalloc, which should
> probably use drmm_kzalloc instead ...
> 
> v2: Explain why this cleanup is possible (Laurent).
> 
> v3: Use drmm_mode_config_init() for more clarity (Sam, Thomas)
> 
> Cc: Sam Ravnborg <sam@ravnborg•org>
> Cc: Thomas Zimmermann <tzimmermann@suse•de>
> Acked-by: Philippe Cornu <philippe.cornu@st•com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
> Cc: Yannick Fertre <yannick.fertre@st•com>
> Cc: Philippe Cornu <philippe.cornu@st•com>
> Cc: Benjamin Gaignard <benjamin.gaignard@linaro•org>
> Cc: Vincent Abriou <vincent.abriou@st•com>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail•com>
> Cc: Alexandre Torgue <alexandre.torgue@st•com>
> Cc: linux-stm32@st-md-mailman•stormreply.com
> Cc: linux-arm-kernel@lists•infradead.org

Acked-by: Sam Ravnborg <sam@ravnborg•org>

> ---
>  drivers/gpu/drm/stm/drv.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index ea9fcbdc68b3..0f85dd86cafa 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -88,7 +88,9 @@ static int drv_load(struct drm_device *ddev)
>  
>  	ddev->dev_private = (void *)ldev;
>  
> -	drm_mode_config_init(ddev);
> +	ret = drmm_mode_config_init(ddev);
> +	if (ret)
> +		return ret;
>  
>  	/*
>  	 * set max width and height as default value.
> @@ -103,7 +105,7 @@ static int drv_load(struct drm_device *ddev)
>  
>  	ret = ltdc_load(ddev);
>  	if (ret)
> -		goto err;
> +		return ret;
>  
>  	drm_mode_config_reset(ddev);
>  	drm_kms_helper_poll_init(ddev);
> @@ -111,9 +113,6 @@ static int drv_load(struct drm_device *ddev)
>  	platform_set_drvdata(pdev, ddev);
>  
>  	return 0;
> -err:
> -	drm_mode_config_cleanup(ddev);
> -	return ret;
>  }
>  
>  static void drv_unload(struct drm_device *ddev)
> @@ -122,7 +121,6 @@ static void drv_unload(struct drm_device *ddev)
>  
>  	drm_kms_helper_poll_fini(ddev);
>  	ltdc_unload(ddev);
> -	drm_mode_config_cleanup(ddev);
>  }
>  
>  static __maybe_unused int drv_suspend(struct device *dev)
> -- 
> 2.24.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists•freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 37/51] drm/rockchip: Drop explicit drm_mode_config_cleanup call
       [not found] <20200323144950.3018436-1-daniel.vetter@ffwll.ch>
@ 2020-03-23 14:49 ` Daniel Vetter
  0 siblings, 0 replies; 13+ messages in thread
From: Daniel Vetter @ 2020-03-23 14:49 UTC (permalink / raw)
  To: DRI Development
  Cc: Heiko Stübner, Francesco Lavra, Daniel Vetter,
	Intel Graphics Development, Sandy Huang, linux-rockchip,
	Laurent Pinchart, Thomas Zimmermann, Daniel Vetter, Sam Ravnborg,
	linux-arm-kernel

It's (almost, there's some iommu stuff without significance) right
above the drm_dev_put().

This is made possible by a preceeding patch which added a drmm_
cleanup action to drm_mode_config_init(), hence all we need to do to
ensure that drm_mode_config_cleanup() is run on final drm_device
cleanup is check the new error code for _init().

Aside: Another driver with a bit much devm_kzalloc, which should
probably use drmm_kzalloc instead ...

v2: Explain why this cleanup is possible (Laurent).

v3: Jump out at the right label (Francesco)

v4: Try again, kbuild caught that I didn't build test this properly
...

v5: Use drmm_mode_config_init() for more clarity (Sam, Thomas)

Acked-by: Sam Ravnborg <sam@ravnborg•org>
Cc: Sam Ravnborg <sam@ravnborg•org>
Cc: Thomas Zimmermann <tzimmermann@suse•de>
Cc: Francesco Lavra <francescolavra.fl@gmail•com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard•com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel•com>
Cc: Sandy Huang <hjc@rock-chips•com>
Cc: "Heiko Stübner" <heiko@sntech•de>
Cc: linux-arm-kernel@lists•infradead.org
Cc: linux-rockchip@lists•infradead.org
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 20ecb1508a22..0f3eb392fe39 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -135,14 +135,16 @@ static int rockchip_drm_bind(struct device *dev)
 	if (ret)
 		goto err_free;
 
-	drm_mode_config_init(drm_dev);
+	ret = drmm_mode_config_init(drm_dev);
+	if (ret)
+		goto err_iommu_cleanup;
 
 	rockchip_drm_mode_config_init(drm_dev);
 
 	/* Try to bind all sub drivers. */
 	ret = component_bind_all(dev, drm_dev);
 	if (ret)
-		goto err_mode_config_cleanup;
+		goto err_iommu_cleanup;
 
 	ret = drm_vblank_init(drm_dev, drm_dev->mode_config.num_crtc);
 	if (ret)
@@ -173,12 +175,9 @@ static int rockchip_drm_bind(struct device *dev)
 	rockchip_drm_fbdev_fini(drm_dev);
 err_unbind_all:
 	component_unbind_all(dev, drm_dev);
-err_mode_config_cleanup:
-	drm_mode_config_cleanup(drm_dev);
+err_iommu_cleanup:
 	rockchip_iommu_cleanup(drm_dev);
 err_free:
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 	return ret;
 }
@@ -194,11 +193,8 @@ static void rockchip_drm_unbind(struct device *dev)
 
 	drm_atomic_helper_shutdown(drm_dev);
 	component_unbind_all(dev, drm_dev);
-	drm_mode_config_cleanup(drm_dev);
 	rockchip_iommu_cleanup(drm_dev);
 
-	drm_dev->dev_private = NULL;
-	dev_set_drvdata(dev, NULL);
 	drm_dev_put(drm_dev);
 }
 
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists•infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-03-23 14:51 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20200302222631.3861340-1-daniel.vetter@ffwll.ch>
2020-03-02 22:26 ` [PATCH 34/51] drm/meson: Drop explicit drm_mode_config_cleanup call Daniel Vetter
2020-03-02 22:26 ` [PATCH 37/51] drm/rockchip: " Daniel Vetter
2020-03-07  8:38   ` Sam Ravnborg
2020-03-02 22:26 ` [PATCH 38/51] drm/stm: " Daniel Vetter
2020-03-07  9:25   ` Sam Ravnborg
     [not found] <20200323144950.3018436-1-daniel.vetter@ffwll.ch>
2020-03-23 14:49 ` [PATCH 37/51] drm/rockchip: " Daniel Vetter
     [not found] <20200227181522.2711142-1-daniel.vetter@ffwll.ch>
2020-02-27 18:15 ` Daniel Vetter
2020-02-28 21:19   ` kbuild test robot
2020-02-28 23:34     ` Daniel Vetter
2020-02-29  1:53   ` kbuild test robot
     [not found] <20200221210319.2245170-1-daniel.vetter@ffwll.ch>
2020-02-21 21:03 ` Daniel Vetter
2020-02-24 19:13   ` Francesco Lavra
2020-02-24 20:37     ` Daniel Vetter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox