FAILED: patch "[PATCH] Revert "drm/amd: Stop evicting resources on APUs in suspend"" failed to apply to 6.12-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x d0ce1aaa8531a4a4707711cab5721374751c51b0
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2025051256-uncork-pointed-310b@gregkh' --subject-prefix 'PATCH 6.12.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From d0ce1aaa8531a4a4707711cab5721374751c51b0 Mon Sep 17 00:00:00 2001
From: Alex Deucher <[email protected]>
Date: Thu, 1 May 2025 13:00:16 -0400
Subject: [PATCH] Revert "drm/amd: Stop evicting resources on APUs in suspend"
This reverts commit 3a9626c816db901def438dc2513622e281186d39.
This breaks S4 because we end up setting the s3/s0ix flags even when we are entering s4 since prepare is used by both flows. The causes both the S3/s0ix and s4 flags to be set which breaks several checks in the driver which assume they are mutually exclusive.
drivers/gpu/drm/amd/amdgpu/amdgpu.h +0 -2
@@ -1614,11 +1614,9 @@ static inline void amdgpu_acpi_get_backlight_caps(struct amdgpu_dm_backlight_cap#if defined(CONFIG_ACPI ) && defined(CONFIG_SUSPEND )bool amdgpu_acpi_is_s3_active (struct amdgpu_device *adev);bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev); -void amdgpu_choose_low_power_state (struct amdgpu_device *adev);#else static inline bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev) {return false; }static inline bool amdgpu_acpi_is_s3_active (struct amdgpu_device *adev) {return false; } -static inline void amdgpu_choose_low_power_state (struct amdgpu_device *adev) { }#endif void amdgpu_register_gpu_instance (struct amdgpu_device *adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +0 -18
@@ -1533,22 +1533,4 @@ bool amdgpu_acpi_is_s0ix_active(struct amdgpu_device *adev) #endif /* CONFIG_AMD_PMC */ } -/** -* amdgpu_choose_low_power_state -* -* @adev: amdgpu_device_pointer -* -* Choose the target low power state for the GPU -*/ -void amdgpu_choose_low_power_state (struct amdgpu_device *adev) -{ -if (adev->in_runpm) -return ; - -if (amdgpu_acpi_is_s0ix_active (adev)) - adev->in_s0ix = true; -else if (amdgpu_acpi_is_s3_active (adev)) - adev->in_s3 = true; -} -#endif /* CONFIG_SUSPEND */
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -9
@@ -4949,15 +4949,13 @@ int amdgpu_device_prepare(struct drm_device *dev)struct amdgpu_device *adev =drm_to_adev (dev);int i, r; -amdgpu_choose_low_power_state (adev); -if (dev->switch_power_state ==DRM_SWITCH_POWER_OFF )return 0 ;/* Evict the majority of BOs before starting suspend sequence */ r =amdgpu_device_evict_resources (adev);if (r) - goto unprepare; +return r;flush_delayed_work (&adev->gfx.gfx_off_delay_work);
@@ -4968,15 +4966,10 @@ int amdgpu_device_prepare(struct drm_device *dev)continue ; r = adev->ip_blocks[i].version->funcs->prepare_suspend (&adev->ip_blocks[i]);if (r) - goto unprepare; +return r; }return 0 ; - -unprepare: - adev->in_s0ix = adev->in_s3 = adev->in_s4 = false; - -return r; }/**