[PATCH 1/8] drm/etnaviv: move down etnaviv_gpu_recover_hang() in file

Christian Gmeiner christian.gmeiner at gmail.com
Wed Jun 14 18:38:34 UTC 2023


Hi Lucas

>
> So it can use the event_free function without adding another
> forward declaration. No functional change.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>

Reviewed-by: Christian Gmeiner <cgmeiner at igalia.com>

> ---
>  drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 88 +++++++++++++--------------
>  1 file changed, 44 insertions(+), 44 deletions(-)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> index de8c9894967c..6d4df9f1aeff 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> @@ -1059,50 +1059,6 @@ int etnaviv_gpu_debugfs(struct etnaviv_gpu *gpu, struct seq_file *m)
>  }
>  #endif
>
> -void etnaviv_gpu_recover_hang(struct etnaviv_gem_submit *submit)
> -{
> -       struct etnaviv_gpu *gpu = submit->gpu;
> -       char *comm = NULL, *cmd = NULL;
> -       struct task_struct *task;
> -       unsigned int i;
> -
> -       dev_err(gpu->dev, "recover hung GPU!\n");
> -
> -       task = get_pid_task(submit->pid, PIDTYPE_PID);
> -       if (task) {
> -               comm = kstrdup(task->comm, GFP_KERNEL);
> -               cmd = kstrdup_quotable_cmdline(task, GFP_KERNEL);
> -               put_task_struct(task);
> -       }
> -
> -       if (comm && cmd)
> -               dev_err(gpu->dev, "offending task: %s (%s)\n", comm, cmd);
> -
> -       kfree(cmd);
> -       kfree(comm);
> -
> -       if (pm_runtime_get_sync(gpu->dev) < 0)
> -               goto pm_put;
> -
> -       mutex_lock(&gpu->lock);
> -
> -       etnaviv_hw_reset(gpu);
> -
> -       /* complete all events, the GPU won't do it after the reset */
> -       spin_lock(&gpu->event_spinlock);
> -       for_each_set_bit(i, gpu->event_bitmap, ETNA_NR_EVENTS)
> -               complete(&gpu->event_free);
> -       bitmap_zero(gpu->event_bitmap, ETNA_NR_EVENTS);
> -       spin_unlock(&gpu->event_spinlock);
> -
> -       etnaviv_gpu_hw_init(gpu);
> -
> -       mutex_unlock(&gpu->lock);
> -       pm_runtime_mark_last_busy(gpu->dev);
> -pm_put:
> -       pm_runtime_put_autosuspend(gpu->dev);
> -}
> -
>  /* fence object management */
>  struct etnaviv_fence {
>         struct etnaviv_gpu *gpu;
> @@ -1454,6 +1410,50 @@ static void sync_point_worker(struct work_struct *work)
>         etnaviv_gpu_start_fe(gpu, addr + 2, 2);
>  }
>
> +void etnaviv_gpu_recover_hang(struct etnaviv_gem_submit *submit)
> +{
> +       struct etnaviv_gpu *gpu = submit->gpu;
> +       char *comm = NULL, *cmd = NULL;
> +       struct task_struct *task;
> +       unsigned int i;
> +
> +       dev_err(gpu->dev, "recover hung GPU!\n");
> +
> +       task = get_pid_task(submit->pid, PIDTYPE_PID);
> +       if (task) {
> +               comm = kstrdup(task->comm, GFP_KERNEL);
> +               cmd = kstrdup_quotable_cmdline(task, GFP_KERNEL);
> +               put_task_struct(task);
> +       }
> +
> +       if (comm && cmd)
> +               dev_err(gpu->dev, "offending task: %s (%s)\n", comm, cmd);
> +
> +       kfree(cmd);
> +       kfree(comm);
> +
> +       if (pm_runtime_get_sync(gpu->dev) < 0)
> +               goto pm_put;
> +
> +       mutex_lock(&gpu->lock);
> +
> +       etnaviv_hw_reset(gpu);
> +
> +       /* complete all events, the GPU won't do it after the reset */
> +       spin_lock(&gpu->event_spinlock);
> +       for_each_set_bit(i, gpu->event_bitmap, ETNA_NR_EVENTS)
> +               complete(&gpu->event_free);
> +       bitmap_zero(gpu->event_bitmap, ETNA_NR_EVENTS);
> +       spin_unlock(&gpu->event_spinlock);
> +
> +       etnaviv_gpu_hw_init(gpu);
> +
> +       mutex_unlock(&gpu->lock);
> +       pm_runtime_mark_last_busy(gpu->dev);
> +pm_put:
> +       pm_runtime_put_autosuspend(gpu->dev);
> +}
> +
>  static void dump_mmu_fault(struct etnaviv_gpu *gpu)
>  {
>         static const char *fault_reasons[] = {
> --
> 2.39.2
>


-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info/privacypolicy


More information about the dri-devel mailing list