diff options
author | Peter Zijlstra <peterz@infradead.org> | 2025-04-25 14:55:20 +0200 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2025-04-25 14:55:20 +0200 |
commit | 1caafd919e2a5c483f7a27449f8497fa4b15a44f (patch) | |
tree | 0cfd4f3121273ae2bee75d3b01e376f742a31406 /drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |
parent | 2492e5aba2be064d0604ae23ae0770ecc0168192 (diff) | |
parent | 7da9960b59fb7e590eb8538c9428db55a4ea2d23 (diff) |
Merge branch 'perf/urgent'
Merge urgent fixes for dependencies.
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 26bf896f1444..24ee4710f807 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2548,8 +2548,20 @@ static int amdgpu_pmops_suspend(struct device *dev) adev->in_s0ix = true; else if (amdgpu_acpi_is_s3_active(adev)) adev->in_s3 = true; - if (!adev->in_s0ix && !adev->in_s3) + if (!adev->in_s0ix && !adev->in_s3) { + /* don't allow going deep first time followed by s2idle the next time */ + if (adev->last_suspend_state != PM_SUSPEND_ON && + adev->last_suspend_state != pm_suspend_target_state) { + drm_err_once(drm_dev, "Unsupported suspend state %d\n", + pm_suspend_target_state); + return -EINVAL; + } return 0; + } + + /* cache the state last used for suspend */ + adev->last_suspend_state = pm_suspend_target_state; + return amdgpu_device_suspend(drm_dev, true); } |