drm/i915: Add device name to display tracepoints
diff mbox series

Message ID 20191213152823.26817-1-ville.syrjala@linux.intel.com
State New
Headers show
Series
  • drm/i915: Add device name to display tracepoints
Related show

Commit Message

Ville Syrjala Dec. 13, 2019, 3:28 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Include dev_name() in the tracpoints so one can filter based on
the device.

Example:
echo 'dev=="0000:00:02.0"' > events/i915/intel_cpu_fifo_underrun/filter

TODO: maybe don't both specifying the field name always and just
      make it 'dev' (or whatever) always?
TODO: add for other tracpoints too if this is deemed good enough

Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_trace.h | 96 +++++++++++++++++++++----------
 1 file changed, 65 insertions(+), 31 deletions(-)

Comments

Chris Wilson March 7, 2020, 10:13 p.m. UTC | #1
Quoting Ville Syrjälä (2019-12-13 17:17:39)
> On Fri, Dec 13, 2019 at 07:06:01PM +0200, Ville Syrjälä wrote:
> > On Fri, Dec 13, 2019 at 03:54:33PM +0000, Chris Wilson wrote:
> > > Quoting Ville Syrjala (2019-12-13 15:28:23)
> > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > 
> > > > Include dev_name() in the tracpoints so one can filter based on
> > > > the device.
> > > > 
> > > > Example:
> > > > echo 'dev=="0000:00:02.0"' > events/i915/intel_cpu_fifo_underrun/filter
> > > > 
> > > > TODO: maybe don't both specifying the field name always and just
> > > >       make it 'dev' (or whatever) always?
> > > > TODO: add for other tracpoints too if this is deemed good enough
> > > > 
> > > > Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/i915_trace.h | 96 +++++++++++++++++++++----------
> > > >  1 file changed, 65 insertions(+), 31 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> > > > index 7ef7a1e1664c..8931b6756f44 100644
> > > > --- a/drivers/gpu/drm/i915/i915_trace.h
> > > > +++ b/drivers/gpu/drm/i915/i915_trace.h
> > > > @@ -20,11 +20,18 @@
> > > >  
> > > >  /* watermark/fifo updates */
> > > >  
> > > > +#define __dev_name_i915(field, i915) __string(field, dev_name((i915)->drm.dev))
> > > > +#define __dev_name_crtc(field, crtc) __string(field, dev_name((crtc)->base.dev->dev))
> > > > +#define __assign_dev_name_i915(field, i915) __assign_str(field, dev_name((i915)->drm.dev))
> > > > +#define __assign_dev_name_crtc(field, crtc) __assign_str(field, dev_name((crtc)->base.dev->dev))
> > > > +#define __get_dev_name(field) __get_str(field)
> > > 
> > > Storing the string is quite expensive, I thought. Can we stash the i915
> > > and stringify in the TP_printk? Or is stashing the string the secret for
> > > the dev== filter?
> > 
> > Last time I stashed a pointer in there people complained that it can
> > disappear before being consumed and cause a very theoretical oops.
> > But I guess we could stash just the pci devfn and whatnot.
> 
> I believe 'domain + bus + devfn' would amount to 4 bytes. The downside
> is that it'd be just an integer so we'd lose the dev=domain:bus:dev.fn
> syntax for the filter. Suppose I could try to implement a new filter
> type for it, but no guarantees that would get accepted. Seems a bit too
> pci specific for kernel/trace/.

Put the name string in there, it's simplest and most foolproof.
-Chris
Ville Syrjala March 9, 2020, 2:21 p.m. UTC | #2
On Sat, Mar 07, 2020 at 10:13:10PM +0000, Chris Wilson wrote:
> Quoting Ville Syrjälä (2019-12-13 17:17:39)
> > On Fri, Dec 13, 2019 at 07:06:01PM +0200, Ville Syrjälä wrote:
> > > On Fri, Dec 13, 2019 at 03:54:33PM +0000, Chris Wilson wrote:
> > > > Quoting Ville Syrjala (2019-12-13 15:28:23)
> > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > 
> > > > > Include dev_name() in the tracpoints so one can filter based on
> > > > > the device.
> > > > > 
> > > > > Example:
> > > > > echo 'dev=="0000:00:02.0"' > events/i915/intel_cpu_fifo_underrun/filter
> > > > > 
> > > > > TODO: maybe don't both specifying the field name always and just
> > > > >       make it 'dev' (or whatever) always?
> > > > > TODO: add for other tracpoints too if this is deemed good enough
> > > > > 
> > > > > Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > ---
> > > > >  drivers/gpu/drm/i915/i915_trace.h | 96 +++++++++++++++++++++----------
> > > > >  1 file changed, 65 insertions(+), 31 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> > > > > index 7ef7a1e1664c..8931b6756f44 100644
> > > > > --- a/drivers/gpu/drm/i915/i915_trace.h
> > > > > +++ b/drivers/gpu/drm/i915/i915_trace.h
> > > > > @@ -20,11 +20,18 @@
> > > > >  
> > > > >  /* watermark/fifo updates */
> > > > >  
> > > > > +#define __dev_name_i915(field, i915) __string(field, dev_name((i915)->drm.dev))
> > > > > +#define __dev_name_crtc(field, crtc) __string(field, dev_name((crtc)->base.dev->dev))
> > > > > +#define __assign_dev_name_i915(field, i915) __assign_str(field, dev_name((i915)->drm.dev))
> > > > > +#define __assign_dev_name_crtc(field, crtc) __assign_str(field, dev_name((crtc)->base.dev->dev))
> > > > > +#define __get_dev_name(field) __get_str(field)
> > > > 
> > > > Storing the string is quite expensive, I thought. Can we stash the i915
> > > > and stringify in the TP_printk? Or is stashing the string the secret for
> > > > the dev== filter?
> > > 
> > > Last time I stashed a pointer in there people complained that it can
> > > disappear before being consumed and cause a very theoretical oops.
> > > But I guess we could stash just the pci devfn and whatnot.
> > 
> > I believe 'domain + bus + devfn' would amount to 4 bytes. The downside
> > is that it'd be just an integer so we'd lose the dev=domain:bus:dev.fn
> > syntax for the filter. Suppose I could try to implement a new filter
> > type for it, but no guarantees that would get accepted. Seems a bit too
> > pci specific for kernel/trace/.
> 
> Put the name string in there, it's simplest and most foolproof.

You mean just go with the original patch?
Chris Wilson March 9, 2020, 2:24 p.m. UTC | #3
Quoting Ville Syrjälä (2020-03-09 14:21:20)
> On Sat, Mar 07, 2020 at 10:13:10PM +0000, Chris Wilson wrote:
> > Quoting Ville Syrjälä (2019-12-13 17:17:39)
> > > On Fri, Dec 13, 2019 at 07:06:01PM +0200, Ville Syrjälä wrote:
> > > > On Fri, Dec 13, 2019 at 03:54:33PM +0000, Chris Wilson wrote:
> > > > > Quoting Ville Syrjala (2019-12-13 15:28:23)
> > > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > 
> > > > > > Include dev_name() in the tracpoints so one can filter based on
> > > > > > the device.
> > > > > > 
> > > > > > Example:
> > > > > > echo 'dev=="0000:00:02.0"' > events/i915/intel_cpu_fifo_underrun/filter
> > > > > > 
> > > > > > TODO: maybe don't both specifying the field name always and just
> > > > > >       make it 'dev' (or whatever) always?
> > > > > > TODO: add for other tracpoints too if this is deemed good enough
> > > > > > 
> > > > > > Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
> > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > > ---
> > > > > >  drivers/gpu/drm/i915/i915_trace.h | 96 +++++++++++++++++++++----------
> > > > > >  1 file changed, 65 insertions(+), 31 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> > > > > > index 7ef7a1e1664c..8931b6756f44 100644
> > > > > > --- a/drivers/gpu/drm/i915/i915_trace.h
> > > > > > +++ b/drivers/gpu/drm/i915/i915_trace.h
> > > > > > @@ -20,11 +20,18 @@
> > > > > >  
> > > > > >  /* watermark/fifo updates */
> > > > > >  
> > > > > > +#define __dev_name_i915(field, i915) __string(field, dev_name((i915)->drm.dev))
> > > > > > +#define __dev_name_crtc(field, crtc) __string(field, dev_name((crtc)->base.dev->dev))
> > > > > > +#define __assign_dev_name_i915(field, i915) __assign_str(field, dev_name((i915)->drm.dev))
> > > > > > +#define __assign_dev_name_crtc(field, crtc) __assign_str(field, dev_name((crtc)->base.dev->dev))
> > > > > > +#define __get_dev_name(field) __get_str(field)
> > > > > 
> > > > > Storing the string is quite expensive, I thought. Can we stash the i915
> > > > > and stringify in the TP_printk? Or is stashing the string the secret for
> > > > > the dev== filter?
> > > > 
> > > > Last time I stashed a pointer in there people complained that it can
> > > > disappear before being consumed and cause a very theoretical oops.
> > > > But I guess we could stash just the pci devfn and whatnot.
> > > 
> > > I believe 'domain + bus + devfn' would amount to 4 bytes. The downside
> > > is that it'd be just an integer so we'd lose the dev=domain:bus:dev.fn
> > > syntax for the filter. Suppose I could try to implement a new filter
> > > type for it, but no guarantees that would get accepted. Seems a bit too
> > > pci specific for kernel/trace/.
> > 
> > Put the name string in there, it's simplest and most foolproof.
> 
> You mean just go with the original patch?

Yes. There doesn't seem to be a clear winner, so go with what works
already. For the record, we have dev=%d % i915->drm.primary->index
elsewhere.
-Chris

Patch
diff mbox series

diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index 7ef7a1e1664c..8931b6756f44 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -20,11 +20,18 @@ 
 
 /* watermark/fifo updates */
 
+#define __dev_name_i915(field, i915) __string(field, dev_name((i915)->drm.dev))
+#define __dev_name_crtc(field, crtc) __string(field, dev_name((crtc)->base.dev->dev))
+#define __assign_dev_name_i915(field, i915) __assign_str(field, dev_name((i915)->drm.dev))
+#define __assign_dev_name_crtc(field, crtc) __assign_str(field, dev_name((crtc)->base.dev->dev))
+#define __get_dev_name(field) __get_str(field)
+
 TRACE_EVENT(intel_pipe_enable,
 	    TP_PROTO(struct intel_crtc *crtc),
 	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __array(u32, frame, 3)
 			     __array(u32, scanline, 3)
 			     __field(enum pipe, pipe)
@@ -32,6 +39,7 @@  TRACE_EVENT(intel_pipe_enable,
 	    TP_fast_assign(
 			   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
 			   struct intel_crtc *it__;
+			   __assign_dev_name_crtc(dev, crtc);
 			   for_each_intel_crtc(&dev_priv->drm, it__) {
 				   __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
 				   __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
@@ -39,8 +47,8 @@  TRACE_EVENT(intel_pipe_enable,
 			   __entry->pipe = crtc->pipe;
 			   ),
 
-	    TP_printk("pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
-		      pipe_name(__entry->pipe),
+	    TP_printk("dev %s, pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe),
 		      __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
 		      __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
 		      __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
@@ -51,6 +59,7 @@  TRACE_EVENT(intel_pipe_disable,
 	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __array(u32, frame, 3)
 			     __array(u32, scanline, 3)
 			     __field(enum pipe, pipe)
@@ -59,6 +68,7 @@  TRACE_EVENT(intel_pipe_disable,
 	    TP_fast_assign(
 			   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
 			   struct intel_crtc *it__;
+			   __assign_dev_name_crtc(dev, crtc);
 			   for_each_intel_crtc(&dev_priv->drm, it__) {
 				   __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
 				   __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
@@ -66,8 +76,8 @@  TRACE_EVENT(intel_pipe_disable,
 			   __entry->pipe = crtc->pipe;
 			   ),
 
-	    TP_printk("pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
-		      pipe_name(__entry->pipe),
+	    TP_printk("dev %s, pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe),
 		      __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
 		      __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
 		      __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
@@ -78,6 +88,7 @@  TRACE_EVENT(intel_pipe_crc,
 	    TP_ARGS(crtc, crcs),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -85,14 +96,15 @@  TRACE_EVENT(intel_pipe_crc,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
 			   memcpy(__entry->crcs, crcs, sizeof(__entry->crcs));
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x",
-		      pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
 		      __entry->crcs[0], __entry->crcs[1], __entry->crcs[2],
 		      __entry->crcs[3], __entry->crcs[4])
 );
@@ -102,20 +114,22 @@  TRACE_EVENT(intel_cpu_fifo_underrun,
 	    TP_ARGS(dev_priv, pipe),
 
 	    TP_STRUCT__entry(
+			     __dev_name_i915(dev, dev_priv)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
 			     ),
 
 	    TP_fast_assign(
-			    struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
+			   struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
+			   __assign_dev_name_i915(dev, dev_priv);
 			   __entry->pipe = pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u",
-		      pipe_name(__entry->pipe),
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe),
 		      __entry->frame, __entry->scanline)
 );
 
@@ -124,6 +138,7 @@  TRACE_EVENT(intel_pch_fifo_underrun,
 	    TP_ARGS(dev_priv, pch_transcoder),
 
 	    TP_STRUCT__entry(
+			     __dev_name_i915(dev, dev_priv)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -132,13 +147,14 @@  TRACE_EVENT(intel_pch_fifo_underrun,
 	    TP_fast_assign(
 			   enum pipe pipe = pch_transcoder;
 			   struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
+			   __assign_dev_name_i915(dev, dev_priv);
 			   __entry->pipe = pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
 			   ),
 
-	    TP_printk("pch transcoder %c, frame=%u, scanline=%u",
-		      pipe_name(__entry->pipe),
+	    TP_printk("dev %s, pch transcoder %c, frame=%u, scanline=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe),
 		      __entry->frame, __entry->scanline)
 );
 
@@ -147,6 +163,7 @@  TRACE_EVENT(intel_memory_cxsr,
 	    TP_ARGS(dev_priv, old, new),
 
 	    TP_STRUCT__entry(
+			     __dev_name_i915(dev, dev_priv)
 			     __array(u32, frame, 3)
 			     __array(u32, scanline, 3)
 			     __field(bool, old)
@@ -155,6 +172,7 @@  TRACE_EVENT(intel_memory_cxsr,
 
 	    TP_fast_assign(
 			   struct intel_crtc *crtc;
+			   __assign_dev_name_i915(dev, dev_priv);
 			   for_each_intel_crtc(&dev_priv->drm, crtc) {
 				   __entry->frame[crtc->pipe] = intel_crtc_get_vblank_counter(crtc);
 				   __entry->scanline[crtc->pipe] = intel_get_crtc_scanline(crtc);
@@ -163,8 +181,8 @@  TRACE_EVENT(intel_memory_cxsr,
 			   __entry->new = new;
 			   ),
 
-	    TP_printk("%s->%s, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
-		      onoff(__entry->old), onoff(__entry->new),
+	    TP_printk("dev %s, %s->%s, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
+		      __get_dev_name(dev), onoff(__entry->old), onoff(__entry->new),
 		      __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
 		      __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
 		      __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
@@ -175,6 +193,7 @@  TRACE_EVENT(g4x_wm,
 	    TP_ARGS(crtc, wm),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -193,6 +212,7 @@  TRACE_EVENT(g4x_wm,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
@@ -210,8 +230,8 @@  TRACE_EVENT(g4x_wm,
 			   __entry->fbc = wm->fbc_en;
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u, wm %d/%d/%d, sr %s/%d/%d/%d, hpll %s/%d/%d/%d, fbc %s",
-		      pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, wm %d/%d/%d, sr %s/%d/%d/%d, hpll %s/%d/%d/%d, fbc %s",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
 		      __entry->primary, __entry->sprite, __entry->cursor,
 		      yesno(__entry->cxsr), __entry->sr_plane, __entry->sr_cursor, __entry->sr_fbc,
 		      yesno(__entry->hpll), __entry->hpll_plane, __entry->hpll_cursor, __entry->hpll_fbc,
@@ -223,6 +243,7 @@  TRACE_EVENT(vlv_wm,
 	    TP_ARGS(crtc, wm),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -237,6 +258,7 @@  TRACE_EVENT(vlv_wm,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
@@ -250,8 +272,8 @@  TRACE_EVENT(vlv_wm,
 			   __entry->sr_cursor = wm->sr.cursor;
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u, level=%d, cxsr=%d, wm %d/%d/%d/%d, sr %d/%d",
-		      pipe_name(__entry->pipe), __entry->frame,
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, level=%d, cxsr=%d, wm %d/%d/%d/%d, sr %d/%d",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame,
 		      __entry->scanline, __entry->level, __entry->cxsr,
 		      __entry->primary, __entry->sprite0, __entry->sprite1, __entry->cursor,
 		      __entry->sr_plane, __entry->sr_cursor)
@@ -262,6 +284,7 @@  TRACE_EVENT(vlv_fifo_size,
 	    TP_ARGS(crtc, sprite0_start, sprite1_start, fifo_size),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -271,6 +294,7 @@  TRACE_EVENT(vlv_fifo_size,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
@@ -279,8 +303,8 @@  TRACE_EVENT(vlv_fifo_size,
 			   __entry->fifo_size = fifo_size;
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u, %d/%d/%d",
-		      pipe_name(__entry->pipe), __entry->frame,
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, %d/%d/%d",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame,
 		      __entry->scanline, __entry->sprite0_start,
 		      __entry->sprite1_start, __entry->fifo_size)
 );
@@ -292,6 +316,7 @@  TRACE_EVENT(intel_update_plane,
 	    TP_ARGS(plane, crtc),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -301,6 +326,7 @@  TRACE_EVENT(intel_update_plane,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __assign_str(name, plane->name);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
@@ -309,8 +335,8 @@  TRACE_EVENT(intel_update_plane,
 			   memcpy(__entry->dst, &plane->state->dst, sizeof(__entry->dst));
 			   ),
 
-	    TP_printk("pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
-		      pipe_name(__entry->pipe), __get_str(name),
+	    TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __get_str(name),
 		      __entry->frame, __entry->scanline,
 		      DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src),
 		      DRM_RECT_ARG((const struct drm_rect *)__entry->dst))
@@ -321,6 +347,7 @@  TRACE_EVENT(intel_disable_plane,
 	    TP_ARGS(plane, crtc),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -328,14 +355,15 @@  TRACE_EVENT(intel_disable_plane,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __assign_str(name, plane->name);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
 			   ),
 
-	    TP_printk("pipe %c, plane %s, frame=%u, scanline=%u",
-		      pipe_name(__entry->pipe), __get_str(name),
+	    TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __get_str(name),
 		      __entry->frame, __entry->scanline)
 );
 
@@ -346,6 +374,7 @@  TRACE_EVENT(i915_pipe_update_start,
 	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -354,6 +383,7 @@  TRACE_EVENT(i915_pipe_update_start,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
@@ -361,9 +391,9 @@  TRACE_EVENT(i915_pipe_update_start,
 			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
-		      pipe_name(__entry->pipe), __entry->frame,
-		       __entry->scanline, __entry->min, __entry->max)
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame,
+		      __entry->scanline, __entry->min, __entry->max)
 );
 
 TRACE_EVENT(i915_pipe_update_vblank_evaded,
@@ -371,6 +401,7 @@  TRACE_EVENT(i915_pipe_update_vblank_evaded,
 	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
@@ -379,6 +410,7 @@  TRACE_EVENT(i915_pipe_update_vblank_evaded,
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = crtc->debug.start_vbl_count;
 			   __entry->scanline = crtc->debug.scanline_start;
@@ -386,9 +418,9 @@  TRACE_EVENT(i915_pipe_update_vblank_evaded,
 			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
-		      pipe_name(__entry->pipe), __entry->frame,
-		       __entry->scanline, __entry->min, __entry->max)
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame,
+		      __entry->scanline, __entry->min, __entry->max)
 );
 
 TRACE_EVENT(i915_pipe_update_end,
@@ -396,19 +428,21 @@  TRACE_EVENT(i915_pipe_update_end,
 	    TP_ARGS(crtc, frame, scanline_end),
 
 	    TP_STRUCT__entry(
+			     __dev_name_crtc(dev, crtc)
 			     __field(enum pipe, pipe)
 			     __field(u32, frame)
 			     __field(u32, scanline)
 			     ),
 
 	    TP_fast_assign(
+			   __assign_dev_name_crtc(dev, crtc);
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = frame;
 			   __entry->scanline = scanline_end;
 			   ),
 
-	    TP_printk("pipe %c, frame=%u, scanline=%u",
-		      pipe_name(__entry->pipe), __entry->frame,
+	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
+		      __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame,
 		      __entry->scanline)
 );