[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