Using the drm_printer interface will allow us to use these functions
when generating the coredump.

Signed-off-by: Pierre-Eric Pelloux-Prayer <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c |  5 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c     |  5 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c  | 38 +++++++++----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h  |  5 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c      | 42 ++++++++++-----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h      |  5 +--
 6 files changed, 52 insertions(+), 48 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
index 8e626f50b362..15ccb0eeb78e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
@@ -1773,12 +1773,15 @@ static int amdgpu_debugfs_vm_info_show(struct seq_file 
*m, void *unused)
        struct amdgpu_device *adev = m->private;
        struct drm_device *dev = adev_to_drm(adev);
        struct drm_file *file;
+       struct drm_printer p;
        int r;
 
        r = mutex_lock_interruptible(&dev->filelist_mutex);
        if (r)
                return r;
 
+       p = drm_seq_file_printer(m);
+
        list_for_each_entry(file, &dev->filelist, lhead) {
                struct amdgpu_fpriv *fpriv = file->driver_priv;
                struct amdgpu_vm *vm = &fpriv->vm;
@@ -1793,7 +1796,7 @@ static int amdgpu_debugfs_vm_info_show(struct seq_file 
*m, void *unused)
                r = amdgpu_bo_reserve(vm->root.bo, true);
                if (r)
                        break;
-               amdgpu_debugfs_vm_bo_info(vm, m);
+               amdgpu_debugfs_vm_bo_info(vm, &p);
                amdgpu_bo_unreserve(vm->root.bo);
        }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 2c68118fe9fd..35457f44a089 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -1141,12 +1141,15 @@ static int amdgpu_debugfs_gem_info_show(struct seq_file 
*m, void *unused)
        struct amdgpu_device *adev = m->private;
        struct drm_device *dev = adev_to_drm(adev);
        struct drm_file *file;
+       struct drm_printer p;
        int r;
 
        r = mutex_lock_interruptible(&dev->filelist_mutex);
        if (r)
                return r;
 
+       p = drm_seq_file_printer(m);
+
        list_for_each_entry(file, &dev->filelist, lhead) {
                struct task_struct *task;
                struct drm_gem_object *gobj;
@@ -1170,7 +1173,7 @@ static int amdgpu_debugfs_gem_info_show(struct seq_file 
*m, void *unused)
                idr_for_each_entry(&file->object_idr, gobj, id) {
                        struct amdgpu_bo *bo = gem_to_amdgpu_bo(gobj);
 
-                       amdgpu_bo_print_info(id, bo, m);
+                       amdgpu_bo_print_info(id, bo, &p);
                }
                spin_unlock(&file->table_lock);
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 3339703f40b7..568c2cd95703 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -1553,27 +1553,26 @@ uint32_t amdgpu_bo_get_preferred_domain(struct 
amdgpu_device *adev,
        return domain;
 }
 
-#if defined(CONFIG_DEBUG_FS)
-#define amdgpu_bo_print_flag(m, bo, flag)                      \
+#define amdgpu_bo_print_flag(p, bo, flag)                      \
        do {                                                    \
                if (bo->flags & (AMDGPU_GEM_CREATE_ ## flag)) { \
-                       seq_printf((m), " " #flag);             \
+                       drm_printf((p), " " #flag);             \
                }                                               \
        } while (0)
 
 /**
- * amdgpu_bo_print_info - print BO info in debugfs file
+ * amdgpu_bo_print_info - print BO info in printer
  *
  * @id: Index or Id of the BO
  * @bo: Requested BO for printing info
- * @m: debugfs file
+ * @p: drm_printer to use
  *
  * Print BO information in debugfs file
  *
  * Returns:
  * Size of the BO in bytes.
  */
-u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct seq_file *m)
+u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct drm_printer *p)
 {
        struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
        struct dma_buf_attachment *attachment;
@@ -1623,31 +1622,30 @@ u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, 
struct seq_file *m)
        }
 
        size = amdgpu_bo_size(bo);
-       seq_printf(m, "\t\t0x%08x: %12lld byte %s",
-                       id, size, placement);
+       drm_printf(p, "\t\t0x%08x: %12lld byte %s",
+                  id, size, placement);
 
        pin_count = READ_ONCE(bo->tbo.pin_count);
        if (pin_count)
-               seq_printf(m, " pin count %d", pin_count);
+               drm_printf(p, " pin count %d", pin_count);
 
        dma_buf = READ_ONCE(bo->tbo.base.dma_buf);
        attachment = READ_ONCE(bo->tbo.base.import_attach);
 
        if (attachment)
-               seq_printf(m, " imported from ino:%lu", 
file_inode(dma_buf->file)->i_ino);
+               drm_printf(p, " imported from ino:%lu", 
file_inode(dma_buf->file)->i_ino);
        else if (dma_buf)
-               seq_printf(m, " exported as ino:%lu", 
file_inode(dma_buf->file)->i_ino);
+               drm_printf(p, " exported as ino:%lu", 
file_inode(dma_buf->file)->i_ino);
 
-       amdgpu_bo_print_flag(m, bo, CPU_ACCESS_REQUIRED);
-       amdgpu_bo_print_flag(m, bo, NO_CPU_ACCESS);
-       amdgpu_bo_print_flag(m, bo, CPU_GTT_USWC);
-       amdgpu_bo_print_flag(m, bo, VRAM_CLEARED);
-       amdgpu_bo_print_flag(m, bo, VRAM_CONTIGUOUS);
-       amdgpu_bo_print_flag(m, bo, VM_ALWAYS_VALID);
-       amdgpu_bo_print_flag(m, bo, EXPLICIT_SYNC);
+       amdgpu_bo_print_flag(p, bo, CPU_ACCESS_REQUIRED);
+       amdgpu_bo_print_flag(p, bo, NO_CPU_ACCESS);
+       amdgpu_bo_print_flag(p, bo, CPU_GTT_USWC);
+       amdgpu_bo_print_flag(p, bo, VRAM_CLEARED);
+       amdgpu_bo_print_flag(p, bo, VRAM_CONTIGUOUS);
+       amdgpu_bo_print_flag(p, bo, VM_ALWAYS_VALID);
+       amdgpu_bo_print_flag(p, bo, EXPLICIT_SYNC);
 
-       seq_puts(m, "\n");
+       drm_puts(p, "\n");
 
        return size;
 }
-#endif
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
index 375448627f7b..f411a8c3199c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
@@ -139,6 +139,8 @@ struct amdgpu_bo_vm {
        struct amdgpu_vm_bo_base        entries[];
 };
 
+struct drm_printer;
+
 static inline struct amdgpu_bo *ttm_to_amdgpu_bo(struct ttm_buffer_object *tbo)
 {
        return container_of(tbo, struct amdgpu_bo, tbo);
@@ -345,8 +347,9 @@ void amdgpu_sa_bo_free(struct drm_suballoc **sa_bo,
 #if defined(CONFIG_DEBUG_FS)
 void amdgpu_sa_bo_dump_debug_info(struct amdgpu_sa_manager *sa_manager,
                                         struct seq_file *m);
-u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct seq_file *m);
 #endif
+u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct drm_printer *p);
+
 void amdgpu_debugfs_sa_init(struct amdgpu_device *adev);
 
 bool amdgpu_bo_support_uswc(u64 bo_flags);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 3911c78f8282..327ce9e883cc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2990,16 +2990,15 @@ bool amdgpu_vm_handle_fault(struct amdgpu_device *adev, 
u32 pasid,
        return false;
 }
 
-#if defined(CONFIG_DEBUG_FS)
 /**
  * amdgpu_debugfs_vm_bo_info  - print BO info for the VM
  *
  * @vm: Requested VM for printing BO info
- * @m: debugfs file
+ * @p: the drm_printer to use
  *
  * Print BO information in debugfs file for the VM
  */
-void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m)
+void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct drm_printer *p)
 {
        struct amdgpu_bo_va *bo_va, *tmp;
        u64 total_idle = 0;
@@ -3017,74 +3016,73 @@ void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, 
struct seq_file *m)
        unsigned int id = 0;
 
        spin_lock(&vm->status_lock);
-       seq_puts(m, "\tIdle BOs:\n");
+       drm_puts(p, "\tIdle BOs:\n");
        list_for_each_entry_safe(bo_va, tmp, &vm->idle, base.vm_status) {
                if (!bo_va->base.bo)
                        continue;
-               total_idle += amdgpu_bo_print_info(id++, bo_va->base.bo, m);
+               total_idle += amdgpu_bo_print_info(id++, bo_va->base.bo, p);
        }
        total_idle_objs = id;
        id = 0;
 
-       seq_puts(m, "\tEvicted BOs:\n");
+       drm_puts(p, "\tEvicted BOs:\n");
        list_for_each_entry_safe(bo_va, tmp, &vm->evicted, base.vm_status) {
                if (!bo_va->base.bo)
                        continue;
-               total_evicted += amdgpu_bo_print_info(id++, bo_va->base.bo, m);
+               total_evicted += amdgpu_bo_print_info(id++, bo_va->base.bo, p);
        }
        total_evicted_objs = id;
        id = 0;
 
-       seq_puts(m, "\tRelocated BOs:\n");
+       drm_puts(p, "\tRelocated BOs:\n");
        list_for_each_entry_safe(bo_va, tmp, &vm->relocated, base.vm_status) {
                if (!bo_va->base.bo)
                        continue;
-               total_relocated += amdgpu_bo_print_info(id++, bo_va->base.bo, 
m);
+               total_relocated += amdgpu_bo_print_info(id++, bo_va->base.bo, 
p);
        }
        total_relocated_objs = id;
        id = 0;
 
-       seq_puts(m, "\tMoved BOs:\n");
+       drm_puts(p, "\tMoved BOs:\n");
        list_for_each_entry_safe(bo_va, tmp, &vm->moved, base.vm_status) {
                if (!bo_va->base.bo)
                        continue;
-               total_moved += amdgpu_bo_print_info(id++, bo_va->base.bo, m);
+               total_moved += amdgpu_bo_print_info(id++, bo_va->base.bo, p);
        }
        total_moved_objs = id;
        id = 0;
 
-       seq_puts(m, "\tInvalidated BOs:\n");
+       drm_puts(p, "\tInvalidated BOs:\n");
        list_for_each_entry_safe(bo_va, tmp, &vm->invalidated, base.vm_status) {
                if (!bo_va->base.bo)
                        continue;
-               total_invalidated += amdgpu_bo_print_info(id++, bo_va->base.bo, 
m);
+               total_invalidated += amdgpu_bo_print_info(id++, bo_va->base.bo, 
p);
        }
        total_invalidated_objs = id;
        id = 0;
 
-       seq_puts(m, "\tDone BOs:\n");
+       drm_puts(p, "\tDone BOs:\n");
        list_for_each_entry_safe(bo_va, tmp, &vm->done, base.vm_status) {
                if (!bo_va->base.bo)
                        continue;
-               total_done += amdgpu_bo_print_info(id++, bo_va->base.bo, m);
+               total_done += amdgpu_bo_print_info(id++, bo_va->base.bo, p);
        }
        spin_unlock(&vm->status_lock);
        total_done_objs = id;
 
-       seq_printf(m, "\tTotal idle size:        %12lld\tobjs:\t%d\n", 
total_idle,
+       drm_printf(p, "\tTotal idle size:        %12lld\tobjs:\t%d\n", 
total_idle,
                   total_idle_objs);
-       seq_printf(m, "\tTotal evicted size:     %12lld\tobjs:\t%d\n", 
total_evicted,
+       drm_printf(p, "\tTotal evicted size:     %12lld\tobjs:\t%d\n", 
total_evicted,
                   total_evicted_objs);
-       seq_printf(m, "\tTotal relocated size:   %12lld\tobjs:\t%d\n", 
total_relocated,
+       drm_printf(p, "\tTotal relocated size:   %12lld\tobjs:\t%d\n", 
total_relocated,
                   total_relocated_objs);
-       seq_printf(m, "\tTotal moved size:       %12lld\tobjs:\t%d\n", 
total_moved,
+       drm_printf(p, "\tTotal moved size:       %12lld\tobjs:\t%d\n", 
total_moved,
                   total_moved_objs);
-       seq_printf(m, "\tTotal invalidated size: %12lld\tobjs:\t%d\n", 
total_invalidated,
+       drm_printf(p, "\tTotal invalidated size: %12lld\tobjs:\t%d\n", 
total_invalidated,
                   total_invalidated_objs);
-       seq_printf(m, "\tTotal done size:        %12lld\tobjs:\t%d\n", 
total_done,
+       drm_printf(p, "\tTotal done size:        %12lld\tobjs:\t%d\n", 
total_done,
                   total_done_objs);
 }
-#endif
 
 /**
  * amdgpu_vm_update_fault_cache - update cached fault into.
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index f3ad687125ad..0bf9ea018eb7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -43,6 +43,7 @@ struct amdgpu_bo_va;
 struct amdgpu_job;
 struct amdgpu_bo_list_entry;
 struct amdgpu_bo_vm;
+struct drm_printer;
 
 /*
  * GPUVM handling
@@ -598,9 +599,7 @@ void amdgpu_vm_pt_free_work(struct work_struct *work);
 void amdgpu_vm_pt_free_list(struct amdgpu_device *adev,
                            struct amdgpu_vm_update_params *params);
 
-#if defined(CONFIG_DEBUG_FS)
-void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m);
-#endif
+void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct drm_printer *p);
 
 int amdgpu_vm_pt_map_tables(struct amdgpu_device *adev, struct amdgpu_vm *vm);
 
-- 
2.43.0

Reply via email to