aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohn Harrison <John.C.Harrison@Intel.com>2014-11-24 13:49:38 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-12-03 03:35:21 -0500
commit74328ee51051e73e4952876cc9061ff01530267c (patch)
treecd7bed75d34414e3ca84d52b0c1863a01ceff29f /drivers
parentf06cc1b9401cf0b60f3cd30d8127a8a4f088d4c3 (diff)
drm/i915: Convert trace functions from seqno to request
All the code above is now using requests not seqnos so it is possible to convert the trace functions across. Note that rather than get into problematic reference counting issues, the trace code only saves the seqno and ring values from the request structure not the structure pointer itself. For: VIZ-4377 Signed-off-by: John Harrison <John.C.Harrison@Intel.com> Reviewed-by: Thomas Daniel <Thomas.Daniel@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c12
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c4
-rw-r--r--drivers/gpu/drm/i915/i915_trace.h47
3 files changed, 33 insertions, 30 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index c403bacee161..e79815531e1a 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1241,8 +1241,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
1241 return -ENODEV; 1241 return -ENODEV;
1242 1242
1243 /* Record current time in case interrupted by signal, or wedged */ 1243 /* Record current time in case interrupted by signal, or wedged */
1244 trace_i915_gem_request_wait_begin(i915_gem_request_get_ring(req), 1244 trace_i915_gem_request_wait_begin(req);
1245 i915_gem_request_get_seqno(req));
1246 before = ktime_get_raw_ns(); 1245 before = ktime_get_raw_ns();
1247 for (;;) { 1246 for (;;) {
1248 struct timer_list timer; 1247 struct timer_list timer;
@@ -1294,8 +1293,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
1294 } 1293 }
1295 } 1294 }
1296 now = ktime_get_raw_ns(); 1295 now = ktime_get_raw_ns();
1297 trace_i915_gem_request_wait_end(i915_gem_request_get_ring(req), 1296 trace_i915_gem_request_wait_end(req);
1298 i915_gem_request_get_seqno(req));
1299 1297
1300 if (!irq_test_in_progress) 1298 if (!irq_test_in_progress)
1301 ring->irq_put(ring); 1299 ring->irq_put(ring);
@@ -2500,7 +2498,7 @@ int __i915_add_request(struct intel_engine_cs *ring,
2500 spin_unlock(&file_priv->mm.lock); 2498 spin_unlock(&file_priv->mm.lock);
2501 } 2499 }
2502 2500
2503 trace_i915_gem_request_add(ring, request->seqno); 2501 trace_i915_gem_request_add(request);
2504 ring->outstanding_lazy_request = NULL; 2502 ring->outstanding_lazy_request = NULL;
2505 2503
2506 i915_queue_hangcheck(ring->dev); 2504 i915_queue_hangcheck(ring->dev);
@@ -2776,7 +2774,7 @@ i915_gem_retire_requests_ring(struct intel_engine_cs *ring)
2776 if (!i915_seqno_passed(seqno, request->seqno)) 2774 if (!i915_seqno_passed(seqno, request->seqno))
2777 break; 2775 break;
2778 2776
2779 trace_i915_gem_request_retire(ring, request->seqno); 2777 trace_i915_gem_request_retire(request);
2780 2778
2781 /* This is one of the few common intersection points 2779 /* This is one of the few common intersection points
2782 * between legacy ringbuffer submission and execlists: 2780 * between legacy ringbuffer submission and execlists:
@@ -3006,7 +3004,7 @@ i915_gem_object_sync(struct drm_i915_gem_object *obj,
3006 if (ret) 3004 if (ret)
3007 return ret; 3005 return ret;
3008 3006
3009 trace_i915_gem_ring_sync_to(from, to, seqno); 3007 trace_i915_gem_ring_sync_to(from, to, obj->last_read_req);
3010 ret = to->semaphore.sync_to(to, from, seqno); 3008 ret = to->semaphore.sync_to(to, from, seqno);
3011 if (!ret) 3009 if (!ret)
3012 /* We use last_read_req because sync_to() 3010 /* We use last_read_req because sync_to()
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index faada7544050..0c25f6202ca4 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -1211,9 +1211,7 @@ i915_gem_ringbuffer_submission(struct drm_device *dev, struct drm_file *file,
1211 return ret; 1211 return ret;
1212 } 1212 }
1213 1213
1214 trace_i915_gem_ring_dispatch(ring, 1214 trace_i915_gem_ring_dispatch(intel_ring_get_request(ring), flags);
1215 i915_gem_request_get_seqno(intel_ring_get_request(ring)),
1216 flags);
1217 1215
1218 i915_gem_execbuffer_move_to_active(vmas, ring); 1216 i915_gem_execbuffer_move_to_active(vmas, ring);
1219 i915_gem_execbuffer_retire_commands(dev, file, ring, batch_obj); 1217 i915_gem_execbuffer_retire_commands(dev, file, ring, batch_obj);
diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index 751d4ad14d62..2c0327b66618 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -328,8 +328,8 @@ TRACE_EVENT(i915_gem_evict_vm,
328TRACE_EVENT(i915_gem_ring_sync_to, 328TRACE_EVENT(i915_gem_ring_sync_to,
329 TP_PROTO(struct intel_engine_cs *from, 329 TP_PROTO(struct intel_engine_cs *from,
330 struct intel_engine_cs *to, 330 struct intel_engine_cs *to,
331 u32 seqno), 331 struct drm_i915_gem_request *req),
332 TP_ARGS(from, to, seqno), 332 TP_ARGS(from, to, req),
333 333
334 TP_STRUCT__entry( 334 TP_STRUCT__entry(
335 __field(u32, dev) 335 __field(u32, dev)
@@ -342,7 +342,7 @@ TRACE_EVENT(i915_gem_ring_sync_to,
342 __entry->dev = from->dev->primary->index; 342 __entry->dev = from->dev->primary->index;
343 __entry->sync_from = from->id; 343 __entry->sync_from = from->id;
344 __entry->sync_to = to->id; 344 __entry->sync_to = to->id;
345 __entry->seqno = seqno; 345 __entry->seqno = i915_gem_request_get_seqno(req);
346 ), 346 ),
347 347
348 TP_printk("dev=%u, sync-from=%u, sync-to=%u, seqno=%u", 348 TP_printk("dev=%u, sync-from=%u, sync-to=%u, seqno=%u",
@@ -352,8 +352,8 @@ TRACE_EVENT(i915_gem_ring_sync_to,
352); 352);
353 353
354TRACE_EVENT(i915_gem_ring_dispatch, 354TRACE_EVENT(i915_gem_ring_dispatch,
355 TP_PROTO(struct intel_engine_cs *ring, u32 seqno, u32 flags), 355 TP_PROTO(struct drm_i915_gem_request *req, u32 flags),
356 TP_ARGS(ring, seqno, flags), 356 TP_ARGS(req, flags),
357 357
358 TP_STRUCT__entry( 358 TP_STRUCT__entry(
359 __field(u32, dev) 359 __field(u32, dev)
@@ -363,11 +363,13 @@ TRACE_EVENT(i915_gem_ring_dispatch,
363 ), 363 ),
364 364
365 TP_fast_assign( 365 TP_fast_assign(
366 struct intel_engine_cs *ring =
367 i915_gem_request_get_ring(req);
366 __entry->dev = ring->dev->primary->index; 368 __entry->dev = ring->dev->primary->index;
367 __entry->ring = ring->id; 369 __entry->ring = ring->id;
368 __entry->seqno = seqno; 370 __entry->seqno = i915_gem_request_get_seqno(req);
369 __entry->flags = flags; 371 __entry->flags = flags;
370 i915_trace_irq_get(ring, seqno); 372 i915_trace_irq_get(ring, __entry->seqno);
371 ), 373 ),
372 374
373 TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x", 375 TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x",
@@ -398,8 +400,8 @@ TRACE_EVENT(i915_gem_ring_flush,
398); 400);
399 401
400DECLARE_EVENT_CLASS(i915_gem_request, 402DECLARE_EVENT_CLASS(i915_gem_request,
401 TP_PROTO(struct intel_engine_cs *ring, u32 seqno), 403 TP_PROTO(struct drm_i915_gem_request *req),
402 TP_ARGS(ring, seqno), 404 TP_ARGS(req),
403 405
404 TP_STRUCT__entry( 406 TP_STRUCT__entry(
405 __field(u32, dev) 407 __field(u32, dev)
@@ -408,9 +410,11 @@ DECLARE_EVENT_CLASS(i915_gem_request,
408 ), 410 ),
409 411
410 TP_fast_assign( 412 TP_fast_assign(
413 struct intel_engine_cs *ring =
414 i915_gem_request_get_ring(req);
411 __entry->dev = ring->dev->primary->index; 415 __entry->dev = ring->dev->primary->index;
412 __entry->ring = ring->id; 416 __entry->ring = ring->id;
413 __entry->seqno = seqno; 417 __entry->seqno = i915_gem_request_get_seqno(req);
414 ), 418 ),
415 419
416 TP_printk("dev=%u, ring=%u, seqno=%u", 420 TP_printk("dev=%u, ring=%u, seqno=%u",
@@ -418,8 +422,8 @@ DECLARE_EVENT_CLASS(i915_gem_request,
418); 422);
419 423
420DEFINE_EVENT(i915_gem_request, i915_gem_request_add, 424DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
421 TP_PROTO(struct intel_engine_cs *ring, u32 seqno), 425 TP_PROTO(struct drm_i915_gem_request *req),
422 TP_ARGS(ring, seqno) 426 TP_ARGS(req)
423); 427);
424 428
425TRACE_EVENT(i915_gem_request_complete, 429TRACE_EVENT(i915_gem_request_complete,
@@ -443,13 +447,13 @@ TRACE_EVENT(i915_gem_request_complete,
443); 447);
444 448
445DEFINE_EVENT(i915_gem_request, i915_gem_request_retire, 449DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
446 TP_PROTO(struct intel_engine_cs *ring, u32 seqno), 450 TP_PROTO(struct drm_i915_gem_request *req),
447 TP_ARGS(ring, seqno) 451 TP_ARGS(req)
448); 452);
449 453
450TRACE_EVENT(i915_gem_request_wait_begin, 454TRACE_EVENT(i915_gem_request_wait_begin,
451 TP_PROTO(struct intel_engine_cs *ring, u32 seqno), 455 TP_PROTO(struct drm_i915_gem_request *req),
452 TP_ARGS(ring, seqno), 456 TP_ARGS(req),
453 457
454 TP_STRUCT__entry( 458 TP_STRUCT__entry(
455 __field(u32, dev) 459 __field(u32, dev)
@@ -465,10 +469,13 @@ TRACE_EVENT(i915_gem_request_wait_begin,
465 * less desirable. 469 * less desirable.
466 */ 470 */
467 TP_fast_assign( 471 TP_fast_assign(
472 struct intel_engine_cs *ring =
473 i915_gem_request_get_ring(req);
468 __entry->dev = ring->dev->primary->index; 474 __entry->dev = ring->dev->primary->index;
469 __entry->ring = ring->id; 475 __entry->ring = ring->id;
470 __entry->seqno = seqno; 476 __entry->seqno = i915_gem_request_get_seqno(req);
471 __entry->blocking = mutex_is_locked(&ring->dev->struct_mutex); 477 __entry->blocking =
478 mutex_is_locked(&ring->dev->struct_mutex);
472 ), 479 ),
473 480
474 TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s", 481 TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s",
@@ -477,8 +484,8 @@ TRACE_EVENT(i915_gem_request_wait_begin,
477); 484);
478 485
479DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end, 486DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
480 TP_PROTO(struct intel_engine_cs *ring, u32 seqno), 487 TP_PROTO(struct drm_i915_gem_request *req),
481 TP_ARGS(ring, seqno) 488 TP_ARGS(req)
482); 489);
483 490
484DECLARE_EVENT_CLASS(i915_ring, 491DECLARE_EVENT_CLASS(i915_ring,