[PATCH 02/15] drm/mode: move framebuffer_free up above framebuffer_init

Daniel Vetter daniel at ffwll.ch
Thu Apr 21 08:03:53 UTC 2016


On Fri, Apr 15, 2016 at 03:10:33PM +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> A later patch will use it in framebuffer_init, and I want
> to keep the diff cleaner.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>

Acked-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  drivers/gpu/drm/drm_crtc.c | 58 +++++++++++++++++++++++-----------------------
>  1 file changed, 29 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 21cb8dc..e69aac4 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -389,6 +389,35 @@ struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
>  }
>  EXPORT_SYMBOL(drm_mode_object_find);
>  
> +/* dev->mode_config.fb_lock must be held! */
> +static void __drm_framebuffer_unregister(struct drm_device *dev,
> +					 struct drm_framebuffer *fb)
> +{
> +	drm_mode_object_put(dev, &fb->base);
> +
> +	fb->base.id = 0;
> +}
> +
> +static void drm_framebuffer_free(struct kref *kref)
> +{
> +	struct drm_framebuffer *fb =
> +			container_of(kref, struct drm_framebuffer, refcount);
> +	struct drm_device *dev = fb->dev;
> +
> +	/*
> +	 * The lookup idr holds a weak reference, which has not necessarily been
> +	 * removed at this point. Check for that.
> +	 */
> +	mutex_lock(&dev->mode_config.fb_lock);
> +	if (fb->base.id) {
> +		/* Mark fb as reaped and drop idr ref. */
> +		__drm_framebuffer_unregister(dev, fb);
> +	}
> +	mutex_unlock(&dev->mode_config.fb_lock);
> +
> +	fb->funcs->destroy(fb);
> +}
> +
>  /**
>   * drm_framebuffer_init - initialize a framebuffer
>   * @dev: DRM device
> @@ -431,35 +460,6 @@ out:
>  }
>  EXPORT_SYMBOL(drm_framebuffer_init);
>  
> -/* dev->mode_config.fb_lock must be held! */
> -static void __drm_framebuffer_unregister(struct drm_device *dev,
> -					 struct drm_framebuffer *fb)
> -{
> -	drm_mode_object_put(dev, &fb->base);
> -
> -	fb->base.id = 0;
> -}
> -
> -static void drm_framebuffer_free(struct kref *kref)
> -{
> -	struct drm_framebuffer *fb =
> -			container_of(kref, struct drm_framebuffer, refcount);
> -	struct drm_device *dev = fb->dev;
> -
> -	/*
> -	 * The lookup idr holds a weak reference, which has not necessarily been
> -	 * removed at this point. Check for that.
> -	 */
> -	mutex_lock(&dev->mode_config.fb_lock);
> -	if (fb->base.id) {
> -		/* Mark fb as reaped and drop idr ref. */
> -		__drm_framebuffer_unregister(dev, fb);
> -	}
> -	mutex_unlock(&dev->mode_config.fb_lock);
> -
> -	fb->funcs->destroy(fb);
> -}
> -
>  static struct drm_framebuffer *__drm_framebuffer_lookup(struct drm_device *dev,
>  							uint32_t id)
>  {
> -- 
> 2.5.5
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list