Commit 267cace5 authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher
Browse files

drm/amd: Fix shutdown (again) on some SMU v13.0.4/11 platforms



commit cd94d1b1 ("dm/amd/pm: Fix problems with reboot/shutdown for
some SMU 13.0.4/13.0.11 users") attempted to fix shutdown issues
that were reported since commit 31729e8c ("drm/amd/pm: fixes a
random hang in S4 for SMU v13.0.4/11") but caused issues for some
people.

Adjust the workaround flow to properly only apply in the S4 case:
-> For shutdown go through SMU_MSG_PrepareMp1ForUnload
-> For S4 go through SMU_MSG_GfxDeviceDriverReset and
   SMU_MSG_PrepareMp1ForUnload

Reported-and-tested-by: default avatarlectrode <electrodexsnet@gmail.com>
Closes: https://github.com/void-linux/void-packages/issues/50417


Cc: stable@vger.kernel.org
Fixes: cd94d1b1 ("dm/amd/pm: Fix problems with reboot/shutdown for some SMU 13.0.4/13.0.11 users")
Reviewed-by: default avatarTim Huang <Tim.Huang@amd.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c3f38fa6
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -226,7 +226,8 @@ static int smu_v13_0_4_system_features_control(struct smu_context *smu, bool en)
	struct amdgpu_device *adev = smu->adev;
	int ret = 0;

	if (!en && adev->in_s4) {
	if (!en && !adev->in_s0ix) {
		if (adev->in_s4) {
			/* Adds a GFX reset as workaround just before sending the
			 * MP1_UNLOAD message to prevent GC/RLC/PMFW from entering
			 * an invalid state.
@@ -235,6 +236,7 @@ static int smu_v13_0_4_system_features_control(struct smu_context *smu, bool en)
							      SMU_RESET_MODE_2, NULL);
			if (ret)
				return ret;
		}

		ret = smu_cmn_send_smc_msg(smu, SMU_MSG_PrepareMp1ForUnload, NULL);
	}