]> git.baikalelectronics.ru Git - kernel.git/commit
drm/gem: support BO freeing without dev->struct_mutex
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 2 May 2016 08:40:51 +0000 (10:40 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 4 May 2016 10:25:47 +0000 (12:25 +0200)
commite8e1a8d666271c2a6ef096e18c6f11f2a0a98649
treec47228be33ff2fc10275c059b74143dc2dc68115
parentad0c74eb8f7c808513316ec503c25c2baadaa86d
drm/gem: support BO freeing without dev->struct_mutex

Finally all the core gem and a lot of drivers are entirely free of
dev->struct_mutex depencies, and we can start to have an entirely
lockless unref path.

To make sure that no one who touches the core code accidentally breaks
existing drivers which still require dev->struct_mutex I've made the
might_lock check unconditional.

While at it de-inline the ref/unref functions, they've become a bit
too big.

v2: Make it not leak like a sieve.

v3: Review from Lucas:
- drop != NULL in pointer checks.
- fixup copypasted kerneldoc to actually match the functions.

v4:
Add __drm_gem_object_unreference as a fastpath helper for drivers who
abolished dev->struct_mutex, requested by Chris.

v5: Fix silly mistake in drm_gem_object_unreference_unlocked caught by
intel-gfx CI - I checked for gem_free_object instead of
gem_free_object_unlocked ...

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Alex Deucher <alexdeucher@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de> (v3)
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v4)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1462178451-1765-1-git-send-email-daniel.vetter@ffwll.ch
drivers/gpu/drm/drm_gem.c
include/drm/drmP.h
include/drm/drm_gem.h