[PATCH v2] drm/msm: Update global fault counter when faulty process has already ended

Maíra Canal mcanal at igalia.com
Fri Aug 15 20:10:35 UTC 2025


Hi,

Gentle ping on this patch.

Best Regards,
- Maíra

On 7/20/25 18:42, Maíra Canal wrote:
> The global fault counter is no longer used since commit 12578c075f89
> ("drm/msm/gpu: Skip retired submits in recover worker"). However, it's
> still needed, as we need to handle cases where a GPU fault occurs after
> the faulting process has already ended.
> 
> Hence, increment the global fault counter when the submitting process
> had already ended. This way, the number of faults returned by
> MSM_PARAM_FAULTS will stay consistent.
> 
> While here, s/unusuable/unusable.
> 
> Fixes: 12578c075f89 ("drm/msm/gpu: Skip retired submits in recover worker")
> Signed-off-by: Maíra Canal <mcanal at igalia.com>
> ---
> 
> v1 -> v2: https://lore.kernel.org/dri-devel/20250714230813.46279-1-mcanal@igalia.com/T/
> 
> * Don't delete the global fault, but instead, increment it when the we get
> 	a fault after the faulting process has ended (Rob Clark)
> * Rewrite the commit message based on the changes.
> 
>   drivers/gpu/drm/msm/msm_gpu.c | 11 ++++++++---
>   1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
> index c317b25a8162..416d47185ef0 100644
> --- a/drivers/gpu/drm/msm/msm_gpu.c
> +++ b/drivers/gpu/drm/msm/msm_gpu.c
> @@ -465,6 +465,7 @@ static void recover_worker(struct kthread_work *work)
>   	struct msm_gem_submit *submit;
>   	struct msm_ringbuffer *cur_ring = gpu->funcs->active_ring(gpu);
>   	char *comm = NULL, *cmd = NULL;
> +	struct task_struct *task;
>   	int i;
>   
>   	mutex_lock(&gpu->lock);
> @@ -482,16 +483,20 @@ static void recover_worker(struct kthread_work *work)
>   
>   	/* Increment the fault counts */
>   	submit->queue->faults++;
> -	if (submit->vm) {
> +
> +	task = get_pid_task(submit->pid, PIDTYPE_PID);
> +	if (!task)
> +		gpu->global_faults++;
> +	else {
>   		struct msm_gem_vm *vm = to_msm_vm(submit->vm);
>   
>   		vm->faults++;
>   
>   		/*
>   		 * If userspace has opted-in to VM_BIND (and therefore userspace
> -		 * management of the VM), faults mark the VM as unusuable.  This
> +		 * management of the VM), faults mark the VM as unusable. This
>   		 * matches vulkan expectations (vulkan is the main target for
> -		 * VM_BIND)
> +		 * VM_BIND).
>   		 */
>   		if (!vm->managed)
>   			msm_gem_vm_unusable(submit->vm);



More information about the Freedreno mailing list