aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/v3d/v3d_trace.h
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2018-11-30 19:57:58 -0500
committerEric Anholt <eric@anholt.net>2018-12-03 14:26:23 -0500
commit55a9b74846ed5e6219c7d81a8e1bf96f25d8ad5e (patch)
treef844e77e4e698c6a35c67dcbbe93fae7e984de80 /drivers/gpu/drm/v3d/v3d_trace.h
parentdb176f6ba1da39ad0016c77b9775a6bb3d0ce88a (diff)
drm/v3d: Add more tracepoints for V3D GPU rendering.
The core scheduler tells us when the job is pushed to the scheduler's queue, and I had the job_run functions saying when they actually queue the job to the hardware. By adding tracepoints for the very top of the ioctls and the IRQs signaling job completion, "perf record -a -e v3d:.\* -e gpu_scheduler:.\* <job>; perf script" gets you a pretty decent timeline. Signed-off-by: Eric Anholt <eric@anholt.net> Link: https://patchwork.freedesktop.org/patch/msgid/20181201005759.28093-5-eric@anholt.net Reviewed-by: Dave Emett <david.emett@broadcom.com>
Diffstat (limited to 'drivers/gpu/drm/v3d/v3d_trace.h')
-rw-r--r--drivers/gpu/drm/v3d/v3d_trace.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/drivers/gpu/drm/v3d/v3d_trace.h b/drivers/gpu/drm/v3d/v3d_trace.h
index f54ed9cd3444..edd984afa33f 100644
--- a/drivers/gpu/drm/v3d/v3d_trace.h
+++ b/drivers/gpu/drm/v3d/v3d_trace.h
@@ -12,6 +12,28 @@
12#define TRACE_SYSTEM v3d 12#define TRACE_SYSTEM v3d
13#define TRACE_INCLUDE_FILE v3d_trace 13#define TRACE_INCLUDE_FILE v3d_trace
14 14
15TRACE_EVENT(v3d_submit_cl_ioctl,
16 TP_PROTO(struct drm_device *dev, u32 ct1qba, u32 ct1qea),
17 TP_ARGS(dev, ct1qba, ct1qea),
18
19 TP_STRUCT__entry(
20 __field(u32, dev)
21 __field(u32, ct1qba)
22 __field(u32, ct1qea)
23 ),
24
25 TP_fast_assign(
26 __entry->dev = dev->primary->index;
27 __entry->ct1qba = ct1qba;
28 __entry->ct1qea = ct1qea;
29 ),
30
31 TP_printk("dev=%u, RCL 0x%08x..0x%08x",
32 __entry->dev,
33 __entry->ct1qba,
34 __entry->ct1qea)
35);
36
15TRACE_EVENT(v3d_submit_cl, 37TRACE_EVENT(v3d_submit_cl,
16 TP_PROTO(struct drm_device *dev, bool is_render, 38 TP_PROTO(struct drm_device *dev, bool is_render,
17 uint64_t seqno, 39 uint64_t seqno,
@@ -42,6 +64,85 @@ TRACE_EVENT(v3d_submit_cl,
42 __entry->ctnqea) 64 __entry->ctnqea)
43); 65);
44 66
67TRACE_EVENT(v3d_bcl_irq,
68 TP_PROTO(struct drm_device *dev,
69 uint64_t seqno),
70 TP_ARGS(dev, seqno),
71
72 TP_STRUCT__entry(
73 __field(u32, dev)
74 __field(u64, seqno)
75 ),
76
77 TP_fast_assign(
78 __entry->dev = dev->primary->index;
79 __entry->seqno = seqno;
80 ),
81
82 TP_printk("dev=%u, seqno=%llu",
83 __entry->dev,
84 __entry->seqno)
85);
86
87TRACE_EVENT(v3d_rcl_irq,
88 TP_PROTO(struct drm_device *dev,
89 uint64_t seqno),
90 TP_ARGS(dev, seqno),
91
92 TP_STRUCT__entry(
93 __field(u32, dev)
94 __field(u64, seqno)
95 ),
96
97 TP_fast_assign(
98 __entry->dev = dev->primary->index;
99 __entry->seqno = seqno;
100 ),
101
102 TP_printk("dev=%u, seqno=%llu",
103 __entry->dev,
104 __entry->seqno)
105);
106
107TRACE_EVENT(v3d_tfu_irq,
108 TP_PROTO(struct drm_device *dev,
109 uint64_t seqno),
110 TP_ARGS(dev, seqno),
111
112 TP_STRUCT__entry(
113 __field(u32, dev)
114 __field(u64, seqno)
115 ),
116
117 TP_fast_assign(
118 __entry->dev = dev->primary->index;
119 __entry->seqno = seqno;
120 ),
121
122 TP_printk("dev=%u, seqno=%llu",
123 __entry->dev,
124 __entry->seqno)
125);
126
127TRACE_EVENT(v3d_submit_tfu_ioctl,
128 TP_PROTO(struct drm_device *dev, u32 iia),
129 TP_ARGS(dev, iia),
130
131 TP_STRUCT__entry(
132 __field(u32, dev)
133 __field(u32, iia)
134 ),
135
136 TP_fast_assign(
137 __entry->dev = dev->primary->index;
138 __entry->iia = iia;
139 ),
140
141 TP_printk("dev=%u, IIA 0x%08x",
142 __entry->dev,
143 __entry->iia)
144);
145
45TRACE_EVENT(v3d_submit_tfu, 146TRACE_EVENT(v3d_submit_tfu,
46 TP_PROTO(struct drm_device *dev, 147 TP_PROTO(struct drm_device *dev,
47 uint64_t seqno), 148 uint64_t seqno),