diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 20 | 
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index bb1c025d9001..29e9419a914b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -680,7 +680,7 @@ MODULE_PARM_DESC(sched_policy,   * Maximum number of processes that HWS can schedule concurrently. The maximum is the   * number of VMIDs assigned to the HWS, which is also the default.   */ -int hws_max_conc_proc = 8; +int hws_max_conc_proc = -1;  module_param(hws_max_conc_proc, int, 0444);  MODULE_PARM_DESC(hws_max_conc_proc,  	"Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))"); @@ -2323,18 +2323,23 @@ static int amdgpu_pmops_suspend(struct device *dev)  {  	struct drm_device *drm_dev = dev_get_drvdata(dev);  	struct amdgpu_device *adev = drm_to_adev(drm_dev); -	int r;  	if (amdgpu_acpi_is_s0ix_active(adev))  		adev->in_s0ix = true;  	else  		adev->in_s3 = true; -	r = amdgpu_device_suspend(drm_dev, true); -	if (r) -		return r; +	return amdgpu_device_suspend(drm_dev, true); +} + +static int amdgpu_pmops_suspend_noirq(struct device *dev) +{ +	struct drm_device *drm_dev = dev_get_drvdata(dev); +	struct amdgpu_device *adev = drm_to_adev(drm_dev); +  	if (!adev->in_s0ix) -		r = amdgpu_asic_reset(adev); -	return r; +		return amdgpu_asic_reset(adev); + +	return 0;  }  static int amdgpu_pmops_resume(struct device *dev) @@ -2575,6 +2580,7 @@ static const struct dev_pm_ops amdgpu_pm_ops = {  	.prepare = amdgpu_pmops_prepare,  	.complete = amdgpu_pmops_complete,  	.suspend = amdgpu_pmops_suspend, +	.suspend_noirq = amdgpu_pmops_suspend_noirq,  	.resume = amdgpu_pmops_resume,  	.freeze = amdgpu_pmops_freeze,  	.thaw = amdgpu_pmops_thaw,  | 
