Am 16.04.25 um 16:16 schrieb Liang, Prike: > [Public] > >> From: Koenig, Christian <christian.koe...@amd.com> >> Sent: Wednesday, April 16, 2025 7:04 PM >> To: Liang, Prike <prike.li...@amd.com>; amd-gfx@lists.freedesktop.org >> Cc: Deucher, Alexander <alexander.deuc...@amd.com> >> Subject: Re: [PATCH 3/4] drm/amdgpu: trace the scheduler dependent job fence >> name >> >> Am 16.04.25 um 10:50 schrieb Prike Liang: >>> This trace will help in tracking the scheduler dependent job fence. >> Changes for general DRM code need to got o the appropriate mailing list. > Yes, it should be sent to dri-dev group. > >> Apart from that IIRC we intentionally didn't do that. Why should the driver >> name be >> relevant here? > By adding the scheduler-dependent fence name dump, this can help identify > which exact fence is depended on by the scheduler job. With this dump, > successfully catch the case about the SDMA and GFX kernel queue scheduled > jobs that are dependent on the eviction fence when enabling the kq and uq at > the same time.
Mhm, I see why you want to make that shortcut but we kind of agreed to identify fences in the scheduler always as context:seqno. If you then want the driver/timeline names for that you should probably enable the fence trace points as well. We are trying to reduce the accesses to those names to eventually allow dma_fence destruction independent of the driver module. Regards, Christian. > >> Regards, >> Christian. >> >>> Signed-off-by: Prike Liang <prike.li...@amd.com> >>> --- >>> drivers/gpu/drm/scheduler/gpu_scheduler_trace.h | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler_trace.h >>> b/drivers/gpu/drm/scheduler/gpu_scheduler_trace.h >>> index c75302ca3427..473a2cbbd7bd 100644 >>> --- a/drivers/gpu/drm/scheduler/gpu_scheduler_trace.h >>> +++ b/drivers/gpu/drm/scheduler/gpu_scheduler_trace.h >>> @@ -91,6 +91,7 @@ TRACE_EVENT(drm_sched_job_wait_dep, >>> __field(struct dma_fence *, fence) >>> __field(uint64_t, ctx) >>> __field(unsigned, seqno) >>> + __string(dep_fence_name, fence->ops- >>> get_driver_name(fence)) >>> ), >>> >>> TP_fast_assign( >>> @@ -99,9 +100,11 @@ TRACE_EVENT(drm_sched_job_wait_dep, >>> __entry->fence = fence; >>> __entry->ctx = fence->context; >>> __entry->seqno = fence->seqno; >>> + __assign_str(dep_fence_name); >>> ), >>> - TP_printk("job ring=%s, id=%llu, depends fence=%p, context=%llu, >> seq=%u", >>> + TP_printk("job ring=%s, id=%llu, depends fence(name: %s) addr >>> +=%p, context=%llu, seq=%u", >>> __get_str(name), __entry->id, >>> + __get_str(dep_fence_name), >>> __entry->fence, __entry->ctx, >>> __entry->seqno) >>> );