Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

authored by

Emil Velikov and committed by
Emil Velikov
b5d25074 1a9458ae

+4 -35
-19
drivers/gpu/drm/drm_gem.c
··· 983 983 EXPORT_SYMBOL(drm_gem_object_free); 984 984 985 985 /** 986 - * drm_gem_object_put_unlocked - drop a GEM buffer object reference 987 - * @obj: GEM buffer object 988 - * 989 - * This releases a reference to @obj. Callers must not hold the 990 - * &drm_device.struct_mutex lock when calling this function. 991 - * 992 - * See also __drm_gem_object_put(). 993 - */ 994 - void 995 - drm_gem_object_put_unlocked(struct drm_gem_object *obj) 996 - { 997 - if (!obj) 998 - return; 999 - 1000 - kref_put(&obj->refcount, drm_gem_object_free); 1001 - } 1002 - EXPORT_SYMBOL(drm_gem_object_put_unlocked); 1003 - 1004 - /** 1005 986 * drm_gem_object_put - release a GEM buffer object reference 1006 987 * @obj: GEM buffer object 1007 988 *
+1 -1
drivers/gpu/drm/i915/gem/i915_gem_object.h
··· 105 105 static inline void 106 106 i915_gem_object_put(struct drm_i915_gem_object *obj) 107 107 { 108 - __drm_gem_object_put(&obj->base); 108 + drm_gem_object_put_unlocked(&obj->base); 109 109 } 110 110 111 111 #define assert_object_held(obj) dma_resv_assert_held((obj)->base.resv)
-2
include/drm/drm_drv.h
··· 332 332 * 333 333 * This is deprecated and should not be used by new drivers. Use 334 334 * &drm_gem_object_funcs.free instead. 335 - * Compared to @gem_free_object this is not encumbered with 336 - * &drm_device.struct_mutex legacy locking schemes. 337 335 */ 338 336 void (*gem_free_object_unlocked) (struct drm_gem_object *obj); 339 337
+3 -13
include/drm/drm_gem.h
··· 364 364 } 365 365 366 366 /** 367 - * __drm_gem_object_put - raw function to release a GEM buffer object reference 367 + * drm_gem_object_put_unlocked - drop a GEM buffer object reference 368 368 * @obj: GEM buffer object 369 369 * 370 - * This function is meant to be used by drivers which are not encumbered with 371 - * &drm_device.struct_mutex legacy locking and which are using the 372 - * gem_free_object_unlocked callback. It avoids all the locking checks and 373 - * locking overhead of drm_gem_object_put() and drm_gem_object_put_unlocked(). 374 - * 375 - * Drivers should never call this directly in their code. Instead they should 376 - * wrap it up into a ``driver_gem_object_put(struct driver_gem_object *obj)`` 377 - * wrapper function, and use that. Shared code should never call this, to 378 - * avoid breaking drivers by accident which still depend upon 379 - * &drm_device.struct_mutex locking. 370 + * This releases a reference to @obj. 380 371 */ 381 372 static inline void 382 - __drm_gem_object_put(struct drm_gem_object *obj) 373 + drm_gem_object_put_unlocked(struct drm_gem_object *obj) 383 374 { 384 375 kref_put(&obj->refcount, drm_gem_object_free); 385 376 } 386 377 387 - void drm_gem_object_put_unlocked(struct drm_gem_object *obj); 388 378 void drm_gem_object_put(struct drm_gem_object *obj); 389 379 390 380 int drm_gem_handle_create(struct drm_file *file_priv,