[PATCH 6/8] stats

Tvrtko Ursulin tursulin at ursulin.net
Thu Oct 13 06:44:51 UTC 2016


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c     | 4 ++++
 drivers/gpu/drm/i915/i915_drv.h         | 2 ++
 drivers/gpu/drm/i915/i915_gem.c         | 9 +++++++++
 drivers/gpu/drm/i915/i915_gem_userptr.c | 2 ++
 4 files changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 2e312e0f2670..0c1378be0b2e 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -391,6 +391,10 @@ static int i915_gem_object_info(struct seq_file *m, void *data)
 	if (ret)
 		return ret;
 
+	seq_printf(m, "%lu nents, %lu orig_nents, %lu wasted bytes\n",
+		   i915_st_nents, i915_st_nents_orig,
+		   (i915_st_nents_orig - i915_st_nents) * sizeof(struct scatterlist));
+
 	seq_printf(m, "%u objects, %zu bytes\n",
 		   dev_priv->mm.object_count,
 		   dev_priv->mm.object_memory);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 641a1dbc87b8..492b45b1f82a 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -4033,4 +4033,6 @@ void i915_sg_abort(struct i915_sg_create_state *state);
 #define i915_sg_for_each_page(state) \
 	for( ; (state)->idx < (state)->page_count; )
 
+extern unsigned long i915_st_nents, i915_st_nents_orig;
+
 #endif
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 05dc2af1a89e..e152d105786b 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2165,6 +2165,8 @@ i915_gem_object_put_pages_gtt(struct drm_i915_gem_object *obj)
 	}
 	obj->dirty = 0;
 
+	i915_st_nents -= obj->pages->nents;
+	i915_st_nents_orig -= obj->pages->orig_nents;
 	sg_free_table(obj->pages);
 	kfree(obj->pages);
 }
@@ -2216,6 +2218,8 @@ static unsigned long swiotlb_max_size(void)
 #endif
 }
 
+unsigned long i915_st_nents, i915_st_nents_orig;
+
 /**
  * i915_sg_create - creates the state object for sg list building
  * @page_count: number of pages the caller intends to add to the list
@@ -2347,6 +2351,9 @@ struct sg_table *i915_sg_complete(struct i915_sg_create_state *state)
 
 	kfree(state);
 
+	i915_st_nents += st->nents;
+	i915_st_nents_orig += st->orig_nents;
+
 	return st;
 }
 
@@ -3037,6 +3044,8 @@ int i915_vma_unbind(struct i915_vma *vma)
 	if (vma->pages != obj->pages) {
 		GEM_BUG_ON(!vma->pages);
 		sg_free_table(vma->pages);
+		i915_st_nents -= vma->pages->nents;
+		i915_st_nents_orig -= vma->pages->orig_nents;
 		kfree(vma->pages);
 	}
 	vma->pages = NULL;
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
index ced19610d911..a7d1d0ee2004 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -659,6 +659,8 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj)
 	}
 	obj->dirty = 0;
 
+	i915_st_nents -= obj->pages->nents;
+	i915_st_nents_orig -= obj->pages->orig_nents;
 	sg_free_table(obj->pages);
 	kfree(obj->pages);
 }
-- 
2.7.4



More information about the Intel-gfx-trybot mailing list