That makes sense. Reviewed-by: Kent Russell <kent.russell@xxxxxxx> > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Evan > Quan > Sent: Tuesday, March 26, 2019 5:34 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Quan, Evan <Evan.Quan@xxxxxxx>; Russell, Kent > <Kent.Russell@xxxxxxx> > Subject: [PATCH] drm/amd/powerplay: update current profile mode only > when it's really applied > > No need to update current profile mode if the new profile mode does not > take effect in fact. > > Change-Id: If24474d201840bfaefacc189f6a6ff6856695dff > Signed-off-by: Evan Quan <evan.quan@xxxxxxx> > --- > drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 9 +++++---- > drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c | 13 +++++++--- > --- > 2 files changed, 12 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > index ed6c638700f5..85a536924571 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > @@ -4904,13 +4904,12 @@ static int > vega10_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui > uint8_t FPS; > uint8_t use_rlc_busy; > uint8_t min_active_level; > - > - hwmgr->power_profile_mode = input[size]; > + uint32_t power_profile_mode = input[size]; > > smum_send_msg_to_smc_with_parameter(hwmgr, > PPSMC_MSG_SetWorkloadMask, > - 1<<hwmgr- > >power_profile_mode); > + 1 << power_profile_mode); > > - if (hwmgr->power_profile_mode == > PP_SMC_POWER_PROFILE_CUSTOM) { > + if (power_profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) { > if (size == 0 || size > 4) > return -EINVAL; > > @@ -4924,6 +4923,8 @@ static int vega10_set_power_profile_mode(struct > pp_hwmgr *hwmgr, long *input, ui > use_rlc_busy << 16 | > min_active_level<<24); > } > > + hwmgr->power_profile_mode = power_profile_mode; > + > return 0; > } > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c > index 664544e7fcdc..3f349ada8de0 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c > @@ -3819,15 +3819,14 @@ static int > vega20_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui > { > DpmActivityMonitorCoeffInt_t activity_monitor; > int workload_type, result = 0; > + uint32_t power_profile_mode = input[size]; > > - hwmgr->power_profile_mode = input[size]; > - > - if (hwmgr->power_profile_mode > > PP_SMC_POWER_PROFILE_CUSTOM) { > - pr_err("Invalid power profile mode %d\n", hwmgr- > >power_profile_mode); > + if (power_profile_mode > PP_SMC_POWER_PROFILE_CUSTOM) { > + pr_err("Invalid power profile mode %d\n", > power_profile_mode); > return -EINVAL; > } > > - if (hwmgr->power_profile_mode == > PP_SMC_POWER_PROFILE_CUSTOM) { > + if (power_profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) { > if (size < 10) > return -EINVAL; > > @@ -3895,10 +3894,12 @@ static int > vega20_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui > > /* conv PP_SMC_POWER_PROFILE* to WORKLOAD_PPLIB_*_BIT */ > workload_type = > - conv_power_profile_to_pplib_workload(hwmgr- > >power_profile_mode); > + > conv_power_profile_to_pplib_workload(power_profile_mode); > smum_send_msg_to_smc_with_parameter(hwmgr, > PPSMC_MSG_SetWorkloadMask, > 1 << workload_type); > > + hwmgr->power_profile_mode = power_profile_mode; > + > return 0; > } > > -- > 2.21.0 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx