[PATCH 2/2] [v2] drm/i915: Add debugfs interface for planes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
coarse purpose to some of the CRC work being done. 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?

v2: Use the right patch, with the right commit msg.

Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Signed-off-by: Ben Widawsky <ben@xxxxxxxxxxxx>
---
 drivers/gpu/drm/i915/i915_debugfs.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 236d97e..27aee95 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1791,6 +1791,24 @@ 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;
+
+	seq_printf(m, "flip count: %u\n", I915_READ(DSPFLIPCNT(plane)));
+
+	return 0;
+}
+
 static int
 i915_wedged_get(void *data, u64 *val)
 {
@@ -2231,6 +2249,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

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux