From: Sudeep Dutt <sudeep.dutt@xxxxxxxxx> Signed-off-by: Sudeep Dutt <sudeep.dutt@xxxxxxxxx> --- drivers/gpu/drm/i915/gem/i915_gem_region.c | 16 ++++++++++++++-- drivers/gpu/drm/i915/i915_debugfs.c | 3 +++ drivers/gpu/drm/i915/i915_drv.h | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_region.c b/drivers/gpu/drm/i915/gem/i915_gem_region.c index ed108dbcb34e..4fab9f6b4bee 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_region.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_region.c @@ -15,6 +15,7 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj, { struct drm_i915_private *i915 = to_i915(obj->base.dev); struct drm_i915_gem_object *dst, *src; + unsigned long start, diff, msec; int err; GEM_BUG_ON(obj->swapto); @@ -24,6 +25,7 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj, GEM_BUG_ON(!i915->params.enable_eviction); assert_object_held(obj); + start = jiffies; /* create a shadow object on smem region */ dst = i915_gem_object_create_shmem(i915, obj->base.size); @@ -64,8 +66,12 @@ i915_gem_object_swapout_pages(struct drm_i915_gem_object *obj, else i915_gem_object_put(dst); - if (!err) + if (!err) { + diff = jiffies - start; + msec = diff * 1000 / HZ; + atomic_long_add(msec, &i915->time_swap_out_ms); atomic_long_add(sizes, &i915->num_bytes_swapped_out); + } return err; } @@ -76,6 +82,7 @@ i915_gem_object_swapin_pages(struct drm_i915_gem_object *obj, { struct drm_i915_private *i915 = to_i915(obj->base.dev); struct drm_i915_gem_object *dst, *src; + unsigned long start, diff, msec; int err; GEM_BUG_ON(!obj->swapto); @@ -85,6 +92,7 @@ i915_gem_object_swapin_pages(struct drm_i915_gem_object *obj, GEM_BUG_ON(!i915->params.enable_eviction); assert_object_held(obj); + start = jiffies; src = obj->swapto; @@ -121,8 +129,12 @@ i915_gem_object_swapin_pages(struct drm_i915_gem_object *obj, i915_gem_object_put(src); } - if (!err) + if (!err) { + diff = jiffies - start; + msec = diff * 1000 / HZ; + atomic_long_add(msec, &i915->time_swap_in_ms); atomic_long_add(sizes, &i915->num_bytes_swapped_in); + } return err; } diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 1b7e9b6ab660..2bf51dd9de7c 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -375,6 +375,9 @@ static int i915_gem_object_info(struct seq_file *m, void *data) seq_printf(m, "num_bytes_swapped_out %ld num_bytes_swapped_in %ld\n", atomic_long_read(&i915->num_bytes_swapped_out), atomic_long_read(&i915->num_bytes_swapped_in)); + seq_printf(m, "time_swap_out_msec %ld time_swap_in_msec %ld\n", + atomic_long_read(&i915->time_swap_out_ms), + atomic_long_read(&i915->time_swap_in_ms)); seq_putc(m, '\n'); print_context_stats(m, i915); diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 7b1e95d494e6..10823abab224 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1217,6 +1217,8 @@ struct drm_i915_private { atomic_long_t num_bytes_swapped_out; atomic_long_t num_bytes_swapped_in; + atomic_long_t time_swap_out_ms; + atomic_long_t time_swap_in_ms; }; static inline struct drm_i915_private *to_i915(const struct drm_device *dev) -- 2.26.2 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel