Some debugging applications need to track when a process starts or stops using the amdgpu driver. For those processes, add ftrace events that track when a amdgpu_vm task info is changed or destroyed.
v2: Deregister in fini, not destroy. cc: Sunil Khatri <[email protected]> Signed-off-by: David Francis <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 17 +++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h index 5324030a13f5..2aeda13e49dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h @@ -732,6 +732,23 @@ TRACE_EVENT(amdgpu_userq_state_changed, __entry->client_id, __entry->queue_type, __entry->doorbell_index, __entry->to) ); +TRACE_EVENT(amdgpu_register_pid, + TP_PROTO(uint32_t pid), + TP_ARGS(pid), + TP_STRUCT__entry(__field(uint32_t, pid)), + TP_fast_assign(__entry->pid = pid;), + TP_printk("amdgpu register pid %d", + __entry->pid) +); +TRACE_EVENT(amdgpu_deregister_pid, + TP_PROTO(uint32_t pid), + TP_ARGS(pid), + TP_STRUCT__entry(__field(uint32_t, pid)), + TP_fast_assign(__entry->pid = pid;), + TP_printk("amdgpu deregister pid %d", + __entry->pid) +); + #undef AMDGPU_JOB_GET_TIMELINE_NAME #endif diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index aac8ace9d7a6..48a725a0154e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -2543,6 +2543,10 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm) if (vm->task_info->task.pid == current->pid) return; + if (vm->task_info->task.pid) + trace_amdgpu_deregister_pid(vm->task_info->task.pid); + trace_amdgpu_register_pid(current->pid); + vm->task_info->task.pid = current->pid; get_task_comm(vm->task_info->task.comm, current); @@ -2803,6 +2807,9 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm) ti->process_name, ti->task.pid, ti->task.comm, ti->tgid); } + if (vm->task_info->task.pid) + trace_amdgpu_deregister_pid(vm->task_info->task.pid); + amdgpu_vm_put_task_info(vm->task_info); } -- 2.34.1
