Commit b5d25074 authored by Emil Velikov's avatar Emil Velikov Committed by Emil Velikov

drm/gem: fold drm_gem_object_put_unlocked and __drm_gem_object_put()

With earlier patch we removed the overhead so now we can lift the helper
into the header effectively folding it with __drm_object_put.

v2: drop struct_mutex references (Daniel)
Signed-off-by: default avatarEmil Velikov <emil.velikov@collabora.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org> (v1)
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20200515095118.2743122-11-emil.l.velikov@gmail.com
parent 1a9458ae
...@@ -982,25 +982,6 @@ drm_gem_object_free(struct kref *kref) ...@@ -982,25 +982,6 @@ drm_gem_object_free(struct kref *kref)
} }
EXPORT_SYMBOL(drm_gem_object_free); EXPORT_SYMBOL(drm_gem_object_free);
/**
* drm_gem_object_put_unlocked - drop a GEM buffer object reference
* @obj: GEM buffer object
*
* This releases a reference to @obj. Callers must not hold the
* &drm_device.struct_mutex lock when calling this function.
*
* See also __drm_gem_object_put().
*/
void
drm_gem_object_put_unlocked(struct drm_gem_object *obj)
{
if (!obj)
return;
kref_put(&obj->refcount, drm_gem_object_free);
}
EXPORT_SYMBOL(drm_gem_object_put_unlocked);
/** /**
* drm_gem_object_put - release a GEM buffer object reference * drm_gem_object_put - release a GEM buffer object reference
* @obj: GEM buffer object * @obj: GEM buffer object
......
...@@ -105,7 +105,7 @@ __attribute__((nonnull)) ...@@ -105,7 +105,7 @@ __attribute__((nonnull))
static inline void static inline void
i915_gem_object_put(struct drm_i915_gem_object *obj) i915_gem_object_put(struct drm_i915_gem_object *obj)
{ {
__drm_gem_object_put(&obj->base); drm_gem_object_put_unlocked(&obj->base);
} }
#define assert_object_held(obj) dma_resv_assert_held((obj)->base.resv) #define assert_object_held(obj) dma_resv_assert_held((obj)->base.resv)
......
...@@ -332,8 +332,6 @@ struct drm_driver { ...@@ -332,8 +332,6 @@ struct drm_driver {
* *
* This is deprecated and should not be used by new drivers. Use * This is deprecated and should not be used by new drivers. Use
* &drm_gem_object_funcs.free instead. * &drm_gem_object_funcs.free instead.
* Compared to @gem_free_object this is not encumbered with
* &drm_device.struct_mutex legacy locking schemes.
*/ */
void (*gem_free_object_unlocked) (struct drm_gem_object *obj); void (*gem_free_object_unlocked) (struct drm_gem_object *obj);
......
...@@ -364,27 +364,17 @@ static inline void drm_gem_object_get(struct drm_gem_object *obj) ...@@ -364,27 +364,17 @@ static inline void drm_gem_object_get(struct drm_gem_object *obj)
} }
/** /**
* __drm_gem_object_put - raw function to release a GEM buffer object reference * drm_gem_object_put_unlocked - drop a GEM buffer object reference
* @obj: GEM buffer object * @obj: GEM buffer object
* *
* This function is meant to be used by drivers which are not encumbered with * This releases a reference to @obj.
* &drm_device.struct_mutex legacy locking and which are using the
* gem_free_object_unlocked callback. It avoids all the locking checks and
* locking overhead of drm_gem_object_put() and drm_gem_object_put_unlocked().
*
* Drivers should never call this directly in their code. Instead they should
* wrap it up into a ``driver_gem_object_put(struct driver_gem_object *obj)``
* wrapper function, and use that. Shared code should never call this, to
* avoid breaking drivers by accident which still depend upon
* &drm_device.struct_mutex locking.
*/ */
static inline void static inline void
__drm_gem_object_put(struct drm_gem_object *obj) drm_gem_object_put_unlocked(struct drm_gem_object *obj)
{ {
kref_put(&obj->refcount, drm_gem_object_free); kref_put(&obj->refcount, drm_gem_object_free);
} }
void drm_gem_object_put_unlocked(struct drm_gem_object *obj);
void drm_gem_object_put(struct drm_gem_object *obj); void drm_gem_object_put(struct drm_gem_object *obj);
int drm_gem_handle_create(struct drm_file *file_priv, int drm_gem_handle_create(struct drm_file *file_priv,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment