aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-07-29 20:23:40 -0400
committerDave Airlie <airlied@redhat.com>2018-07-29 20:23:50 -0400
commitecd7963f7cf967009882fd56eaee1e87a229bea2 (patch)
tree21d8c2583d94f26894202433adf46b98d25bf698 /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
parent6d52aacd92c60331ec8c3117522f4301b5195e28 (diff)
parentb5aa3f4aef724e9c0f626dcf69948b22efcc5176 (diff)
Merge tag 'drm-amdkfd-next-2018-07-28' of git://people.freedesktop.org/~gabbayo/linux into drm-next
This is amdkfd pull for 4.19. The major changes are: - Add Raven support. Raven refers to Ryzen APUs with integrated GFXv9 GPU. - Integrate GPU reset support In addition, there are a couple of small fixes and improvements, such as: - Better handling and reporting to user of VM faults - Fix race upon context restore - Allow the user to use specific Compute Units - Basic power management Signed-off-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180728122306.GA5235@ogabbay-vm
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index ec53d8f96d06..13acef526c5b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3307,6 +3307,9 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
3307 atomic_inc(&adev->gpu_reset_counter); 3307 atomic_inc(&adev->gpu_reset_counter);
3308 adev->in_gpu_reset = 1; 3308 adev->in_gpu_reset = 1;
3309 3309
3310 /* Block kfd */
3311 amdgpu_amdkfd_pre_reset(adev);
3312
3310 /* block TTM */ 3313 /* block TTM */
3311 resched = ttm_bo_lock_delayed_workqueue(&adev->mman.bdev); 3314 resched = ttm_bo_lock_delayed_workqueue(&adev->mman.bdev);
3312 3315
@@ -3322,7 +3325,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
3322 if (job && job->base.sched == &ring->sched) 3325 if (job && job->base.sched == &ring->sched)
3323 continue; 3326 continue;
3324 3327
3325 drm_sched_hw_job_reset(&ring->sched, &job->base); 3328 drm_sched_hw_job_reset(&ring->sched, job ? &job->base : NULL);
3326 3329
3327 /* after all hw jobs are reset, hw fence is meaningless, so force_completion */ 3330 /* after all hw jobs are reset, hw fence is meaningless, so force_completion */
3328 amdgpu_fence_driver_force_completion(ring); 3331 amdgpu_fence_driver_force_completion(ring);
@@ -3363,6 +3366,8 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
3363 dev_info(adev->dev, "GPU reset(%d) succeeded!\n",atomic_read(&adev->gpu_reset_counter)); 3366 dev_info(adev->dev, "GPU reset(%d) succeeded!\n",atomic_read(&adev->gpu_reset_counter));
3364 } 3367 }
3365 3368
3369 /*unlock kfd */
3370 amdgpu_amdkfd_post_reset(adev);
3366 amdgpu_vf_error_trans_all(adev); 3371 amdgpu_vf_error_trans_all(adev);
3367 adev->in_gpu_reset = 0; 3372 adev->in_gpu_reset = 0;
3368 mutex_unlock(&adev->lock_reset); 3373 mutex_unlock(&adev->lock_reset);