[PATCH] drm/amd/powerplay: bypass fan table setup if no fan connected
Deucher, Alexander
Alexander.Deucher at amd.com
Thu Dec 1 14:59:02 UTC 2016
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Hawking Zhang
> Sent: Thursday, December 01, 2016 4:16 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Zhang, Hawking
> Subject: [PATCH] drm/amd/powerplay: bypass fan table setup if no fan
> connected
>
> If vBIOS noFan bit is set, the fan table parameters in thermal controller
> will not get initialized. The driver should avoid to use these uninitialized
> parameter to do calculation. Otherwise, it may trigger divide 0 error.
>
> Change-Id: I76680a5ec5411f59742b65bb70eb7b4a08bda3ef
> Signed-off-by: Hawking Zhang <Hawking.Zhang at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c | 6 ++++++
> drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c | 6 ++++++
> drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c | 6 ++++++
> drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c | 6 ++++++
> 4 files changed, 24 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> index 34523fe..6aeb1d2 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
> @@ -1958,6 +1958,12 @@ int fiji_thermal_setup_fan_table(struct
> pp_hwmgr *hwmgr)
> int res;
> uint64_t tmp64;
>
> + if (hwmgr->thermal_controller.fanInfo.bNoFan) {
> + phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> + PHM_PlatformCaps_MicrocodeFanControl);
> + return 0;
> + }
> +
> if (smu_data->smu7_data.fan_table_start == 0) {
> phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_MicrocodeFanControl);
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
> index b579f0c..a24971a 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smc.c
> @@ -2006,6 +2006,12 @@ int iceland_thermal_setup_fan_table(struct
> pp_hwmgr *hwmgr)
> if (!phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_MicrocodeFanControl))
> return 0;
>
> + if (hwmgr->thermal_controller.fanInfo.bNoFan) {
> + phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> + PHM_PlatformCaps_MicrocodeFanControl);
> + return 0;
> + }
> +
> if (0 == smu7_data->fan_table_start) {
> phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_MicrocodeFanControl);
> return 0;
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> index 8db8e20..5190e82 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smc.c
> @@ -1885,6 +1885,12 @@ int polaris10_thermal_setup_fan_table(struct
> pp_hwmgr *hwmgr)
> int res;
> uint64_t tmp64;
>
> + if (hwmgr->thermal_controller.fanInfo.bNoFan) {
> + phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> + PHM_PlatformCaps_MicrocodeFanControl);
> + return 0;
> + }
> +
> if (smu_data->smu7_data.fan_table_start == 0) {
> phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> PHM_PlatformCaps_MicrocodeFanControl);
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
> index d08f6f1..2e1493c 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smc.c
> @@ -2496,6 +2496,12 @@ int tonga_thermal_setup_fan_table(struct
> pp_hwmgr *hwmgr)
>
> PHM_PlatformCaps_MicrocodeFanControl))
> return 0;
>
> + if (hwmgr->thermal_controller.fanInfo.bNoFan) {
> + phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
> + PHM_PlatformCaps_MicrocodeFanControl);
> + return 0;
> + }
> +
> if (0 == smu_data->smu7_data.fan_table_start) {
> phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
>
> PHM_PlatformCaps_MicrocodeFanControl);
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list