Re: [PATCH 2/3] drm/amd: Introduce new enum for BAMACO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 11/29/2023 12:22 AM, Mario Limonciello wrote:
Rather than plumbing module parameter deep into IP declare BAMACO
runpm mode at amdgpu_driver_set_runtime_pm_mode() and then detect
this mode in consumers.

Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c        | 2 +-
  drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h        | 1 +
  drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 2 +-
  drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 5 +++--
  4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 29381da08fd5..c6c87ab71d94 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -143,7 +143,7 @@ static void amdgpu_driver_set_runtime_pm_mode(struct amdgpu_device *adev)
  	case 2:
  		// TODO: adjust plumbing to be able to pull PP table to check MACO support as well
  		if (amdgpu_device_supports_baco(dev))
-			adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
+			adev->pm.rpm_mode = AMDGPU_RUNPM_BAMACO;
  		else
  			dev_err(adev->dev, "BAMACO is not supported on this ASIC\n");
  		return;
diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
index d76b0a60db44..3434c31b434b 100644
--- a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
+++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
@@ -50,6 +50,7 @@ enum amdgpu_runpm_mode {
  	AMDGPU_RUNPM_PX,
  	AMDGPU_RUNPM_BOCO,
  	AMDGPU_RUNPM_BACO,
+	AMDGPU_RUNPM_BAMACO,
  };
struct amdgpu_ps {
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
index 5a314d0316c1..64c8783b4118 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
@@ -1597,7 +1597,7 @@ int smu_v11_0_baco_set_state(struct smu_context *smu, enum smu_baco_state state)
  		case IP_VERSION(11, 0, 11):
  		case IP_VERSION(11, 0, 12):
  		case IP_VERSION(11, 0, 13):
-			if (amdgpu_runtime_pm == 2)
+			if (adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO)
  				ret = smu_cmn_send_smc_msg_with_param(smu,
  								      SMU_MSG_EnterBaco,
  								      D3HOT_BAMACO_SEQUENCE,
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
index 3c595ac897d6..b77763d6c72f 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
@@ -2259,7 +2259,8 @@ int smu_v13_0_baco_set_state(struct smu_context *smu,
  	if (state == SMU_BACO_STATE_ENTER) {
  		ret = smu_cmn_send_smc_msg_with_param(smu,
  						      SMU_MSG_EnterBaco,
-						      (smu_baco->maco_support && amdgpu_runtime_pm != 1) ?
+						      (smu_baco->maco_support &&
+						      adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO) ?

This also doesn't work as per the legacy logic. In legacy logic, BAMACO is given preference if supported or if BACO is not forced when both are supported. As per the new logic, BAMACO is preferred only if forced through module param.

Thanks,
Lijo
  						      BACO_SEQ_BAMACO : BACO_SEQ_BACO,
  						      NULL);
  	} else {
@@ -2288,7 +2289,7 @@ int smu_v13_0_baco_enter(struct smu_context *smu)
if (adev->in_runpm && smu_cmn_is_audio_func_enabled(adev)) {
  		return smu_v13_0_baco_set_armd3_sequence(smu,
-				(smu_baco->maco_support && amdgpu_runtime_pm != 1) ?
+				(smu_baco->maco_support && adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO) ?
  					BACO_SEQ_BAMACO : BACO_SEQ_BACO);
  	} else {
  		ret = smu_v13_0_baco_set_state(smu, SMU_BACO_STATE_ENTER);




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux