Can you confirm that the save custom profile settings are not lost after resume? With that confirmed, the patch is Reviewed-by: Evan Quan <evan.quan@xxxxxxx> > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of > Russell, Kent > Sent: 2019年4月1日 19:27 > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Russell, Kent <Kent.Russell@xxxxxxx> > Subject: [PATCH 1/2] drm/amdgpu: Allow switching to CUSTOM profile on > Vega10 v2 > > Don't return an error if the CUSTOM profile is selected, just apply it with the > values saved to the GPU. But ensure that we zero out the copy stored in > adev to ensure that a valid profile has been submitted at some point first > > v2: Fix comment that wasn't updated from previous patch > > Change-Id: Iafa5994e89ce00d3a124285b3435b581ec0e5d3b > Signed-off-by: Kent Russell <kent.russell@xxxxxxx> > --- > .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 23 > ++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > index 85a536924571..476a072027a6 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > @@ -1427,6 +1427,15 @@ static int > vega10_setup_default_dpm_tables(struct pp_hwmgr *hwmgr) > > vega10_setup_default_pcie_table(hwmgr); > > + /* Zero out the saved copy of the CUSTOM profile > + * This will be checked when trying to set the profile > + * and will require that new values be passed in > + */ > + data->custom_profile_mode[0] = 0; > + data->custom_profile_mode[1] = 0; > + data->custom_profile_mode[2] = 0; > + data->custom_profile_mode[3] = 0; > + > /* save a copy of the default DPM table */ > memcpy(&(data->golden_dpm_table), &(data->dpm_table), > sizeof(struct vega10_dpm_table)); > @@ -4910,9 +4919,20 @@ static int vega10_set_power_profile_mode(struct > pp_hwmgr *hwmgr, long *input, ui > 1 << power_profile_mode); > > if (power_profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) { > - if (size == 0 || size > 4) > + if (size != 0 && size != 4) > return -EINVAL; > > + /* If size = 0 and the CUSTOM profile has been set already > + * then just apply the profile. The copy stored in the hwmgr > + * is zeroed out on init > + */ > + if (size == 0) { > + if (data->custom_profile_mode[0] != 0) > + goto out; > + else > + return -EINVAL; > + } > + > data->custom_profile_mode[0] = busy_set_point = input[0]; > data->custom_profile_mode[1] = FPS = input[1]; > data->custom_profile_mode[2] = use_rlc_busy = input[2]; > @@ -4923,6 +4943,7 @@ static int vega10_set_power_profile_mode(struct > pp_hwmgr *hwmgr, long *input, ui > use_rlc_busy << 16 | > min_active_level<<24); > } > > +out: > hwmgr->power_profile_mode = power_profile_mode; > > return 0; > -- > 2.17.1 > > _______________________________________________ > 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