diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index a6b7e367a860..538e5f27d120 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c @@ -83,7 +83,8 @@ static void amdgpu_irq_reset_work_func(struct work_struct *work)  	struct amdgpu_device *adev = container_of(work, struct amdgpu_device,  						  reset_work); -	amdgpu_gpu_reset(adev); +	if (!amdgpu_sriov_vf(adev)) +		amdgpu_gpu_reset(adev);  }  /* Disable *all* interrupts */ @@ -219,6 +220,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev)  	int r = 0;  	spin_lock_init(&adev->irq.lock); + +	if (!adev->enable_virtual_display) +		/* Disable vblank irqs aggressively for power-saving */ +		adev->ddev->vblank_disable_immediate = true; +  	r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc);  	if (r) {  		return r; @@ -262,7 +268,6 @@ void amdgpu_irq_fini(struct amdgpu_device *adev)  {  	unsigned i, j; -	drm_vblank_cleanup(adev->ddev);  	if (adev->irq.installed) {  		drm_irq_uninstall(adev->ddev);  		adev->irq.installed = false; |