From: Brad Volkin <bradley.d.vol...@intel.com>

To better account for the potentially large memory consumption
of the batch pool.

Issue: VIZ-4719
Signed-off-by: Brad Volkin <bradley.d.vol...@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c | 45 +++++++++++++++++++++++++++++--------
 1 file changed, 36 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index efdd59a..60d5ceb 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -360,6 +360,38 @@ static int per_file_stats(int id, void *ptr, void *data)
        return 0;
 }
 
+#define print_file_stats(m, name, stats) \
+       seq_printf(m, "%s: %u objects, %zu bytes (%zu active, %zu inactive, %zu 
global, %zu shared, %zu unbound)\n", \
+                  name, \
+                  stats.count, \
+                  stats.total, \
+                  stats.active, \
+                  stats.inactive, \
+                  stats.global, \
+                  stats.shared, \
+                  stats.unbound)
+
+static void print_batch_pool_stats(struct seq_file *m,
+                                  struct drm_i915_private *dev_priv)
+{
+       struct drm_i915_gem_object *obj;
+       struct file_stats stats;
+
+       memset(&stats, 0, sizeof(stats));
+
+       list_for_each_entry(obj,
+                           &dev_priv->mm.batch_pool.active_list,
+                           batch_pool_list)
+               per_file_stats(0, obj, &stats);
+
+       list_for_each_entry(obj,
+                           &dev_priv->mm.batch_pool.inactive_list,
+                           batch_pool_list)
+               per_file_stats(0, obj, &stats);
+
+       print_file_stats(m, "batch pool", stats);
+}
+
 #define count_vmas(list, member) do { \
        list_for_each_entry(vma, list, member) { \
                size += i915_gem_obj_ggtt_size(vma->obj); \
@@ -442,6 +474,9 @@ static int i915_gem_object_info(struct seq_file *m, void* 
data)
                   dev_priv->gtt.mappable_end - dev_priv->gtt.base.start);
 
        seq_putc(m, '\n');
+       print_batch_pool_stats(m, dev_priv);
+
+       seq_putc(m, '\n');
        list_for_each_entry_reverse(file, &dev->filelist, lhead) {
                struct file_stats stats;
                struct task_struct *task;
@@ -459,15 +494,7 @@ static int i915_gem_object_info(struct seq_file *m, void* 
data)
                 */
                rcu_read_lock();
                task = pid_task(file->pid, PIDTYPE_PID);
-               seq_printf(m, "%s: %u objects, %zu bytes (%zu active, %zu 
inactive, %zu global, %zu shared, %zu unbound)\n",
-                          task ? task->comm : "<unknown>",
-                          stats.count,
-                          stats.total,
-                          stats.active,
-                          stats.inactive,
-                          stats.global,
-                          stats.shared,
-                          stats.unbound);
+               print_file_stats(m, task ? task->comm : "<unknown>", stats);
                rcu_read_unlock();
        }
 
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to