* [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe
@ 2021-10-28 8:58 Christian König
2021-10-28 8:58 ` [PATCH 2/4] drm/msm: use the new dma_resv_describe Christian König
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Christian König @ 2021-10-28 8:58 UTC (permalink / raw)
To: dri-devel, linux-media
Cc: etnaviv, linux-arm-msm, freedreno, virtualization, spice-devel
Add functions to dump dma_fence and dma_resv objects into a seq_file and
use them for printing the debugfs informations.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
---
drivers/dma-buf/dma-buf.c | 11 +----------
drivers/dma-buf/dma-fence.c | 16 ++++++++++++++++
drivers/dma-buf/dma-resv.c | 23 +++++++++++++++++++++++
include/linux/dma-fence.h | 1 +
include/linux/dma-resv.h | 1 +
5 files changed, 42 insertions(+), 10 deletions(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 7b619998f03a..1d6f6c6a0b09 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -1332,8 +1332,6 @@ static int dma_buf_debug_show(struct seq_file *s, void *unused)
{
struct dma_buf *buf_obj;
struct dma_buf_attachment *attach_obj;
- struct dma_resv_iter cursor;
- struct dma_fence *fence;
int count = 0, attach_count;
size_t size = 0;
int ret;
@@ -1361,14 +1359,7 @@ static int dma_buf_debug_show(struct seq_file *s, void *unused)
file_inode(buf_obj->file)->i_ino,
buf_obj->name ?: "");
- dma_resv_for_each_fence(&cursor, buf_obj->resv, true, fence) {
- seq_printf(s, "\t%s fence: %s %s %ssignalled\n",
- dma_resv_iter_is_exclusive(&cursor) ?
- "Exclusive" : "Shared",
- fence->ops->get_driver_name(fence),
- fence->ops->get_timeline_name(fence),
- dma_fence_is_signaled(fence) ? "" : "un");
- }
+ dma_resv_describe(buf_obj->resv, s);
seq_puts(s, "\tAttached Devices:\n");
attach_count = 0;
diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index 1e82ecd443fa..5175adf58644 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -907,6 +907,22 @@ dma_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count,
}
EXPORT_SYMBOL(dma_fence_wait_any_timeout);
+/**
+ * dma_fence_describe - Dump fence describtion into seq_file
+ * @fence: the 6fence to describe
+ * @seq: the seq_file to put the textual description into
+ *
+ * Dump a textual description of the fence and it's state into the seq_file.
+ */
+void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
+{
+ seq_printf(seq, "%s %s seq %llu %ssignalled\n",
+ fence->ops->get_driver_name(fence),
+ fence->ops->get_timeline_name(fence), fence->seqno,
+ dma_fence_is_signaled(fence) ? "" : "un");
+}
+EXPORT_SYMBOL(dma_fence_describe);
+
/**
* dma_fence_init - Initialize a custom fence.
* @fence: the fence to initialize
diff --git a/drivers/dma-buf/dma-resv.c b/drivers/dma-buf/dma-resv.c
index 9eb2baa387d4..ff3c0558b3b8 100644
--- a/drivers/dma-buf/dma-resv.c
+++ b/drivers/dma-buf/dma-resv.c
@@ -38,6 +38,7 @@
#include <linux/mm.h>
#include <linux/sched/mm.h>
#include <linux/mmu_notifier.h>
+#include <linux/seq_file.h>
/**
* DOC: Reservation Object Overview
@@ -666,6 +667,28 @@ bool dma_resv_test_signaled(struct dma_resv *obj, bool test_all)
}
EXPORT_SYMBOL_GPL(dma_resv_test_signaled);
+/**
+ * dma_resv_describe - Dump description of the resv object into seq_file
+ * @obj: the reservation object
+ * @seq: the seq_file to dump the description into
+ *
+ * Dump a textual description of the fences inside an dma_resv object into the
+ * seq_file.
+ */
+void dma_resv_describe(struct dma_resv *obj, struct seq_file *seq)
+{
+ struct dma_resv_iter cursor;
+ struct dma_fence *fence;
+
+ dma_resv_for_each_fence(&cursor, obj, true, fence) {
+ seq_printf(seq, "\t%s fence:",
+ dma_resv_iter_is_exclusive(&cursor) ?
+ "Exclusive" : "Shared");
+ dma_fence_describe(fence, seq);
+ }
+}
+EXPORT_SYMBOL_GPL(dma_resv_describe);
+
#if IS_ENABLED(CONFIG_LOCKDEP)
static int __init dma_resv_lockdep(void)
{
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index a706b7bf51d7..1ea691753bd3 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -264,6 +264,7 @@ void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
void dma_fence_release(struct kref *kref);
void dma_fence_free(struct dma_fence *fence);
+void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
/**
* dma_fence_put - decreases refcount of the fence
diff --git a/include/linux/dma-resv.h b/include/linux/dma-resv.h
index dbd235ab447f..09c6063b199a 100644
--- a/include/linux/dma-resv.h
+++ b/include/linux/dma-resv.h
@@ -490,5 +490,6 @@ int dma_resv_copy_fences(struct dma_resv *dst, struct dma_resv *src);
long dma_resv_wait_timeout(struct dma_resv *obj, bool wait_all, bool intr,
unsigned long timeout);
bool dma_resv_test_signaled(struct dma_resv *obj, bool test_all);
+void dma_resv_describe(struct dma_resv *obj, struct seq_file *seq);
#endif /* _LINUX_RESERVATION_H */
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/4] drm/msm: use the new dma_resv_describe
2021-10-28 8:58 [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe Christian König
@ 2021-10-28 8:58 ` Christian König
2021-10-28 8:58 ` [PATCH 3/4] drm/etnaviv: use dma_resv_describe Christian König
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2021-10-28 8:58 UTC (permalink / raw)
To: dri-devel, linux-media
Cc: etnaviv, linux-arm-msm, freedreno, virtualization, spice-devel
Instead of hand rolling pretty much the same code.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
---
drivers/gpu/drm/msm/msm_gem.c | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 5bd511f07c07..3878b8dc2d59 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -865,23 +865,11 @@ int msm_gem_cpu_fini(struct drm_gem_object *obj)
}
#ifdef CONFIG_DEBUG_FS
-static void describe_fence(struct dma_fence *fence, const char *type,
- struct seq_file *m)
-{
- if (!dma_fence_is_signaled(fence))
- seq_printf(m, "\t%9s: %s %s seq %llu\n", type,
- fence->ops->get_driver_name(fence),
- fence->ops->get_timeline_name(fence),
- fence->seqno);
-}
-
void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m,
struct msm_gem_stats *stats)
{
struct msm_gem_object *msm_obj = to_msm_bo(obj);
struct dma_resv *robj = obj->resv;
- struct dma_resv_iter cursor;
- struct dma_fence *fence;
struct msm_gem_vma *vma;
uint64_t off = drm_vma_node_start(&obj->vma_node);
const char *madv;
@@ -955,13 +943,7 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m,
seq_puts(m, "\n");
}
- dma_resv_for_each_fence(&cursor, robj, true, fence) {
- if (dma_resv_iter_is_exclusive(&cursor))
- describe_fence(fence, "Exclusive", m);
- else
- describe_fence(fence, "Shared", m);
- }
-
+ dma_resv_describe(robj, m);
msm_gem_unlock(obj);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/4] drm/etnaviv: use dma_resv_describe
2021-10-28 8:58 [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe Christian König
2021-10-28 8:58 ` [PATCH 2/4] drm/msm: use the new dma_resv_describe Christian König
@ 2021-10-28 8:58 ` Christian König
2021-10-28 8:58 ` [PATCH 4/4] drm/qxl: use iterator instead of dma_resv_shared_list Christian König
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2021-10-28 8:58 UTC (permalink / raw)
To: dri-devel, linux-media
Cc: etnaviv, linux-arm-msm, freedreno, virtualization, spice-devel
Instead of dumping the fence info manually.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
---
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 26 +++++++-------------------
1 file changed, 7 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index b018693e3877..d5314aa28ff7 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -424,36 +424,24 @@ int etnaviv_gem_wait_bo(struct etnaviv_gpu *gpu, struct drm_gem_object *obj,
}
#ifdef CONFIG_DEBUG_FS
-static void etnaviv_gem_describe_fence(struct dma_fence *fence,
- const char *type, struct seq_file *m)
-{
- seq_printf(m, "\t%9s: %s %s seq %llu\n", type,
- fence->ops->get_driver_name(fence),
- fence->ops->get_timeline_name(fence),
- fence->seqno);
-}
-
static void etnaviv_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
{
struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
struct dma_resv *robj = obj->resv;
- struct dma_resv_iter cursor;
- struct dma_fence *fence;
unsigned long off = drm_vma_node_start(&obj->vma_node);
+ int r;
seq_printf(m, "%08x: %c %2d (%2d) %08lx %p %zd\n",
etnaviv_obj->flags, is_active(etnaviv_obj) ? 'A' : 'I',
obj->name, kref_read(&obj->refcount),
off, etnaviv_obj->vaddr, obj->size);
- dma_resv_iter_begin(&cursor, robj, true);
- dma_resv_for_each_fence_unlocked(&cursor, fence) {
- if (dma_resv_iter_is_exclusive(&cursor))
- etnaviv_gem_describe_fence(fence, "Exclusive", m);
- else
- etnaviv_gem_describe_fence(fence, "Shared", m);
- }
- dma_resv_iter_end(&cursor);
+ r = dma_resv_lock(robj, NULL);
+ if (r)
+ return;
+
+ dma_resv_describe(robj, m);
+ dma_resv_unlock(robj);
}
void etnaviv_gem_describe_objects(struct etnaviv_drm_private *priv,
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/4] drm/qxl: use iterator instead of dma_resv_shared_list
2021-10-28 8:58 [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe Christian König
2021-10-28 8:58 ` [PATCH 2/4] drm/msm: use the new dma_resv_describe Christian König
2021-10-28 8:58 ` [PATCH 3/4] drm/etnaviv: use dma_resv_describe Christian König
@ 2021-10-28 8:58 ` Christian König
2021-10-29 9:17 ` [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe kernel test robot
2021-10-30 23:22 ` kernel test robot
4 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2021-10-28 8:58 UTC (permalink / raw)
To: dri-devel, linux-media
Cc: etnaviv, linux-arm-msm, freedreno, virtualization, spice-devel
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>
---
drivers/gpu/drm/qxl/qxl_debugfs.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/qxl/qxl_debugfs.c b/drivers/gpu/drm/qxl/qxl_debugfs.c
index 1f9a59601bb1..6a36b0fd845c 100644
--- a/drivers/gpu/drm/qxl/qxl_debugfs.c
+++ b/drivers/gpu/drm/qxl/qxl_debugfs.c
@@ -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,
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe
2021-10-28 8:58 [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe Christian König
` (2 preceding siblings ...)
2021-10-28 8:58 ` [PATCH 4/4] drm/qxl: use iterator instead of dma_resv_shared_list Christian König
@ 2021-10-29 9:17 ` kernel test robot
2021-10-30 23:22 ` kernel test robot
4 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2021-10-29 9:17 UTC (permalink / raw)
To: Christian König, dri-devel, linux-media
Cc: kbuild-all, etnaviv, linux-arm-msm, freedreno, virtualization,
spice-devel
[-- Attachment #1: Type: text/plain, Size: 2793 bytes --]
Hi "Christian,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
[also build test ERROR on next-20211028]
[cannot apply to drm/drm-next drm-intel/for-linux-next drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master airlied/drm-next v5.15-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Christian-K-nig/dma-buf-add-dma_fence_describe-and-dma_resv_describe/20211028-171805
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: m68k-allyesconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/80ae7cf414dbdb7fa9f48a46cc1bfa25b0a4fda7
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Christian-K-nig/dma-buf-add-dma_fence_describe-and-dma_resv_describe/20211028-171805
git checkout 80ae7cf414dbdb7fa9f48a46cc1bfa25b0a4fda7
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/dma-buf/dma-fence.c: In function 'dma_fence_describe':
>> drivers/dma-buf/dma-fence.c:919:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration]
919 | seq_printf(seq, "%s %s seq %llu %ssignalled\n",
| ^~~~~~~~~~
| bstr_printf
cc1: all warnings being treated as errors
vim +919 drivers/dma-buf/dma-fence.c
909
910 /**
911 * dma_fence_describe - Dump fence describtion into seq_file
912 * @fence: the 6fence to describe
913 * @seq: the seq_file to put the textual description into
914 *
915 * Dump a textual description of the fence and it's state into the seq_file.
916 */
917 void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
918 {
> 919 seq_printf(seq, "%s %s seq %llu %ssignalled\n",
920 fence->ops->get_driver_name(fence),
921 fence->ops->get_timeline_name(fence), fence->seqno,
922 dma_fence_is_signaled(fence) ? "" : "un");
923 }
924 EXPORT_SYMBOL(dma_fence_describe);
925
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 62001 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe
2021-10-28 8:58 [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe Christian König
` (3 preceding siblings ...)
2021-10-29 9:17 ` [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe kernel test robot
@ 2021-10-30 23:22 ` kernel test robot
4 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2021-10-30 23:22 UTC (permalink / raw)
To: Christian König, dri-devel, linux-media
Cc: llvm, kbuild-all, etnaviv, linux-arm-msm, freedreno,
virtualization, spice-devel
[-- Attachment #1: Type: text/plain, Size: 2724 bytes --]
Hi "Christian,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-tip/drm-tip]
[also build test ERROR on next-20211029]
[cannot apply to drm/drm-next drm-intel/for-linux-next drm-exynos/exynos-drm-next tegra-drm/drm/tegra/for-next linus/master airlied/drm-next v5.15-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Christian-K-nig/dma-buf-add-dma_fence_describe-and-dma_resv_describe/20211028-171805
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: hexagon-randconfig-r045-20211031 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d321548c3ce987f4f21350ba1c81fdb5d4354224)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/80ae7cf414dbdb7fa9f48a46cc1bfa25b0a4fda7
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Christian-K-nig/dma-buf-add-dma_fence_describe-and-dma_resv_describe/20211028-171805
git checkout 80ae7cf414dbdb7fa9f48a46cc1bfa25b0a4fda7
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/dma-buf/dma-fence.c:919:2: error: implicit declaration of function 'seq_printf' [-Werror,-Wimplicit-function-declaration]
seq_printf(seq, "%s %s seq %llu %ssignalled\n",
^
1 error generated.
vim +/seq_printf +919 drivers/dma-buf/dma-fence.c
909
910 /**
911 * dma_fence_describe - Dump fence describtion into seq_file
912 * @fence: the 6fence to describe
913 * @seq: the seq_file to put the textual description into
914 *
915 * Dump a textual description of the fence and it's state into the seq_file.
916 */
917 void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
918 {
> 919 seq_printf(seq, "%s %s seq %llu %ssignalled\n",
920 fence->ops->get_driver_name(fence),
921 fence->ops->get_timeline_name(fence), fence->seqno,
922 dma_fence_is_signaled(fence) ? "" : "un");
923 }
924 EXPORT_SYMBOL(dma_fence_describe);
925
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 25610 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/4] drm/etnaviv: use dma_resv_describe
2021-11-03 8:12 DMA-buf debugfs cleanups Christian König
@ 2021-11-03 8:12 ` Christian König
0 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2021-11-03 8:12 UTC (permalink / raw)
To: linux-media, etnaviv, linux-arm-msm, freedreno, virtualization,
spice-devel
Cc: sumit.semwal, l.stach, daniel
Instead of dumping the fence info manually.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
---
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 26 +++++++-------------------
1 file changed, 7 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index b018693e3877..d5314aa28ff7 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -424,36 +424,24 @@ int etnaviv_gem_wait_bo(struct etnaviv_gpu *gpu, struct drm_gem_object *obj,
}
#ifdef CONFIG_DEBUG_FS
-static void etnaviv_gem_describe_fence(struct dma_fence *fence,
- const char *type, struct seq_file *m)
-{
- seq_printf(m, "\t%9s: %s %s seq %llu\n", type,
- fence->ops->get_driver_name(fence),
- fence->ops->get_timeline_name(fence),
- fence->seqno);
-}
-
static void etnaviv_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
{
struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
struct dma_resv *robj = obj->resv;
- struct dma_resv_iter cursor;
- struct dma_fence *fence;
unsigned long off = drm_vma_node_start(&obj->vma_node);
+ int r;
seq_printf(m, "%08x: %c %2d (%2d) %08lx %p %zd\n",
etnaviv_obj->flags, is_active(etnaviv_obj) ? 'A' : 'I',
obj->name, kref_read(&obj->refcount),
off, etnaviv_obj->vaddr, obj->size);
- dma_resv_iter_begin(&cursor, robj, true);
- dma_resv_for_each_fence_unlocked(&cursor, fence) {
- if (dma_resv_iter_is_exclusive(&cursor))
- etnaviv_gem_describe_fence(fence, "Exclusive", m);
- else
- etnaviv_gem_describe_fence(fence, "Shared", m);
- }
- dma_resv_iter_end(&cursor);
+ r = dma_resv_lock(robj, NULL);
+ if (r)
+ return;
+
+ dma_resv_describe(robj, m);
+ dma_resv_unlock(robj);
}
void etnaviv_gem_describe_objects(struct etnaviv_drm_private *priv,
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-11-03 8:12 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-28 8:58 [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe Christian König
2021-10-28 8:58 ` [PATCH 2/4] drm/msm: use the new dma_resv_describe Christian König
2021-10-28 8:58 ` [PATCH 3/4] drm/etnaviv: use dma_resv_describe Christian König
2021-10-28 8:58 ` [PATCH 4/4] drm/qxl: use iterator instead of dma_resv_shared_list Christian König
2021-10-29 9:17 ` [PATCH 1/4] dma-buf: add dma_fence_describe and dma_resv_describe kernel test robot
2021-10-30 23:22 ` kernel test robot
2021-11-03 8:12 DMA-buf debugfs cleanups Christian König
2021-11-03 8:12 ` [PATCH 3/4] drm/etnaviv: use dma_resv_describe Christian König
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).