drm/qxl: use iterator instead of dma_resv_shared_list
authorChristian König <christian.koenig@amd.com>
Fri, 24 Sep 2021 08:04:00 +0000 (10:04 +0200)
committerChristian König <christian.koenig@amd.com>
Tue, 30 Nov 2021 13:53:02 +0000 (14:53 +0100)
I'm not sure why it is useful to know the number of fences
in the reservation object, but we try to avoid exposing the
dma_resv_shared_list() function.

So use the iterator instead. If more information is desired
we could use dma_resv_describe() as well.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20211129120659.1815-5-christian.koenig@amd.com
drivers/gpu/drm/qxl/qxl_debugfs.c

index 1f9a596..6a36b0f 100644 (file)
@@ -57,13 +57,16 @@ qxl_debugfs_buffers_info(struct seq_file *m, void *data)
        struct qxl_bo *bo;
 
        list_for_each_entry(bo, &qdev->gem.objects, list) {
-               struct dma_resv_list *fobj;
-               int rel;
-
-               rcu_read_lock();
-               fobj = dma_resv_shared_list(bo->tbo.base.resv);
-               rel = fobj ? fobj->shared_count : 0;
-               rcu_read_unlock();
+               struct dma_resv_iter cursor;
+               struct dma_fence *fence;
+               int rel = 0;
+
+               dma_resv_iter_begin(&cursor, bo->tbo.base.resv, true);
+               dma_resv_for_each_fence_unlocked(&cursor, fence) {
+                       if (dma_resv_iter_is_restarted(&cursor))
+                               rel = 0;
+                       ++rel;
+               }
 
                seq_printf(m, "size %ld, pc %d, num releases %d\n",
                           (unsigned long)bo->tbo.base.size,