diff options
| author | Eric Anholt <eric@anholt.net> | 2018-11-30 19:57:58 -0500 |
|---|---|---|
| committer | Eric Anholt <eric@anholt.net> | 2018-12-03 14:26:23 -0500 |
| commit | 55a9b74846ed5e6219c7d81a8e1bf96f25d8ad5e (patch) | |
| tree | f844e77e4e698c6a35c67dcbbe93fae7e984de80 /drivers/gpu/drm/v3d/v3d_trace.h | |
| parent | db176f6ba1da39ad0016c77b9775a6bb3d0ce88a (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.h | 101 |
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 | ||
| 15 | TRACE_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 | |||
| 15 | TRACE_EVENT(v3d_submit_cl, | 37 | TRACE_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 | ||
| 67 | TRACE_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 | |||
| 87 | TRACE_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 | |||
| 107 | TRACE_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 | |||
| 127 | TRACE_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 | |||
| 45 | TRACE_EVENT(v3d_submit_tfu, | 146 | TRACE_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), |
