Commit e712d1d7 authored by Alex Deucher's avatar Alex Deucher Committed by Oleksandr Natalenko
Browse files

drm/amdgpu: fix shutdown with s0ix

For shutdown needs to be handled differently and s0ix.  Add
a new flag to shutdown and use it to adjust behavior appropriately.

Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1499
Fixes: 628c36d7

 ("drm/amdgpu: update amdgpu device suspend/resume sequence for s0i3 support")
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: Prike Liang <Prike.Liang@amd.com>
parent 6c6a2b5a
......@@ -1002,6 +1002,7 @@ struct amdgpu_device {
/* s3/s4 mask */
bool in_suspend;
bool in_hibernate;
bool in_shutdown;
atomic_t in_gpu_reset;
enum pp_mp1_state mp1_state;
......
......@@ -2666,7 +2666,8 @@ static int amdgpu_device_ip_suspend_phase1(struct amdgpu_device *adev)
{
int i, r;
if (!amdgpu_acpi_is_s0ix_supported(adev) || amdgpu_in_reset(adev)) {
if (adev->in_shutdown ||
!amdgpu_acpi_is_s0ix_supported(adev) || amdgpu_in_reset(adev)) {
amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);
amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
}
......@@ -3726,7 +3727,8 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
amdgpu_fence_driver_suspend(adev);
if (!amdgpu_acpi_is_s0ix_supported(adev) || amdgpu_in_reset(adev))
if (adev->in_shutdown ||
!amdgpu_acpi_is_s0ix_supported(adev) || amdgpu_in_reset(adev))
r = amdgpu_device_ip_suspend_phase2(adev);
else
amdgpu_gfx_state_change_set(adev, sGpuChangeState_D3Entry);
......
......@@ -1259,6 +1259,7 @@ amdgpu_pci_shutdown(struct pci_dev *pdev)
if (amdgpu_ras_intr_triggered())
return;
adev->in_shutdown = true;
/* if we are running in a VM, make sure the device
* torn down properly on reboot/shutdown.
* unfortunately we can't detect certain
......@@ -1268,6 +1269,7 @@ amdgpu_pci_shutdown(struct pci_dev *pdev)
adev->mp1_state = PP_MP1_STATE_UNLOAD;
amdgpu_device_ip_suspend(adev);
adev->mp1_state = PP_MP1_STATE_NONE;
adev->in_shutdown = false;
}
static int amdgpu_pmops_suspend(struct device *dev)
......
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