diff options
author | Rob Clark <robdclark@chromium.org> | 2022-08-02 08:51:48 -0700 |
---|---|---|
committer | Rob Clark <robdclark@chromium.org> | 2022-08-28 08:31:49 -0700 |
commit | d95c196ddb6ccd2445760b003e6e8a43cd5e84ba (patch) | |
tree | 3862248ad9d1baa3a8e7fc59ce698d84109f6643 /drivers/gpu | |
parent | d4d7d3630d703ff19923b82534bc18e345477c6f (diff) | |
download | linux-d95c196ddb6ccd2445760b003e6e8a43cd5e84ba.tar.bz2 |
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
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem.h | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h index 3c6add51d13b..c4844cf3a585 100644 --- a/drivers/gpu/drm/msm/msm_gem.h +++ b/drivers/gpu/drm/msm/msm_gem.h @@ -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: */ |