drm/i915: add tracepoints for flip requests & completions
authorJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 1 Jul 2010 23:48:37 +0000 (16:48 -0700)
committerDave Airlie <airlied@redhat.com>
Fri, 2 Jul 2010 04:04:14 +0000 (14:04 +1000)
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/i915/i915_trace.h
drivers/gpu/drm/i915/intel_display.c

index fab21760dd57857cef544f205c44766d08a923ff..fea97a21cc1435a67a95563e786cf41a4acc7858 100644 (file)
@@ -262,6 +262,42 @@ DEFINE_EVENT(i915_ring, i915_ring_wait_end,
            TP_ARGS(dev)
 );
 
+TRACE_EVENT(i915_flip_request,
+           TP_PROTO(int plane, struct drm_gem_object *obj),
+
+           TP_ARGS(plane, obj),
+
+           TP_STRUCT__entry(
+                   __field(int, plane)
+                   __field(struct drm_gem_object *, obj)
+                   ),
+
+           TP_fast_assign(
+                   __entry->plane = plane;
+                   __entry->obj = obj;
+                   ),
+
+           TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
+);
+
+TRACE_EVENT(i915_flip_complete,
+           TP_PROTO(int plane, struct drm_gem_object *obj),
+
+           TP_ARGS(plane, obj),
+
+           TP_STRUCT__entry(
+                   __field(int, plane)
+                   __field(struct drm_gem_object *, obj)
+                   ),
+
+           TP_fast_assign(
+                   __entry->plane = plane;
+                   __entry->obj = obj;
+                   ),
+
+           TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
+);
+
 #endif /* _I915_TRACE_H_ */
 
 /* This part must be outside protection */
index 68dcf36e2793f51fa42aeecb9b67037aa8515205..f879589bead10796c523f3ea1d79135a3105d1c9 100644 (file)
@@ -33,6 +33,7 @@
 #include "intel_drv.h"
 #include "i915_drm.h"
 #include "i915_drv.h"
+#include "i915_trace.h"
 #include "drm_dp_helper.h"
 
 #include "drm_crtc_helper.h"
@@ -4650,6 +4651,8 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
            atomic_dec_and_test(&obj_priv->pending_flip))
                DRM_WAKEUP(&dev_priv->pending_flip_queue);
        schedule_work(&work->work);
+
+       trace_i915_flip_complete(intel_crtc->plane, work->pending_flip_obj);
 }
 
 void intel_finish_page_flip(struct drm_device *dev, int pipe)
@@ -4781,6 +4784,8 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
 
        mutex_unlock(&dev->struct_mutex);
 
+       trace_i915_flip_request(intel_crtc->plane, obj);
+
        return 0;
 }