mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-24 10:39:52 +00:00
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: Emil Velikov <emil.velikov@collabora.com> Acked-by: Sam Ravnborg <sam@ravnborg.org> (v1) Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20200515095118.2743122-11-emil.l.velikov@gmail.com
This commit is contained in:
parent
1a9458aeb8
commit
b5d250744c
4 changed files with 4 additions and 35 deletions
|
@ -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))
|
||||||
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 {
|
||||||
*
|
*
|
||||||
* 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __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,
|
||||||
|
|
Loading…
Add table
Reference in a new issue