--- /dev/null
+From ca47518663973083c513cd6b2801dcda0bfaaa99 Mon Sep 17 00:00:00 2001
+From: Mario Limonciello <mario.limonciello@amd.com>
+Date: Mon, 13 Feb 2023 15:10:30 -0600
+Subject: drm/amd: Don't allow s0ix on APUs older than Raven
+
+From: Mario Limonciello <mario.limonciello@amd.com>
+
+commit ca47518663973083c513cd6b2801dcda0bfaaa99 upstream.
+
+APUs before Raven didn't support s0ix. As we just relieved some
+of the safety checks for s0ix to improve power consumption on
+APUs that support it but that are missing BIOS support a new
+blind spot was introduced that a user could "try" to run s0ix.
+
+Plug this hole so that if users try to run s0ix on anything older
+than Raven it will just skip suspend of the GPU.
+
+Fixes: cf488dcd0ab7 ("drm/amd: Allow s0ix without BIOS support")
+Suggested-by: Alexander Deucher <Alexander.Deucher@amd.com>
+Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 3 +++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 7 ++++++-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
+@@ -1083,6 +1083,9 @@ bool amdgpu_acpi_is_s0ix_active(struct a
+ (pm_suspend_target_state != PM_SUSPEND_TO_IDLE))
+ return false;
+
++ if (adev->asic_type < CHIP_RAVEN)
++ return false;
++
+ /*
+ * If ACPI_FADT_LOW_POWER_S0 is not set in the FADT, it is generally
+ * risky to do any special firmware-related preparations for entering
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+@@ -2402,8 +2402,10 @@ static int amdgpu_pmops_suspend(struct d
+
+ if (amdgpu_acpi_is_s0ix_active(adev))
+ adev->in_s0ix = true;
+- else
++ else if (amdgpu_acpi_is_s3_active(adev))
+ adev->in_s3 = true;
++ if (!adev->in_s0ix && !adev->in_s3)
++ return 0;
+ return amdgpu_device_suspend(drm_dev, true);
+ }
+
+@@ -2424,6 +2426,9 @@ static int amdgpu_pmops_resume(struct de
+ struct amdgpu_device *adev = drm_to_adev(drm_dev);
+ int r;
+
++ if (!adev->in_s0ix && !adev->in_s3)
++ return 0;
++
+ /* Avoids registers access if device is physically gone */
+ if (!pci_device_is_present(adev->pdev))
+ adev->no_hw_access = true;