[Intel-gfx] [PATCH 2/2] drm/i915: Add debugfs interface for planes

Ben Widawsky ben at bwidawsk.net
Thu Aug 22 04:16:53 CEST 2013


Sent the unfinished commit by accident
On Wed, Aug 21, 2013 at 08:15:53PM -0700, Ben Widawsky wrote:
> This interface can enhanced over time to get more per plane information.
> I've just flip counts for now. What I'd like to do with flip counts is
> integrate them with existing flip tests. It serves a similar, but more
> course purpose to some of the CRC work being done.
  ^^
 coarse.

"It can be used to determine if something is being flipped when we
expect it to be flipped. The immediate issue I want to look into is I've
seen some funny behavior where we're getting two flips per flip queued."


> 
> Unfortunately, I've been unable to get something going on the test side
> thus far because I am inexperienced with the APIs, and don't see a way
> to map a crtc to a hardware plane (which is what we have flip counts
> for).
> 
> Chris, maybe you can do something useful with this?
> 
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_debugfs.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 236d97e..1cf0461 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1791,6 +1791,26 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
>  	return 0;
>  }
>  
> +static int i915_plane_info(struct seq_file *m, void *data)
> +{
> +	struct drm_info_node *node = m->private;
> +	struct drm_device *dev = node->minor->dev;
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +	uintptr_t plane = (uintptr_t) node->info_ent->data;
> +
> +	if (INTEL_INFO(dev)->gen < 5 && !INTEL_INFO(dev)->is_g4x)
> +		return -ENODEV;
> +
> +	if (plane >= INTEL_INFO(dev)->num_pipes)
> +		return -ENODEV;
> +
> +	DRM_ERROR("Plane was %p\n", data);
> +
> +	seq_printf(m, "flip count: %u\n", I915_READ(DSPFLIPCNT(plane)));
> +
> +	return 0;
> +}
> +
>  static int
>  i915_wedged_get(void *data, u64 *val)
>  {
> @@ -2231,6 +2251,9 @@ static struct drm_info_list i915_debugfs_list[] = {
>  	{"i915_llc", i915_llc, 0},
>  	{"i915_edp_psr_status", i915_edp_psr_status, 0},
>  	{"i915_energy_uJ", i915_energy_uJ, 0},
> +	{"i915_plane_a", i915_plane_info, 0, (void *)0},
> +	{"i915_plane_b", i915_plane_info, 0, (void *)1},
> +	{"i915_plane_c", i915_plane_info, 0, (void *)2},
>  };
>  #define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list)
>  
> -- 
> 1.8.3.4
> 

-- 
Ben Widawsky, Intel Open Source Technology Center



More information about the Intel-gfx mailing list