i915_trace.h revision 1.13 1 1.4 riastrad /* $NetBSD: i915_trace.h,v 1.13 2018/08/27 15:09:35 riastradh Exp $ */
2 1.2 riastrad
3 1.2 riastrad /*-
4 1.2 riastrad * Copyright (c) 2013 The NetBSD Foundation, Inc.
5 1.2 riastrad * All rights reserved.
6 1.2 riastrad *
7 1.2 riastrad * This code is derived from software contributed to The NetBSD Foundation
8 1.2 riastrad * by Taylor R. Campbell.
9 1.2 riastrad *
10 1.2 riastrad * Redistribution and use in source and binary forms, with or without
11 1.2 riastrad * modification, are permitted provided that the following conditions
12 1.2 riastrad * are met:
13 1.2 riastrad * 1. Redistributions of source code must retain the above copyright
14 1.2 riastrad * notice, this list of conditions and the following disclaimer.
15 1.2 riastrad * 2. Redistributions in binary form must reproduce the above copyright
16 1.2 riastrad * notice, this list of conditions and the following disclaimer in the
17 1.2 riastrad * documentation and/or other materials provided with the distribution.
18 1.2 riastrad *
19 1.2 riastrad * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 1.2 riastrad * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 1.2 riastrad * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 1.2 riastrad * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 1.2 riastrad * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 1.2 riastrad * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 1.2 riastrad * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 1.2 riastrad * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 1.2 riastrad * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 1.2 riastrad * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 1.2 riastrad * POSSIBILITY OF SUCH DAMAGE.
30 1.2 riastrad */
31 1.2 riastrad
32 1.2 riastrad #ifndef _I915_TRACE_H_
33 1.2 riastrad #define _I915_TRACE_H_
34 1.2 riastrad
35 1.2 riastrad #include <sys/types.h>
36 1.13 riastrad #include <sys/sdt.h>
37 1.2 riastrad
38 1.2 riastrad #include "intel_drv.h"
39 1.2 riastrad
40 1.13 riastrad /* Must come last. */
41 1.13 riastrad #include <drm/drm_trace_netbsd.h>
42 1.11 riastrad
43 1.13 riastrad DEFINE_TRACE2(i915,, flip__request,
44 1.13 riastrad "enum plane"/*plane*/, "struct drm_i915_gem_object *"/*obj*/);
45 1.11 riastrad static inline void
46 1.13 riastrad trace_i915_flip_request(enum plane plane, struct drm_i915_gem_object *obj)
47 1.2 riastrad {
48 1.13 riastrad TRACE2(i915,, flip__request, plane, obj);
49 1.2 riastrad }
50 1.2 riastrad
51 1.13 riastrad DEFINE_TRACE2(i915,, flip__complete,
52 1.13 riastrad "enum plane"/*plane*/, "struct drm_i915_gem_object *"/*obj*/);
53 1.2 riastrad static inline void
54 1.13 riastrad trace_i915_flip_complete(enum plane plane, struct drm_i915_gem_object *obj)
55 1.2 riastrad {
56 1.13 riastrad TRACE2(i915,, flip__complete, plane, obj);
57 1.2 riastrad }
58 1.2 riastrad
59 1.13 riastrad DEFINE_TRACE4(i915,, gem__evict,
60 1.13 riastrad "int"/*devno*/,
61 1.13 riastrad "int"/*min_size*/, "unsigned"/*alignment*/, "unsigned"/*flags*/);
62 1.2 riastrad static inline void
63 1.13 riastrad trace_i915_gem_evict(struct drm_device *dev, int min_size, unsigned alignment,
64 1.13 riastrad unsigned flags)
65 1.3 riastrad {
66 1.13 riastrad TRACE4(i915,, gem__evict,
67 1.13 riastrad dev->primary->index, min_size, alignment, flags);
68 1.3 riastrad }
69 1.3 riastrad
70 1.13 riastrad DEFINE_TRACE2(i915,, gem__evict__vm,
71 1.13 riastrad "int"/*devno*/, "struct i915_address_space *"/*vm*/);
72 1.3 riastrad static inline void
73 1.13 riastrad trace_i915_gem_evict_vm(struct i915_address_space *vm)
74 1.2 riastrad {
75 1.13 riastrad TRACE2(i915,, gem__evict__vm, vm->dev->primary->index, vm);
76 1.2 riastrad }
77 1.2 riastrad
78 1.13 riastrad DEFINE_TRACE3(i915,, gem__object__change__domain,
79 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
80 1.13 riastrad "uint32_t"/*read_domains*/,
81 1.13 riastrad "uint32_t"/*write_domain*/);
82 1.2 riastrad static inline void
83 1.13 riastrad trace_i915_gem_object_change_domain(struct drm_i915_gem_object *obj,
84 1.13 riastrad uint32_t old_read_domains, uint32_t old_write_domain)
85 1.2 riastrad {
86 1.13 riastrad TRACE3(i915,, gem__object__change__domain,
87 1.13 riastrad obj,
88 1.13 riastrad obj->base.read_domains | (old_read_domains << 16),
89 1.13 riastrad obj->base.write_domain | (old_write_domain << 16));
90 1.2 riastrad }
91 1.2 riastrad
92 1.13 riastrad DEFINE_TRACE1(i915,, gem__object__clflush,
93 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/);
94 1.2 riastrad static inline void
95 1.13 riastrad trace_i915_gem_object_clflush(struct drm_i915_gem_object *obj)
96 1.2 riastrad {
97 1.13 riastrad TRACE1(i915,, gem__object__clflush, obj);
98 1.2 riastrad }
99 1.2 riastrad
100 1.13 riastrad DEFINE_TRACE2(i915,, gem__object__create,
101 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
102 1.13 riastrad "size_t"/*size*/);
103 1.2 riastrad static inline void
104 1.13 riastrad trace_i915_gem_object_create(struct drm_i915_gem_object *obj)
105 1.2 riastrad {
106 1.13 riastrad TRACE2(i915,, gem__object__create, obj, obj->base.size);
107 1.2 riastrad }
108 1.2 riastrad
109 1.13 riastrad DEFINE_TRACE1(i915,, gem__object__destroy,
110 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/);
111 1.2 riastrad static inline void
112 1.13 riastrad trace_i915_gem_object_destroy(struct drm_i915_gem_object *obj)
113 1.2 riastrad {
114 1.13 riastrad TRACE1(i915,, gem__object__destroy, obj);
115 1.2 riastrad }
116 1.2 riastrad
117 1.13 riastrad DEFINE_TRACE4(i915,, gem__object__fault,
118 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
119 1.13 riastrad "pgoff_t"/*page_offset*/,
120 1.13 riastrad "bool"/*gtt*/,
121 1.13 riastrad "bool"/*write*/);
122 1.2 riastrad static inline void
123 1.13 riastrad trace_i915_gem_object_fault(struct drm_i915_gem_object *obj,
124 1.13 riastrad pgoff_t page_offset, bool gtt, bool write)
125 1.2 riastrad {
126 1.13 riastrad TRACE4(i915,, gem__object__fault, obj, page_offset, gtt, write);
127 1.2 riastrad }
128 1.2 riastrad
129 1.13 riastrad /* XXX Not sure about size/offset types here. */
130 1.13 riastrad DEFINE_TRACE3(i915,, gem__object__pread,
131 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
132 1.13 riastrad "off_t"/*offset*/,
133 1.13 riastrad "size_t"/*size*/);
134 1.2 riastrad static inline void
135 1.13 riastrad trace_i915_gem_object_pread(struct drm_i915_gem_object *obj, off_t offset,
136 1.13 riastrad size_t size)
137 1.2 riastrad {
138 1.13 riastrad TRACE3(i915,, gem__object__pread, obj, offset, size);
139 1.2 riastrad }
140 1.2 riastrad
141 1.13 riastrad DEFINE_TRACE3(i915,, gem__object__write,
142 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
143 1.13 riastrad "off_t"/*offset*/,
144 1.13 riastrad "size_t"/*size*/);
145 1.2 riastrad static inline void
146 1.13 riastrad trace_i915_gem_object_pwrite(struct drm_i915_gem_object *obj, off_t offset,
147 1.13 riastrad size_t size)
148 1.2 riastrad {
149 1.13 riastrad TRACE3(i915,, gem__object__write, obj, offset, size);
150 1.2 riastrad }
151 1.2 riastrad
152 1.13 riastrad DEFINE_TRACE3(i915,, gem__request__add,
153 1.13 riastrad "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/);
154 1.2 riastrad static inline void
155 1.4 riastrad trace_i915_gem_request_add(struct drm_i915_gem_request *request)
156 1.2 riastrad {
157 1.13 riastrad TRACE3(i915,, gem__request__add,
158 1.13 riastrad request->ring->dev->primary->index,
159 1.13 riastrad request->ring->id,
160 1.13 riastrad request->seqno);
161 1.2 riastrad }
162 1.2 riastrad
163 1.13 riastrad DEFINE_TRACE3(i915,, gem__request__retire,
164 1.13 riastrad "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/);
165 1.2 riastrad static inline void
166 1.13 riastrad trace_i915_gem_request_retire(struct drm_i915_gem_request *request)
167 1.2 riastrad {
168 1.13 riastrad TRACE3(i915,, gem__request__retire,
169 1.13 riastrad request->ring->dev->primary->index,
170 1.13 riastrad request->ring->id,
171 1.13 riastrad request->seqno);
172 1.2 riastrad }
173 1.2 riastrad
174 1.13 riastrad DEFINE_TRACE3(i915,, gem__request__wait__begin,
175 1.13 riastrad "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/);
176 1.2 riastrad static inline void
177 1.13 riastrad trace_i915_gem_request_wait_begin(struct drm_i915_gem_request *request)
178 1.2 riastrad {
179 1.13 riastrad TRACE3(i915,, gem__request__wait__begin,
180 1.13 riastrad request->ring->dev->primary->index,
181 1.13 riastrad request->ring->id,
182 1.13 riastrad request->seqno);
183 1.2 riastrad }
184 1.2 riastrad
185 1.13 riastrad DEFINE_TRACE3(i915,, gem__request__wait__end,
186 1.13 riastrad "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/);
187 1.2 riastrad static inline void
188 1.13 riastrad trace_i915_gem_request_wait_end(struct drm_i915_gem_request *request)
189 1.2 riastrad {
190 1.13 riastrad TRACE3(i915,, gem__request__wait__end,
191 1.13 riastrad request->ring->dev->primary->index,
192 1.13 riastrad request->ring->id,
193 1.13 riastrad request->seqno);
194 1.2 riastrad }
195 1.2 riastrad
196 1.13 riastrad DEFINE_TRACE3(i915,, gem__request__notify,
197 1.13 riastrad "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/);
198 1.2 riastrad static inline void
199 1.13 riastrad trace_i915_gem_request_notify(struct intel_engine_cs *ring)
200 1.8 riastrad {
201 1.13 riastrad TRACE3(i915,, gem__request__notify,
202 1.13 riastrad ring->dev->primary->index, ring->id, ring->get_seqno(ring, false));
203 1.8 riastrad }
204 1.8 riastrad
205 1.13 riastrad /* XXX Why no request in the trace upstream? */
206 1.13 riastrad DEFINE_TRACE4(i915,, gem__ring__dispatch,
207 1.13 riastrad "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/, "uint32_t"/*flags*/);
208 1.8 riastrad static inline void
209 1.13 riastrad trace_i915_gem_ring_dispatch(struct drm_i915_gem_request *request,
210 1.13 riastrad uint32_t flags)
211 1.2 riastrad {
212 1.13 riastrad TRACE4(i915,, gem__ring__dispatch,
213 1.13 riastrad request->ring->dev->primary->index,
214 1.13 riastrad request->ring->id,
215 1.13 riastrad request->seqno,
216 1.13 riastrad flags);
217 1.13 riastrad /* XXX i915_trace_irq_get? Doesn't seem to be used. */
218 1.2 riastrad }
219 1.2 riastrad
220 1.13 riastrad DEFINE_TRACE4(i915,, gem__ring__flush,
221 1.13 riastrad "int"/*devno*/,
222 1.13 riastrad "int"/*ringid*/,
223 1.13 riastrad "uint32_t"/*invalidate*/,
224 1.13 riastrad "uint32_t"/*flags*/);
225 1.2 riastrad static inline void
226 1.13 riastrad trace_i915_gem_ring_flush(struct drm_i915_gem_request *request,
227 1.13 riastrad uint32_t invalidate, uint32_t flags)
228 1.2 riastrad {
229 1.13 riastrad TRACE4(i915,, gem__ring__flush,
230 1.13 riastrad request->ring->dev->primary->index,
231 1.13 riastrad request->ring->id,
232 1.13 riastrad invalidate,
233 1.13 riastrad flags);
234 1.2 riastrad }
235 1.2 riastrad
236 1.13 riastrad DEFINE_TRACE4(i915,, gem__ring__sync__to,
237 1.13 riastrad "int"/*devno*/,
238 1.13 riastrad "int"/*from_ringid*/,
239 1.13 riastrad "int"/*to_ringid*/,
240 1.13 riastrad "uint32_t"/*seqno*/);
241 1.2 riastrad static inline void
242 1.13 riastrad trace_i915_gem_ring_sync_to(struct drm_i915_gem_request *to_req,
243 1.13 riastrad struct intel_engine_cs *from, struct drm_i915_gem_request *from_req)
244 1.3 riastrad {
245 1.13 riastrad TRACE4(i915,, gem__ring__sync__to,
246 1.13 riastrad from->dev->primary->index,
247 1.13 riastrad from->id,
248 1.13 riastrad to_req->ring->id,
249 1.13 riastrad i915_gem_request_get_seqno(from_req));
250 1.3 riastrad }
251 1.3 riastrad
252 1.13 riastrad DEFINE_TRACE3(i915,, register__read,
253 1.13 riastrad "uint32_t"/*reg*/, "uint64_t"/*value*/, "size_t"/*len*/);
254 1.13 riastrad DEFINE_TRACE3(i915,, register__write,
255 1.13 riastrad "uint32_t"/*reg*/, "uint64_t"/*value*/, "size_t"/*len*/);
256 1.3 riastrad static inline void
257 1.13 riastrad trace_i915_reg_rw(bool write, uint32_t reg, uint64_t value, size_t len,
258 1.13 riastrad bool trace)
259 1.2 riastrad {
260 1.13 riastrad if (!trace)
261 1.13 riastrad return;
262 1.13 riastrad if (write)
263 1.13 riastrad TRACE3(i915,, register__read, reg, value, len);
264 1.13 riastrad else
265 1.13 riastrad TRACE3(i915,, register__write, reg, value, len);
266 1.2 riastrad }
267 1.2 riastrad
268 1.13 riastrad DEFINE_TRACE5(i915,, vma__bind,
269 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
270 1.13 riastrad "struct i915_address_space *"/*vm*/,
271 1.13 riastrad "uint64_t"/*offset*/,
272 1.13 riastrad "uint64_t"/*size*/,
273 1.13 riastrad "uint64_t"/*flags*/);
274 1.2 riastrad static inline void
275 1.13 riastrad trace_i915_vma_bind(struct i915_vma *vma, uint64_t flags)
276 1.3 riastrad {
277 1.13 riastrad TRACE5(i915,, vma__bind,
278 1.13 riastrad vma->obj, vma->vm, vma->node.start, vma->node.size, flags);
279 1.3 riastrad }
280 1.3 riastrad
281 1.13 riastrad DEFINE_TRACE4(i915,, vma__unbind,
282 1.13 riastrad "struct drm_i915_gem_object *"/*obj*/,
283 1.13 riastrad "struct i915_address_space *"/*vm*/,
284 1.13 riastrad "uint64_t"/*offset*/,
285 1.13 riastrad "uint64_t"/*size*/);
286 1.3 riastrad static inline void
287 1.13 riastrad trace_i915_vma_unbind(struct i915_vma *vma)
288 1.3 riastrad {
289 1.13 riastrad TRACE4(i915,, vma__unbind,
290 1.13 riastrad vma->obj, vma->vm, vma->node.start, vma->node.size);
291 1.3 riastrad }
292 1.3 riastrad
293 1.13 riastrad DEFINE_TRACE1(i915,, gpu__freq__change,
294 1.13 riastrad "int"/*freq*/);
295 1.3 riastrad static inline void
296 1.13 riastrad trace_intel_gpu_freq_change(int freq)
297 1.2 riastrad {
298 1.13 riastrad TRACE1(i915,, gpu__freq__change, freq);
299 1.2 riastrad }
300 1.2 riastrad
301 1.13 riastrad DEFINE_TRACE3(i915,, context__create,
302 1.13 riastrad "int"/*devno*/,
303 1.13 riastrad "struct intel_context *"/*ctx*/,
304 1.13 riastrad "struct i915_address_space *"/*vm*/);
305 1.6 riastrad static inline void
306 1.13 riastrad trace_i915_context_create(struct intel_context *ctx)
307 1.6 riastrad {
308 1.13 riastrad TRACE3(i915,, context__create,
309 1.13 riastrad ctx->i915->dev->primary->index,
310 1.13 riastrad ctx,
311 1.13 riastrad (ctx->ppgtt ? &ctx->ppgtt->base : NULL));
312 1.6 riastrad }
313 1.6 riastrad
314 1.13 riastrad DEFINE_TRACE3(i915,, context__free,
315 1.13 riastrad "int"/*devno*/,
316 1.13 riastrad "struct intel_context *"/*ctx*/,
317 1.13 riastrad "struct i915_address_space *"/*vm*/);
318 1.6 riastrad static inline void
319 1.13 riastrad trace_i915_context_free(struct intel_context *ctx)
320 1.6 riastrad {
321 1.13 riastrad TRACE3(i915,, context__free,
322 1.13 riastrad ctx->i915->dev->primary->index,
323 1.13 riastrad ctx,
324 1.13 riastrad (ctx->ppgtt ? &ctx->ppgtt->base : NULL));
325 1.6 riastrad }
326 1.6 riastrad
327 1.13 riastrad DEFINE_TRACE4(i915,, page_directory_entry_alloc,
328 1.13 riastrad "struct i915_address_space *"/*vm*/,
329 1.13 riastrad "uint32_t"/*pdpe*/,
330 1.13 riastrad "uint64_t"/*start*/,
331 1.13 riastrad "uint64_t"/*pde_shift*/);
332 1.6 riastrad static inline void
333 1.13 riastrad trace_i915_page_directory_entry_alloc(struct i915_address_space *vm,
334 1.13 riastrad uint32_t pdpe, uint64_t start, uint64_t pde_shift)
335 1.9 riastrad {
336 1.13 riastrad TRACE4(i915,, page_directory_entry_alloc, vm, pdpe, start, pde_shift);
337 1.9 riastrad }
338 1.9 riastrad
339 1.13 riastrad DEFINE_TRACE4(i915,, page_directory_pointer_entry_alloc,
340 1.13 riastrad "struct i915_address_space *"/*vm*/,
341 1.13 riastrad "uint32_t"/*pml4e*/,
342 1.13 riastrad "uint64_t"/*start*/,
343 1.13 riastrad "uint64_t"/*pde_shift*/);
344 1.9 riastrad static inline void
345 1.13 riastrad trace_i915_page_directory_pointer_entry_alloc(struct i915_address_space *vm,
346 1.13 riastrad uint32_t pml4e, uint64_t start, uint64_t pde_shift)
347 1.9 riastrad {
348 1.13 riastrad TRACE4(i915,, page_directory_pointer_entry_alloc,
349 1.13 riastrad vm, pml4e, start, pde_shift);
350 1.9 riastrad }
351 1.9 riastrad
352 1.13 riastrad DEFINE_TRACE4(i915,, page_table_entry_alloc,
353 1.13 riastrad "struct i915_address_space *"/*vm*/,
354 1.13 riastrad "uint32_t"/*pde*/,
355 1.13 riastrad "uint64_t"/*start*/,
356 1.13 riastrad "uint64_t"/*pde_shift*/);
357 1.9 riastrad static inline void
358 1.13 riastrad trace_i915_page_table_entry_alloc(struct i915_address_space *vm, uint32_t pde,
359 1.13 riastrad uint64_t start, uint64_t pde_shift)
360 1.9 riastrad {
361 1.13 riastrad TRACE4(i915,, page_table_entry_alloc, vm, pde, start, pde_shift);
362 1.9 riastrad }
363 1.9 riastrad
364 1.13 riastrad DEFINE_TRACE6(i915,, page_table_entry_map,
365 1.13 riastrad "struct i915_address_space *"/*vm*/,
366 1.13 riastrad "uint32_t"/*pde*/,
367 1.13 riastrad "struct i915_page_table *"/*pt*/,
368 1.13 riastrad "uint32_t"/*first*/,
369 1.13 riastrad "uint32_t"/*count*/,
370 1.13 riastrad "uint32_t"/*bits*/);
371 1.9 riastrad static inline void
372 1.13 riastrad trace_i915_page_table_entry_map(struct i915_address_space *vm, uint32_t pde,
373 1.13 riastrad struct i915_page_table *pt, uint32_t first, uint32_t count, uint32_t bits)
374 1.9 riastrad {
375 1.13 riastrad TRACE6(i915,, page_table_entry_map, vm, pde, pt, first, count, bits);
376 1.9 riastrad }
377 1.9 riastrad
378 1.13 riastrad DEFINE_TRACE2(i915,, ppgtt__create,
379 1.13 riastrad "int"/*devno*/,
380 1.13 riastrad "struct i915_address_space *"/*vm*/);
381 1.9 riastrad static inline void
382 1.13 riastrad trace_i915_ppgtt_create(struct i915_address_space *vm)
383 1.9 riastrad {
384 1.13 riastrad TRACE2(i915,, ppgtt__create, vm->dev->primary->index, vm);
385 1.9 riastrad }
386 1.9 riastrad
387 1.13 riastrad DEFINE_TRACE2(i915,, ppgtt__release,
388 1.13 riastrad "int"/*devno*/,
389 1.13 riastrad "struct i915_address_space *"/*vm*/);
390 1.9 riastrad static inline void
391 1.13 riastrad trace_i915_ppgtt_release(struct i915_address_space *vm)
392 1.9 riastrad {
393 1.13 riastrad TRACE2(i915,, ppgtt__release, vm->dev->primary->index, vm);
394 1.9 riastrad }
395 1.9 riastrad
396 1.13 riastrad #define VM_TO_TRACE_NAME(vm) (i915_is_ggtt(vm) ? "G" : "P")
397 1.9 riastrad
398 1.13 riastrad DEFINE_TRACE4(i915,, va__alloc,
399 1.13 riastrad "struct i915_address_space *"/*vm*/,
400 1.13 riastrad "uint64_t"/*start*/,
401 1.13 riastrad "uint64_t"/*end*/,
402 1.13 riastrad "const char *"/*name*/);
403 1.9 riastrad static inline void
404 1.13 riastrad trace_i915_va_alloc(struct i915_address_space *vm, uint64_t start,
405 1.13 riastrad uint64_t length, const char *name)
406 1.9 riastrad {
407 1.13 riastrad /* XXX Why start/end upstream? */
408 1.13 riastrad TRACE4(i915,, va__alloc, vm, start, start + length - 1, name);
409 1.9 riastrad }
410 1.9 riastrad
411 1.13 riastrad DEFINE_TRACE3(i915,, gem__shrink,
412 1.13 riastrad "int"/*devno*/,
413 1.13 riastrad "unsigned long"/*target*/,
414 1.13 riastrad "unsigned"/*flags*/);
415 1.9 riastrad static inline void
416 1.10 riastrad trace_i915_gem_shrink(struct drm_i915_private *dev_priv, unsigned long target,
417 1.13 riastrad unsigned flags)
418 1.10 riastrad {
419 1.13 riastrad TRACE3(i915,, gem__shrink,
420 1.13 riastrad dev_priv->dev->primary->index, target, flags);
421 1.10 riastrad }
422 1.10 riastrad
423 1.13 riastrad DEFINE_TRACE5(i915,, pipe__update__start,
424 1.13 riastrad "enum i915_pipe"/*pipe*/,
425 1.13 riastrad "uint32_t"/*frame*/,
426 1.13 riastrad "int"/*scanline*/,
427 1.13 riastrad "uint32_t"/*min*/,
428 1.13 riastrad "uint32_t"/*max*/);
429 1.10 riastrad static inline void
430 1.12 riastrad trace_i915_pipe_update_start(struct intel_crtc *crtc)
431 1.12 riastrad {
432 1.13 riastrad TRACE5(i915,, pipe__update__start,
433 1.13 riastrad crtc->pipe,
434 1.13 riastrad crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
435 1.13 riastrad crtc->pipe),
436 1.13 riastrad intel_get_crtc_scanline(crtc),
437 1.13 riastrad crtc->debug.min_vbl,
438 1.13 riastrad crtc->debug.max_vbl);
439 1.12 riastrad }
440 1.12 riastrad
441 1.13 riastrad DEFINE_TRACE5(i915,, pipe__update__vblank__evaded,
442 1.13 riastrad "enum i915_pipe"/*pipe*/,
443 1.13 riastrad "uint32_t"/*frame*/,
444 1.13 riastrad "int"/*scanline*/,
445 1.13 riastrad "uint32_t"/*min*/,
446 1.13 riastrad "uint32_t"/*max*/);
447 1.12 riastrad static inline void
448 1.12 riastrad trace_i915_pipe_update_vblank_evaded(struct intel_crtc *crtc)
449 1.12 riastrad {
450 1.13 riastrad TRACE5(i915,, pipe__update__vblank__evaded,
451 1.13 riastrad crtc->pipe,
452 1.13 riastrad crtc->debug.start_vbl_count,
453 1.13 riastrad crtc->debug.scanline_start,
454 1.13 riastrad crtc->debug.min_vbl,
455 1.13 riastrad crtc->debug.max_vbl);
456 1.13 riastrad }
457 1.13 riastrad
458 1.13 riastrad DEFINE_TRACE3(i915,, pipe__update__end,
459 1.13 riastrad "enum i915_pipe"/*pipe*/,
460 1.13 riastrad "uint32_t"/*frame*/,
461 1.13 riastrad "int"/*scanline*/);
462 1.13 riastrad static inline void
463 1.13 riastrad trace_i915_pipe_update_end(struct intel_crtc *crtc, uint32_t frame,
464 1.13 riastrad int scanline)
465 1.13 riastrad {
466 1.13 riastrad TRACE3(i915,, pipe__update__end, crtc->pipe, frame, scanline);
467 1.13 riastrad }
468 1.13 riastrad
469 1.13 riastrad DEFINE_TRACE4(i915,, switch__mm,
470 1.13 riastrad "int"/*devno*/,
471 1.13 riastrad "int"/*ringid*/,
472 1.13 riastrad "struct intel_context *"/*to*/,
473 1.13 riastrad "struct i915_address_space *"/*vm*/);
474 1.13 riastrad static inline void
475 1.13 riastrad trace_switch_mm(struct intel_engine_cs *ring, struct intel_context *to)
476 1.13 riastrad {
477 1.13 riastrad TRACE4(i915,, switch__mm,
478 1.13 riastrad ring->dev->primary->index,
479 1.13 riastrad ring->id,
480 1.13 riastrad to,
481 1.13 riastrad to->ppgtt ? &to->ppgtt->base : NULL);
482 1.6 riastrad }
483 1.6 riastrad
484 1.2 riastrad #endif /* _I915_TRACE_H_ */
485