[PATCH] drm/amd/pm: ac/dc change for smu_v13_0

Quan, Evan Evan.Quan at amd.com
Fri Jul 8 03:38:17 UTC 2022


[AMD Official Use Only - General]



> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of
> Kenneth Feng
> Sent: Thursday, July 7, 2022 10:27 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Feng, Kenneth <Kenneth.Feng at amd.com>
> Subject: [PATCH] drm/amd/pm: ac/dc change for smu_v13_0
> 
> fixed the issue: gpu runs in dc mode but it is expected to be in ac mode.
> this causes the lower performance on smu_v13_0
> 
> Signed-off-by: Kenneth Feng <kenneth.feng at amd.com>
> ---
>  .../pm/swsmu/inc/pmfw_if/smu_v13_0_7_ppsmc.h  |  9 ++++--
>  drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h  |  1 +
>  .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c    | 28
> ++++++++++++++++++-
>  .../drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c  |  2 ++
>  4 files changed, 37 insertions(+), 3 deletions(-)
> 
> diff --git
> a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_7_ppsmc.h
> b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_7_ppsmc.h
> index 3f2d0a9e4745..6aaefca9b595 100644
> ---
> a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_7_ppsmc.h
> +++
> b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_7_ppsmc.h
> @@ -128,7 +128,12 @@
>  #define PPSMC_MSG_EnableAudioStutterWA           0x44
>  #define PPSMC_MSG_PowerUpUmsch                   0x45
>  #define PPSMC_MSG_PowerDownUmsch                 0x46
> -#define PPSMC_Message_Count                      0x4C
> -
> +#define PPSMC_MSG_SetDcsArch                     0x47
> +#define PPSMC_MSG_TriggerVFFLR                   0x48
> +#define PPSMC_MSG_SetNumBadMemoryPagesRetired    0x49
> +#define PPSMC_MSG_SetBadMemoryPagesRetiredFlagsPerChannel 0x4A
> +#define PPSMC_MSG_SetPriorityDeltaGain           0x4B
> +#define PPSMC_MSG_AllowIHHostInterrupt           0x4C
> +#define PPSMC_Message_Count                      0x4D
> 
>  #endif
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h
> b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h
> index a1cb8e73e171..19084a4fcb2b 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h
> +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h
> @@ -74,6 +74,7 @@
>         __SMU_DUMMY_MAP(OverDriveSetPercentage),       \
>         __SMU_DUMMY_MAP(SetMinDeepSleepDcefclk),       \
>         __SMU_DUMMY_MAP(ReenableAcDcInterrupt),        \
> +       __SMU_DUMMY_MAP(AllowIHHostInterrupt),        \
>         __SMU_DUMMY_MAP(NotifyPowerSource),            \
>         __SMU_DUMMY_MAP(SetUclkFastSwitch),            \
>         __SMU_DUMMY_MAP(SetUclkDownHyst),              \
> 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 0e59ab2192bf..0328bc12ca21 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
> @@ -1084,9 +1084,35 @@ int smu_v13_0_set_power_limit(struct
> smu_context *smu,
>  	return 0;
>  }
> 
> +static int smu_v13_0_allow_ih_interrupt(struct smu_context *smu)
> +{
> +	return smu_cmn_send_smc_msg(smu,
> +				    SMU_MSG_AllowIHHostInterrupt,
> +				    NULL);
> +}
> +
> +static int smu_v13_0_process_pending_interrupt(struct smu_context *smu)
> +{
> +	int ret = 0;
> +
> +	if (smu->dc_controlled_by_gpio &&
> +	    smu_cmn_feature_is_enabled(smu, SMU_FEATURE_ACDC_BIT))
> +		ret = smu_v13_0_allow_ih_interrupt(smu);
> +
> +	return ret;
> +}
> +
>  int smu_v13_0_enable_thermal_alert(struct smu_context *smu)
>  {
> -	return amdgpu_irq_get(smu->adev, &smu->irq_source, 0);
> +	int ret = 0;
> +
> +	if (smu->smu_table.thermal_controller_type) {
> +		ret = amdgpu_irq_get(smu->adev, &smu->irq_source, 0);
> +		if (ret)
> +			return ret;
> +	}
[Quan, Evan] Please drop the thermal_controller_type check here. It was dropped intentionally by the commit below
184586693002 drm/amd/pm: drop unneeded thermal_controller_type check

Other than that, the patch is reviewed-by: Evan Quan <evan.quan at amd.com>
> +
> +	return smu_v13_0_process_pending_interrupt(smu);
>  }
> 
>  int smu_v13_0_disable_thermal_alert(struct smu_context *smu)
> 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 193222fdd1c4..6259a85bc818 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
> @@ -111,6 +111,8 @@ static struct cmn2asic_msg_mapping
> smu_v13_0_7_message_map[SMU_MSG_MAX_COUNT] =
>  	MSG_MAP(PowerDownJpeg,
> 	PPSMC_MSG_PowerDownJpeg,               0),
>  	MSG_MAP(GetDcModeMaxDpmFreq,
> 	PPSMC_MSG_GetDcModeMaxDpmFreq,         1),
>  	MSG_MAP(OverridePcieParameters,
> 	PPSMC_MSG_OverridePcieParameters,      0),
> +	MSG_MAP(ReenableAcDcInterrupt,
> 	PPSMC_MSG_ReenableAcDcInterrupt,       0),
> +	MSG_MAP(AllowIHHostInterrupt,
> 	PPSMC_MSG_AllowIHHostInterrupt,       0),
>  	MSG_MAP(DramLogSetDramAddrHigh,
> 	PPSMC_MSG_DramLogSetDramAddrHigh,      0),
>  	MSG_MAP(DramLogSetDramAddrLow,
> 	PPSMC_MSG_DramLogSetDramAddrLow,       0),
>  	MSG_MAP(DramLogSetDramSize,
> 	PPSMC_MSG_DramLogSetDramSize,          0),
> --
> 2.25.1


More information about the amd-gfx mailing list