[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