-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
0 additions
and
158 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -97,161 +97,3 @@ index f4b210ab061291..837d0dbb28ea08 100644 | |
depends on HAVE_ARCH_MMAP_RND_COMPAT_BITS | ||
help | ||
This value can be used to select the number of bits to use to | ||
|
||
From 3cfb591e23181791195a74efe2e9065e0d4bd201 Mon Sep 17 00:00:00 2001 | ||
From: Etienne JUVIGNY <[email protected]> | ||
Date: Mon, 15 Jan 2024 19:09:39 +0100 | ||
Subject: Revert: drm/amd/pm: fix the high voltage and temperature issue | ||
|
||
This was supposed to fix the high voltage and temperature issue after the driver is unloaded on smu 13.0.0, | ||
smu 13.0.7 and smu 13.0.10, but introduced an arguably more annoying issue. Let's revert it until a proper fix is offered. | ||
|
||
Fixes rdna3 shutdown/reboot hang. | ||
|
||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | ||
index 93cf73d6f..960966f4b 100644 | ||
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | ||
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | ||
@@ -4050,23 +4050,13 @@ int amdgpu_device_init(struct amdgpu_device *adev, | ||
} | ||
} | ||
} else { | ||
- switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) { | ||
- case IP_VERSION(13, 0, 0): | ||
- case IP_VERSION(13, 0, 7): | ||
- case IP_VERSION(13, 0, 10): | ||
- r = psp_gpu_reset(adev); | ||
- break; | ||
- default: | ||
- tmp = amdgpu_reset_method; | ||
- /* It should do a default reset when loading or reloading the driver, | ||
- * regardless of the module parameter reset_method. | ||
- */ | ||
- amdgpu_reset_method = AMD_RESET_METHOD_NONE; | ||
- r = amdgpu_asic_reset(adev); | ||
- amdgpu_reset_method = tmp; | ||
- break; | ||
- } | ||
- | ||
+ tmp = amdgpu_reset_method; | ||
+ /* It should do a default reset when loading or reloading the driver, | ||
+ * regardless of the module parameter reset_method. | ||
+ */ | ||
+ amdgpu_reset_method = AMD_RESET_METHOD_NONE; | ||
+ r = amdgpu_asic_reset(adev); | ||
+ amdgpu_reset_method = tmp; | ||
if (r) { | ||
dev_err(adev->dev, "asic reset on init failed\n"); | ||
goto failed; | ||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | ||
index e1a5ee911..308ebeb43 100644 | ||
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | ||
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | ||
@@ -733,7 +733,7 @@ static int smu_early_init(void *handle) | ||
smu->adev = adev; | ||
smu->pm_enabled = !!amdgpu_dpm; | ||
smu->is_apu = false; | ||
- smu->smu_baco.state = SMU_BACO_STATE_NONE; | ||
+ smu->smu_baco.state = SMU_BACO_STATE_EXIT; | ||
smu->smu_baco.platform_support = false; | ||
smu->user_dpm_profile.fan_mode = -1; | ||
|
||
@@ -1753,31 +1753,10 @@ static int smu_smc_hw_cleanup(struct smu_context *smu) | ||
return 0; | ||
} | ||
|
||
-static int smu_reset_mp1_state(struct smu_context *smu) | ||
-{ | ||
- struct amdgpu_device *adev = smu->adev; | ||
- int ret = 0; | ||
- | ||
- if ((!adev->in_runpm) && (!adev->in_suspend) && | ||
- (!amdgpu_in_reset(adev))) | ||
- switch (amdgpu_ip_version(adev, MP1_HWIP, 0)) { | ||
- case IP_VERSION(13, 0, 0): | ||
- case IP_VERSION(13, 0, 7): | ||
- case IP_VERSION(13, 0, 10): | ||
- ret = smu_set_mp1_state(smu, PP_MP1_STATE_UNLOAD); | ||
- break; | ||
- default: | ||
- break; | ||
- } | ||
- | ||
- return ret; | ||
-} | ||
- | ||
static int smu_hw_fini(void *handle) | ||
{ | ||
struct amdgpu_device *adev = (struct amdgpu_device *)handle; | ||
struct smu_context *smu = adev->powerplay.pp_handle; | ||
- int ret; | ||
|
||
if (amdgpu_sriov_vf(adev) && !amdgpu_sriov_is_pp_one_vf(adev)) | ||
return 0; | ||
@@ -1795,15 +1774,7 @@ static int smu_hw_fini(void *handle) | ||
|
||
adev->pm.dpm_enabled = false; | ||
|
||
- ret = smu_smc_hw_cleanup(smu); | ||
- if (ret) | ||
- return ret; | ||
- | ||
- ret = smu_reset_mp1_state(smu); | ||
- if (ret) | ||
- return ret; | ||
- | ||
- return 0; | ||
+ return smu_smc_hw_cleanup(smu); | ||
} | ||
|
||
static void smu_late_fini(void *handle) | ||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | ||
index f8b2e6cc2..e8329d157 100644 | ||
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | ||
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | ||
@@ -419,7 +419,6 @@ enum smu_reset_mode { | ||
enum smu_baco_state { | ||
SMU_BACO_STATE_ENTER = 0, | ||
SMU_BACO_STATE_EXIT, | ||
- SMU_BACO_STATE_NONE, | ||
}; | ||
|
||
struct smu_baco_context { | ||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | ||
index 82c4e1f1c..2ba77b1d1 100644 | ||
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | ||
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | ||
@@ -2772,13 +2766,7 @@ static int smu_v13_0_0_set_mp1_state(struct smu_context *smu, | ||
|
||
switch (mp1_state) { | ||
case PP_MP1_STATE_UNLOAD: | ||
- ret = smu_cmn_send_smc_msg_with_param(smu, | ||
- SMU_MSG_PrepareMp1ForUnload, | ||
- 0x55, NULL); | ||
- | ||
- if (!ret && smu->smu_baco.state == SMU_BACO_STATE_EXIT) | ||
- ret = smu_v13_0_disable_pmfw_state(smu); | ||
- | ||
+ ret = smu_cmn_set_mp1_state(smu, mp1_state); | ||
break; | ||
default: | ||
/* Ignore others */ | ||
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | ||
index 81eafed76..19c1289d0 100644 | ||
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | ||
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | ||
@@ -2499,13 +2499,7 @@ static int smu_v13_0_7_set_mp1_state(struct smu_context *smu, | ||
|
||
switch (mp1_state) { | ||
case PP_MP1_STATE_UNLOAD: | ||
- ret = smu_cmn_send_smc_msg_with_param(smu, | ||
- SMU_MSG_PrepareMp1ForUnload, | ||
- 0x55, NULL); | ||
- | ||
- if (!ret && smu->smu_baco.state == SMU_BACO_STATE_EXIT) | ||
- ret = smu_v13_0_disable_pmfw_state(smu); | ||
- | ||
+ ret = smu_cmn_set_mp1_state(smu, mp1_state); | ||
break; | ||
default: | ||
/* Ignore others */ |