Re: [PATCH] drm/amdgpu: Add trace events for pid register/deregister

"Khatri, Sunil" <[email protected]> Tue, 28 Jul 2026 17:56:36 +0530
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <[email protected]>
On 24-07-2026 06:51 pm, David Francis wrote:
> 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.
>
> 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..c79604b9dda1 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..8d31a61e8c26 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -2457,6 +2457,9 @@ static void amdgpu_vm_destroy_task_info(struct kref *kref)
>   {
>   	struct amdgpu_task_info *ti = container_of(kref, struct amdgpu_task_info, refcount);
>   
> +	if (ti->task.pid)
> +		trace_amdgpu_deregister_pid(ti->task.pid);
> +
>   	kfree(ti);
>   }
>   
> @@ -2543,6 +2546,10 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
This function is called from many places and will not match when a 
process start and similarly for stop. Better find a unique function, 
also this will be called for KGD and KFD processes too.
Chose a better function to add the trace although trace in itself is fine.

Regards
Sunil Khatri
>   	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);
>