RE: [PATCH 2/2] drm/amd/powerplay: enable MGPU fan boost feature on Vega10
This feature is only seen on the latest vbios. No requirement for SMU fw. Regards, Evan > -Original Message- > From: Alex Deucher > Sent: 2019年1月23日 12:54 > To: Quan, Evan > Cc: amd-gfx list > Subject: Re: [PATCH 2/2] drm/amd/powerplay: enable MGPU fan boost > feature on Vega10 > > On Tue, Jan 22, 2019 at 10:43 PM Evan Quan wrote: > > > > For those SKUs which support this feature only. > > > > Change-Id: I74de00204d93f951e04073e5c4c4ce9c0d34f662 > > Signed-off-by: Evan Quan > > Is there a minimum smu version number required to support this? Is it safe > to setup the structures and enable it if the using older smu fw? > With that clarified, the series is: > Reviewed-by: Alex Deucher > > Alex > > > --- > > .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c| 1 + > > .../drm/amd/powerplay/hwmgr/vega10_thermal.c | 37 > > > +++ .../drm/amd/powerplay/hwmgr/vega10_thermal. > h | > > 1 + > > 3 files changed, 39 insertions(+) > > > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > > index f0ba4254361b..1a4c6467a36d 100644 > > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > > @@ -5168,6 +5168,7 @@ static const struct pp_hwmgr_func > vega10_hwmgr_funcs = { > > .set_asic_baco_state = vega10_baco_set_state, > > .get_ppfeature_status = vega10_get_ppfeature_status, > > .set_ppfeature_status = vega10_set_ppfeature_status, > > + .enable_mgpu_fan_boost = vega10_enable_mgpu_fan_boost, > > }; > > > > int vega10_hwmgr_init(struct pp_hwmgr *hwmgr) diff --git > > a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > > index 3f807d6c95ce..ba8763daa380 100644 > > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > > @@ -556,6 +556,43 @@ int vega10_thermal_setup_fan_table(struct > pp_hwmgr *hwmgr) > > return ret; > > } > > > > +int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr) { > > + struct vega10_hwmgr *data = hwmgr->backend; > > + PPTable_t *table = &(data->smc_state_table.pp_table); > > + int ret; > > + > > + if (!data->smu_features[GNLD_FAN_CONTROL].supported) > > + return 0; > > + > > + if (!hwmgr->thermal_controller.advanceFanControlParameters. > > + usMGpuThrottlingRPMLimit) > > + return 0; > > + > > + table->FanThrottlingRpm = hwmgr->thermal_controller. > > + > > + advanceFanControlParameters.usMGpuThrottlingRPMLimit; > > + > > + ret = smum_smc_table_manager(hwmgr, > > + (uint8_t > > *)(&(data->smc_state_table.pp_table)), > > + PPTABLE, false); > > + if (ret) { > > + pr_info("Failed to update fan control table in pptable!"); > > + return ret; > > + } > > + > > + ret = vega10_disable_fan_control_feature(hwmgr); > > + if (ret) { > > + pr_info("Attempt to disable SMC fan control feature > > failed!"); > > + return ret; > > + } > > + > > + ret = vega10_enable_fan_control_feature(hwmgr); > > + if (ret) > > + pr_info("Attempt to enable SMC fan control feature > > + failed!"); > > + > > + return ret; > > +} > > + > > /** > > * Start the fan control on the SMC. > > * @paramhwmgr the address of the powerplay hardware manager. > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > > index 21e7c4dfa2ca..4a0ede7c1f07 100644 > > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > > @@ -73,6 +73,7 @@ extern int vega10_thermal_disable_alert(struct > > pp_hwmgr *hwmgr); extern int > > vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr); > extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr, > > struct PP_TemperatureRange *range); > > +extern int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr); > > > > > > #endif > > -- > > 2.20.1 > > > > ___ > > amd-gfx mailing list > > amd-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH 2/2] drm/amd/powerplay: enable MGPU fan boost feature on Vega10
On Tue, Jan 22, 2019 at 10:43 PM Evan Quan wrote: > > For those SKUs which support this feature only. > > Change-Id: I74de00204d93f951e04073e5c4c4ce9c0d34f662 > Signed-off-by: Evan Quan Is there a minimum smu version number required to support this? Is it safe to setup the structures and enable it if the using older smu fw? With that clarified, the series is: Reviewed-by: Alex Deucher Alex > --- > .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c| 1 + > .../drm/amd/powerplay/hwmgr/vega10_thermal.c | 37 +++ > .../drm/amd/powerplay/hwmgr/vega10_thermal.h | 1 + > 3 files changed, 39 insertions(+) > > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > index f0ba4254361b..1a4c6467a36d 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c > @@ -5168,6 +5168,7 @@ static const struct pp_hwmgr_func vega10_hwmgr_funcs = { > .set_asic_baco_state = vega10_baco_set_state, > .get_ppfeature_status = vega10_get_ppfeature_status, > .set_ppfeature_status = vega10_set_ppfeature_status, > + .enable_mgpu_fan_boost = vega10_enable_mgpu_fan_boost, > }; > > int vega10_hwmgr_init(struct pp_hwmgr *hwmgr) > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > index 3f807d6c95ce..ba8763daa380 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c > @@ -556,6 +556,43 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr > *hwmgr) > return ret; > } > > +int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr) > +{ > + struct vega10_hwmgr *data = hwmgr->backend; > + PPTable_t *table = &(data->smc_state_table.pp_table); > + int ret; > + > + if (!data->smu_features[GNLD_FAN_CONTROL].supported) > + return 0; > + > + if (!hwmgr->thermal_controller.advanceFanControlParameters. > + usMGpuThrottlingRPMLimit) > + return 0; > + > + table->FanThrottlingRpm = hwmgr->thermal_controller. > + advanceFanControlParameters.usMGpuThrottlingRPMLimit; > + > + ret = smum_smc_table_manager(hwmgr, > + (uint8_t > *)(&(data->smc_state_table.pp_table)), > + PPTABLE, false); > + if (ret) { > + pr_info("Failed to update fan control table in pptable!"); > + return ret; > + } > + > + ret = vega10_disable_fan_control_feature(hwmgr); > + if (ret) { > + pr_info("Attempt to disable SMC fan control feature failed!"); > + return ret; > + } > + > + ret = vega10_enable_fan_control_feature(hwmgr); > + if (ret) > + pr_info("Attempt to enable SMC fan control feature failed!"); > + > + return ret; > +} > + > /** > * Start the fan control on the SMC. > * @paramhwmgr the address of the powerplay hardware manager. > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > index 21e7c4dfa2ca..4a0ede7c1f07 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h > @@ -73,6 +73,7 @@ extern int vega10_thermal_disable_alert(struct pp_hwmgr > *hwmgr); > extern int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr); > extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr, > struct PP_TemperatureRange *range); > +extern int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr); > > > #endif > -- > 2.20.1 > > ___ > amd-gfx mailing list > amd-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH 2/2] drm/amd/powerplay: enable MGPU fan boost feature on Vega10
For those SKUs which support this feature only. Change-Id: I74de00204d93f951e04073e5c4c4ce9c0d34f662 Signed-off-by: Evan Quan --- .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c| 1 + .../drm/amd/powerplay/hwmgr/vega10_thermal.c | 37 +++ .../drm/amd/powerplay/hwmgr/vega10_thermal.h | 1 + 3 files changed, 39 insertions(+) diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c index f0ba4254361b..1a4c6467a36d 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c @@ -5168,6 +5168,7 @@ static const struct pp_hwmgr_func vega10_hwmgr_funcs = { .set_asic_baco_state = vega10_baco_set_state, .get_ppfeature_status = vega10_get_ppfeature_status, .set_ppfeature_status = vega10_set_ppfeature_status, + .enable_mgpu_fan_boost = vega10_enable_mgpu_fan_boost, }; int vega10_hwmgr_init(struct pp_hwmgr *hwmgr) diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c index 3f807d6c95ce..ba8763daa380 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c @@ -556,6 +556,43 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) return ret; } +int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr) +{ + struct vega10_hwmgr *data = hwmgr->backend; + PPTable_t *table = &(data->smc_state_table.pp_table); + int ret; + + if (!data->smu_features[GNLD_FAN_CONTROL].supported) + return 0; + + if (!hwmgr->thermal_controller.advanceFanControlParameters. + usMGpuThrottlingRPMLimit) + return 0; + + table->FanThrottlingRpm = hwmgr->thermal_controller. + advanceFanControlParameters.usMGpuThrottlingRPMLimit; + + ret = smum_smc_table_manager(hwmgr, + (uint8_t *)(&(data->smc_state_table.pp_table)), + PPTABLE, false); + if (ret) { + pr_info("Failed to update fan control table in pptable!"); + return ret; + } + + ret = vega10_disable_fan_control_feature(hwmgr); + if (ret) { + pr_info("Attempt to disable SMC fan control feature failed!"); + return ret; + } + + ret = vega10_enable_fan_control_feature(hwmgr); + if (ret) + pr_info("Attempt to enable SMC fan control feature failed!"); + + return ret; +} + /** * Start the fan control on the SMC. * @paramhwmgr the address of the powerplay hardware manager. diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h index 21e7c4dfa2ca..4a0ede7c1f07 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.h @@ -73,6 +73,7 @@ extern int vega10_thermal_disable_alert(struct pp_hwmgr *hwmgr); extern int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr); extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr, struct PP_TemperatureRange *range); +extern int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr); #endif -- 2.20.1 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx