diff options
author | jqdeng <Emily.Deng@amd.com> | 2020-08-07 17:31:19 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2020-08-18 18:22:02 -0400 |
commit | 9a1cddd6374fb1eb166f40f10d5411e3699066d4 (patch) | |
tree | ec1d6acdcfd9550058cb21e04f72f04411fb1908 /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |
parent | 5ce99853a6fd94c729d4b50188f43300d6568898 (diff) | |
download | kernel_replicant_linux-9a1cddd6374fb1eb166f40f10d5411e3699066d4.tar.gz kernel_replicant_linux-9a1cddd6374fb1eb166f40f10d5411e3699066d4.tar.bz2 kernel_replicant_linux-9a1cddd6374fb1eb166f40f10d5411e3699066d4.zip |
drm/amdgpu: Fix repeatly flr issue
Only for no job running test case need to do recover in
flr notification.
For having job in mirror list, then let guest driver to
hit job timeout, and then do recover.
Signed-off-by: jqdeng <Emily.Deng@amd.com>
Acked-by: Nirmoy Das <nirmoy.das@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 415e1a32b98c..6573e1112462 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -3923,6 +3923,34 @@ error: } /** + * amdgpu_device_has_job_running - check if there is any job in mirror list + * + * @adev: amdgpu device pointer + * + * check if there is any job in mirror list + */ +bool amdgpu_device_has_job_running(struct amdgpu_device *adev) +{ + int i; + struct drm_sched_job *job; + + for (i = 0; i < AMDGPU_MAX_RINGS; ++i) { + struct amdgpu_ring *ring = adev->rings[i]; + + if (!ring || !ring->sched.thread) + continue; + + spin_lock(&ring->sched.job_list_lock); + job = list_first_entry_or_null(&ring->sched.ring_mirror_list, + struct drm_sched_job, node); + spin_unlock(&ring->sched.job_list_lock); + if (job) + return true; + } + return false; +} + +/** * amdgpu_device_should_recover_gpu - check if we should try GPU recovery * * @adev: amdgpu device pointer |