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

Reply via email to