Skip to content

Commit 74328ee

Browse files
johnharr-inteldanvet
authored andcommitted
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>
1 parent f06cc1b commit 74328ee

File tree

3 files changed

+33
-30
lines changed

3 files changed

+33
-30
lines changed

drivers/gpu/drm/i915/i915_gem.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,8 +1241,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
12411241
return -ENODEV;
12421242

12431243
/* Record current time in case interrupted by signal, or wedged */
1244-
trace_i915_gem_request_wait_begin(i915_gem_request_get_ring(req),
1245-
i915_gem_request_get_seqno(req));
1244+
trace_i915_gem_request_wait_begin(req);
12461245
before = ktime_get_raw_ns();
12471246
for (;;) {
12481247
struct timer_list timer;
@@ -1294,8 +1293,7 @@ int __i915_wait_request(struct drm_i915_gem_request *req,
12941293
}
12951294
}
12961295
now = ktime_get_raw_ns();
1297-
trace_i915_gem_request_wait_end(i915_gem_request_get_ring(req),
1298-
i915_gem_request_get_seqno(req));
1296+
trace_i915_gem_request_wait_end(req);
12991297

13001298
if (!irq_test_in_progress)
13011299
ring->irq_put(ring);
@@ -2500,7 +2498,7 @@ int __i915_add_request(struct intel_engine_cs *ring,
25002498
spin_unlock(&file_priv->mm.lock);
25012499
}
25022500

2503-
trace_i915_gem_request_add(ring, request->seqno);
2501+
trace_i915_gem_request_add(request);
25042502
ring->outstanding_lazy_request = NULL;
25052503

25062504
i915_queue_hangcheck(ring->dev);
@@ -2776,7 +2774,7 @@ i915_gem_retire_requests_ring(struct intel_engine_cs *ring)
27762774
if (!i915_seqno_passed(seqno, request->seqno))
27772775
break;
27782776

2779-
trace_i915_gem_request_retire(ring, request->seqno);
2777+
trace_i915_gem_request_retire(request);
27802778

27812779
/* This is one of the few common intersection points
27822780
* between legacy ringbuffer submission and execlists:
@@ -3006,7 +3004,7 @@ i915_gem_object_sync(struct drm_i915_gem_object *obj,
30063004
if (ret)
30073005
return ret;
30083006

3009-
trace_i915_gem_ring_sync_to(from, to, seqno);
3007+
trace_i915_gem_ring_sync_to(from, to, obj->last_read_req);
30103008
ret = to->semaphore.sync_to(to, from, seqno);
30113009
if (!ret)
30123010
/* We use last_read_req because sync_to()

drivers/gpu/drm/i915/i915_gem_execbuffer.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,9 +1211,7 @@ i915_gem_ringbuffer_submission(struct drm_device *dev, struct drm_file *file,
12111211
return ret;
12121212
}
12131213

1214-
trace_i915_gem_ring_dispatch(ring,
1215-
i915_gem_request_get_seqno(intel_ring_get_request(ring)),
1216-
flags);
1214+
trace_i915_gem_ring_dispatch(intel_ring_get_request(ring), flags);
12171215

12181216
i915_gem_execbuffer_move_to_active(vmas, ring);
12191217
i915_gem_execbuffer_retire_commands(dev, file, ring, batch_obj);

drivers/gpu/drm/i915/i915_trace.h

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,8 @@ TRACE_EVENT(i915_gem_evict_vm,
328328
TRACE_EVENT(i915_gem_ring_sync_to,
329329
TP_PROTO(struct intel_engine_cs *from,
330330
struct intel_engine_cs *to,
331-
u32 seqno),
332-
TP_ARGS(from, to, seqno),
331+
struct drm_i915_gem_request *req),
332+
TP_ARGS(from, to, req),
333333

334334
TP_STRUCT__entry(
335335
__field(u32, dev)
@@ -342,7 +342,7 @@ TRACE_EVENT(i915_gem_ring_sync_to,
342342
__entry->dev = from->dev->primary->index;
343343
__entry->sync_from = from->id;
344344
__entry->sync_to = to->id;
345-
__entry->seqno = seqno;
345+
__entry->seqno = i915_gem_request_get_seqno(req);
346346
),
347347

348348
TP_printk("dev=%u, sync-from=%u, sync-to=%u, seqno=%u",
@@ -352,8 +352,8 @@ TRACE_EVENT(i915_gem_ring_sync_to,
352352
);
353353

354354
TRACE_EVENT(i915_gem_ring_dispatch,
355-
TP_PROTO(struct intel_engine_cs *ring, u32 seqno, u32 flags),
356-
TP_ARGS(ring, seqno, flags),
355+
TP_PROTO(struct drm_i915_gem_request *req, u32 flags),
356+
TP_ARGS(req, flags),
357357

358358
TP_STRUCT__entry(
359359
__field(u32, dev)
@@ -363,11 +363,13 @@ TRACE_EVENT(i915_gem_ring_dispatch,
363363
),
364364

365365
TP_fast_assign(
366+
struct intel_engine_cs *ring =
367+
i915_gem_request_get_ring(req);
366368
__entry->dev = ring->dev->primary->index;
367369
__entry->ring = ring->id;
368-
__entry->seqno = seqno;
370+
__entry->seqno = i915_gem_request_get_seqno(req);
369371
__entry->flags = flags;
370-
i915_trace_irq_get(ring, seqno);
372+
i915_trace_irq_get(ring, __entry->seqno);
371373
),
372374

373375
TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x",
@@ -398,8 +400,8 @@ TRACE_EVENT(i915_gem_ring_flush,
398400
);
399401

400402
DECLARE_EVENT_CLASS(i915_gem_request,
401-
TP_PROTO(struct intel_engine_cs *ring, u32 seqno),
402-
TP_ARGS(ring, seqno),
403+
TP_PROTO(struct drm_i915_gem_request *req),
404+
TP_ARGS(req),
403405

404406
TP_STRUCT__entry(
405407
__field(u32, dev)
@@ -408,18 +410,20 @@ DECLARE_EVENT_CLASS(i915_gem_request,
408410
),
409411

410412
TP_fast_assign(
413+
struct intel_engine_cs *ring =
414+
i915_gem_request_get_ring(req);
411415
__entry->dev = ring->dev->primary->index;
412416
__entry->ring = ring->id;
413-
__entry->seqno = seqno;
417+
__entry->seqno = i915_gem_request_get_seqno(req);
414418
),
415419

416420
TP_printk("dev=%u, ring=%u, seqno=%u",
417421
__entry->dev, __entry->ring, __entry->seqno)
418422
);
419423

420424
DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
421-
TP_PROTO(struct intel_engine_cs *ring, u32 seqno),
422-
TP_ARGS(ring, seqno)
425+
TP_PROTO(struct drm_i915_gem_request *req),
426+
TP_ARGS(req)
423427
);
424428

425429
TRACE_EVENT(i915_gem_request_complete,
@@ -443,13 +447,13 @@ TRACE_EVENT(i915_gem_request_complete,
443447
);
444448

445449
DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
446-
TP_PROTO(struct intel_engine_cs *ring, u32 seqno),
447-
TP_ARGS(ring, seqno)
450+
TP_PROTO(struct drm_i915_gem_request *req),
451+
TP_ARGS(req)
448452
);
449453

450454
TRACE_EVENT(i915_gem_request_wait_begin,
451-
TP_PROTO(struct intel_engine_cs *ring, u32 seqno),
452-
TP_ARGS(ring, seqno),
455+
TP_PROTO(struct drm_i915_gem_request *req),
456+
TP_ARGS(req),
453457

454458
TP_STRUCT__entry(
455459
__field(u32, dev)
@@ -465,10 +469,13 @@ TRACE_EVENT(i915_gem_request_wait_begin,
465469
* less desirable.
466470
*/
467471
TP_fast_assign(
472+
struct intel_engine_cs *ring =
473+
i915_gem_request_get_ring(req);
468474
__entry->dev = ring->dev->primary->index;
469475
__entry->ring = ring->id;
470-
__entry->seqno = seqno;
471-
__entry->blocking = mutex_is_locked(&ring->dev->struct_mutex);
476+
__entry->seqno = i915_gem_request_get_seqno(req);
477+
__entry->blocking =
478+
mutex_is_locked(&ring->dev->struct_mutex);
472479
),
473480

474481
TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s",
@@ -477,8 +484,8 @@ TRACE_EVENT(i915_gem_request_wait_begin,
477484
);
478485

479486
DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
480-
TP_PROTO(struct intel_engine_cs *ring, u32 seqno),
481-
TP_ARGS(ring, seqno)
487+
TP_PROTO(struct drm_i915_gem_request *req),
488+
TP_ARGS(req)
482489
);
483490

484491
DECLARE_EVENT_CLASS(i915_ring,

0 commit comments

Comments
 (0)