diff options
| author | Yintian Tao <yttao@amd.com> | 2018-08-22 12:08:13 +0300 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-08-28 19:55:20 +0300 | 
| commit | e78196444b43caed136bf424b09352d8433cdb95 (patch) | |
| tree | 509f65f3389f206ae4928a54a45435b7db7e2a06 /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |
| parent | 0c79c0bb872e393d507fb7a0835b2ec124f8266b (diff) | |
| download | linux-e78196444b43caed136bf424b09352d8433cdb95.tar.xz | |
drm/amdgpu: move full access into amdgpu_device_ip_suspend
It will be more safe to make full-acess include both phase1 and phase2.
Then accessing special registeris wherever at phase1 or phase2 will not
block any shutdown and suspend process under virtualization.
Signed-off-by: Yintian Tao <yttao@amd.com>
Acked-by: Alex Deucher <alexander.deucher@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 | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 8f431740c424..a20c13c6f6f1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1932,9 +1932,6 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev)  {  	int i, r; -	if (amdgpu_sriov_vf(adev)) -		amdgpu_virt_request_full_gpu(adev, false); -  	amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);  	amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE); @@ -1953,9 +1950,6 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev)  		}  	} -	if (amdgpu_sriov_vf(adev)) -		amdgpu_virt_release_full_gpu(adev, false); -  	return 0;  } @@ -2007,11 +2001,17 @@ int amdgpu_device_ip_suspend(struct amdgpu_device *adev)  {  	int r; +	if (amdgpu_sriov_vf(adev)) +		amdgpu_virt_request_full_gpu(adev, false); +  	r = amdgpu_device_ip_suspend_phase1(adev);  	if (r)  		return r;  	r = amdgpu_device_ip_suspend_phase2(adev); +	if (amdgpu_sriov_vf(adev)) +		amdgpu_virt_release_full_gpu(adev, false); +  	return r;  } | 
