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:
parent
d4d7d3630d
commit
d95c196ddb
1 changed files with 6 additions and 9 deletions
|
|
@ -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: */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue