[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