diff options
| author | Dave Airlie <airlied@redhat.com> | 2018-07-30 03:23:40 +0300 | 
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2018-07-30 03:23:50 +0300 | 
| commit | ecd7963f7cf967009882fd56eaee1e87a229bea2 (patch) | |
| tree | 21d8c2583d94f26894202433adf46b98d25bf698 /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |
| parent | 6d52aacd92c60331ec8c3117522f4301b5195e28 (diff) | |
| parent | b5aa3f4aef724e9c0f626dcf69948b22efcc5176 (diff) | |
| download | linux-ecd7963f7cf967009882fd56eaee1e87a229bea2.tar.xz | |
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.c | 7 | 
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,  	atomic_inc(&adev->gpu_reset_counter);  	adev->in_gpu_reset = 1; +	/* Block kfd */ +	amdgpu_amdkfd_pre_reset(adev); +  	/* block TTM */  	resched = ttm_bo_lock_delayed_workqueue(&adev->mman.bdev); @@ -3322,7 +3325,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,  		if (job && job->base.sched == &ring->sched)  			continue; -		drm_sched_hw_job_reset(&ring->sched, &job->base); +		drm_sched_hw_job_reset(&ring->sched, job ? &job->base : NULL);  		/* after all hw jobs are reset, hw fence is meaningless, so force_completion */  		amdgpu_fence_driver_force_completion(ring); @@ -3363,6 +3366,8 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,  		dev_info(adev->dev, "GPU reset(%d) succeeded!\n",atomic_read(&adev->gpu_reset_counter));  	} +	/*unlock kfd */ +	amdgpu_amdkfd_post_reset(adev);  	amdgpu_vf_error_trans_all(adev);  	adev->in_gpu_reset = 0;  	mutex_unlock(&adev->lock_reset); | 
