[PATCH v2 1/7] drm/amdgpu: Cache result of last reset at reset domain level.
Christian König
christian.koenig at amd.com
Wed May 18 06:02:05 UTC 2022
Am 17.05.22 um 21:20 schrieb Andrey Grodzovsky:
> Will be read by executors of async reset like debugfs.
>
> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 ++++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_reset.h | 1 +
> 3 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index b583026dc893..3948e7db6ad7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -5303,6 +5303,8 @@ int amdgpu_device_gpu_recover_imp(struct amdgpu_device *adev,
>
> if (r)
> dev_info(adev->dev, "GPU reset end with ret = %d\n", r);
> +
> + atomic_set(&adev->reset_domain->reset_res, r);
> return r;
> }
>
> @@ -5317,7 +5319,7 @@ static void amdgpu_device_queue_gpu_recover_work(struct work_struct *work)
> {
> struct amdgpu_recover_work_struct *recover_work = container_of(work, struct amdgpu_recover_work_struct, base);
>
> - recover_work->ret = amdgpu_device_gpu_recover_imp(recover_work->adev, recover_work->job);
> + amdgpu_device_gpu_recover_imp(recover_work->adev, recover_work->job);
> }
> /*
> * Serialize gpu recover into reset domain single threaded wq
> @@ -5334,7 +5336,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
>
> flush_work(&work.base);
>
> - return work.ret;
> + return atomic_read(&adev->reset_domain->reset_res);
> }
>
> /**
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
> index c80af0889773..32c86a0b145c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
> @@ -132,6 +132,7 @@ struct amdgpu_reset_domain *amdgpu_reset_create_reset_domain(enum amdgpu_reset_d
> }
>
> atomic_set(&reset_domain->in_gpu_reset, 0);
> + atomic_set(&reset_domain->reset_res, 0);
> init_rwsem(&reset_domain->sem);
>
> return reset_domain;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.h
> index 1949dbe28a86..9e55a5d7a825 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.h
> @@ -82,6 +82,7 @@ struct amdgpu_reset_domain {
> enum amdgpu_reset_domain_type type;
> struct rw_semaphore sem;
> atomic_t in_gpu_reset;
> + atomic_t reset_res;
Maybe better name that last_result or something like that.
Christian.
> };
>
>
More information about the amd-gfx
mailing list