diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 9546adc8a76f..23692e5d4d13 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -583,10 +583,14 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)  		if (adev->gfx.gfx_off_req_count == 0 &&  		    !adev->gfx.gfx_off_state) {  			/* If going to s2idle, no need to wait */ -			if (adev->in_s0ix) -				delay = GFX_OFF_NO_DELAY; -			schedule_delayed_work(&adev->gfx.gfx_off_delay_work, +			if (adev->in_s0ix) { +				if (!amdgpu_dpm_set_powergating_by_smu(adev, +						AMD_IP_BLOCK_TYPE_GFX, true)) +					adev->gfx.gfx_off_state = true; +			} else { +				schedule_delayed_work(&adev->gfx.gfx_off_delay_work,  					      delay); +			}  		}  	} else {  		if (adev->gfx.gfx_off_req_count == 0) { | 
