Commit d2a197a4 authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher

drm/amd: Only run s3 or s0ix if system is configured properly

This will cause misconfigured systems to not run the GPU suspend
routines.

* In APUs that are properly configured system will go into s2idle.
* In APUs that are intended to be S3 but user selects
  s2idle the GPU will stay fully powered for the suspend.
* In APUs that are intended to be s2idle and system misconfigured
  the GPU will stay fully powered for the suspend.
* In systems that are intended to be s2idle, but AMD dGPU is also
  present, the dGPU will go through S3
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 18b66ace
...@@ -2263,6 +2263,7 @@ static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work) ...@@ -2263,6 +2263,7 @@ static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work)
static int amdgpu_pmops_prepare(struct device *dev) static int amdgpu_pmops_prepare(struct device *dev)
{ {
struct drm_device *drm_dev = dev_get_drvdata(dev); struct drm_device *drm_dev = dev_get_drvdata(dev);
struct amdgpu_device *adev = drm_to_adev(drm_dev);
/* Return a positive number here so /* Return a positive number here so
* DPM_FLAG_SMART_SUSPEND works properly * DPM_FLAG_SMART_SUSPEND works properly
...@@ -2271,6 +2272,13 @@ static int amdgpu_pmops_prepare(struct device *dev) ...@@ -2271,6 +2272,13 @@ static int amdgpu_pmops_prepare(struct device *dev)
return pm_runtime_suspended(dev) && return pm_runtime_suspended(dev) &&
pm_suspend_via_firmware(); pm_suspend_via_firmware();
/* if we will not support s3 or s2i for the device
* then skip suspend
*/
if (!amdgpu_acpi_is_s0ix_active(adev) &&
!amdgpu_acpi_is_s3_active(adev))
return 1;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment