mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
drm/msm/gem: Convert to lockdep assert
Utilize the power of lockdep for our GEM locking related sanity checking. Signed-off-by: Rob Clark <robdclark@chromium.org> Patchwork: https://patchwork.freedesktop.org/patch/496139/ Link: https://lore.kernel.org/r/20220802155152.1727594-16-robdclark@gmail.com
This commit is contained in:
@@ -197,8 +197,8 @@ msm_gem_unlock(struct drm_gem_object *obj)
|
||||
dma_resv_unlock(obj->resv);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
msm_gem_is_locked(struct drm_gem_object *obj)
|
||||
static inline void
|
||||
msm_gem_assert_locked(struct drm_gem_object *obj)
|
||||
{
|
||||
/*
|
||||
* Destroying the object is a special case.. msm_gem_free_object()
|
||||
@@ -212,13 +212,10 @@ msm_gem_is_locked(struct drm_gem_object *obj)
|
||||
* Unfortunately lockdep is not aware of this detail. So when the
|
||||
* refcount drops to zero, we pretend it is already locked.
|
||||
*/
|
||||
return dma_resv_is_locked(obj->resv) || (kref_read(&obj->refcount) == 0);
|
||||
}
|
||||
|
||||
static inline void
|
||||
msm_gem_assert_locked(struct drm_gem_object *obj)
|
||||
{
|
||||
GEM_WARN_ON(!msm_gem_is_locked(obj));
|
||||
lockdep_assert_once(
|
||||
(kref_read(&obj->refcount) == 0) ||
|
||||
(lockdep_is_held(&obj->resv->lock.base) != LOCK_STATE_NOT_HELD)
|
||||
);
|
||||
}
|
||||
|
||||
/* imported/exported objects are not purgeable: */
|
||||
|
||||
Reference in New Issue
Block a user