Hi Greg,
sorry just realized this after users started to complain. This patch shouldn't been backported to 5.11 in the first place.
The warning itself is a good idea, but we also have patch for drivers and TTM in the pipeline for 5.12 so that the warning isn't triggered any more.
Without backporting all of that we now get a rain of warnings in 5.11.9.
My suggestion is to revert this patch from the 5.11 branch.
Thanks, Christian.
Am 22.03.21 um 13:27 schrieb Greg Kroah-Hartman:
From: Daniel Vetter daniel.vetter@ffwll.ch
[ Upstream commit 57fcd550eb15bce14a7154736379dfd4ed60ae81 ]
Not technically a problem for ttm, but very likely a driver bug and pretty big time confusing for reviewing code.
So warn about it, both at cleanup time (so we catch these for sure) and at pin/unpin time (so we know who's the culprit).
Reviewed-by: Huang Rui ray.huang@amd.com Reviewed-by: Christian König christian.koenig@amd.com Signed-off-by: Daniel Vetter daniel.vetter@intel.com Cc: Christian Koenig christian.koenig@amd.com Cc: Huang Rui ray.huang@amd.com Link: https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwork.... Signed-off-by: Sasha Levin sashal@kernel.org
drivers/gpu/drm/ttm/ttm_bo.c | 2 +- include/drm/ttm/ttm_bo_api.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 22073e77fdf9..a76eb2c14e8c 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -514,7 +514,7 @@ static void ttm_bo_release(struct kref *kref) * shrinkers, now that they are queued for * destruction. */
if (bo->pin_count) {
if (WARN_ON(bo->pin_count)) { bo->pin_count = 0; ttm_bo_del_from_lru(bo); ttm_bo_add_mem_to_lru(bo, &bo->mem);
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h index 2564e66e67d7..79b9367e0ffd 100644 --- a/include/drm/ttm/ttm_bo_api.h +++ b/include/drm/ttm/ttm_bo_api.h @@ -600,6 +600,7 @@ static inline bool ttm_bo_uses_embedded_gem_object(struct ttm_buffer_object *bo) static inline void ttm_bo_pin(struct ttm_buffer_object *bo) { dma_resv_assert_held(bo->base.resv);
- WARN_ON_ONCE(!kref_read(&bo->kref)); ++bo->pin_count; }
@@ -613,6 +614,7 @@ static inline void ttm_bo_unpin(struct ttm_buffer_object *bo) { dma_resv_assert_held(bo->base.resv); WARN_ON_ONCE(!bo->pin_count);
- WARN_ON_ONCE(!kref_read(&bo->kref)); --bo->pin_count; }