diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch new file mode 100644 index 00000000..73e779e6 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1462-drm-amd-powerplay-hwmon-don-t-check-powerplay-when-s.patch @@ -0,0 +1,93 @@ +From fd23bc44a59d894badb8a4614eeb3caf1bc19cd7 Mon Sep 17 00:00:00 2001 +From: Kevin Wang <kevin1.wang@amd.com> +Date: Thu, 24 Jan 2019 19:14:22 +0800 +Subject: [PATCH 1462/2940] drm/amd/powerplay: hwmon don't check powerplay when + sw smu is enabled + +when sw-smu is enabled, the driver won't init powerplay structure. + +Signed-off-by: Kevin Wang <kevin1.wang@amd.com> +Reviewed-by: Huang Rui <ray.huang@amd.com> +Reviewed-by: Likun Gao <Likun.Gao@amd.com> +Acked-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 56 ++++++++++++++------------ + 1 file changed, 30 insertions(+), 26 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +index 925f3898c2f4..a1faf3f8702e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +@@ -2045,18 +2045,20 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, + attr == &sensor_dev_attr_fan1_enable.dev_attr.attr)) + return 0; + +- /* mask fan attributes if we have no bindings for this asic to expose */ +- if ((!adev->powerplay.pp_funcs->get_fan_speed_percent && +- attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't query fan */ +- (!adev->powerplay.pp_funcs->get_fan_control_mode && +- attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't query state */ +- effective_mode &= ~S_IRUGO; +- +- if ((!adev->powerplay.pp_funcs->set_fan_speed_percent && +- attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't manage fan */ +- (!adev->powerplay.pp_funcs->set_fan_control_mode && +- attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't manage state */ +- effective_mode &= ~S_IWUSR; ++ if (!is_support_sw_smu(adev)) { ++ /* mask fan attributes if we have no bindings for this asic to expose */ ++ if ((!adev->powerplay.pp_funcs->get_fan_speed_percent && ++ attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't query fan */ ++ (!adev->powerplay.pp_funcs->get_fan_control_mode && ++ attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't query state */ ++ effective_mode &= ~S_IRUGO; ++ ++ if ((!adev->powerplay.pp_funcs->set_fan_speed_percent && ++ attr == &sensor_dev_attr_pwm1.dev_attr.attr) || /* can't manage fan */ ++ (!adev->powerplay.pp_funcs->set_fan_control_mode && ++ attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr)) /* can't manage state */ ++ effective_mode &= ~S_IWUSR; ++ } + + if ((adev->flags & AMD_IS_APU) && + (attr == &sensor_dev_attr_power1_average.dev_attr.attr || +@@ -2065,20 +2067,22 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, + attr == &sensor_dev_attr_power1_cap.dev_attr.attr)) + return 0; + +- /* hide max/min values if we can't both query and manage the fan */ +- if ((!adev->powerplay.pp_funcs->set_fan_speed_percent && +- !adev->powerplay.pp_funcs->get_fan_speed_percent) && +- (!adev->powerplay.pp_funcs->set_fan_speed_rpm && +- !adev->powerplay.pp_funcs->get_fan_speed_rpm) && +- (attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || +- attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) +- return 0; +- +- if ((!adev->powerplay.pp_funcs->set_fan_speed_rpm && +- !adev->powerplay.pp_funcs->get_fan_speed_rpm) && +- (attr == &sensor_dev_attr_fan1_max.dev_attr.attr || +- attr == &sensor_dev_attr_fan1_min.dev_attr.attr)) +- return 0; ++ if (!is_support_sw_smu(adev)) { ++ /* hide max/min values if we can't both query and manage the fan */ ++ if ((!adev->powerplay.pp_funcs->set_fan_speed_percent && ++ !adev->powerplay.pp_funcs->get_fan_speed_percent) && ++ (!adev->powerplay.pp_funcs->set_fan_speed_rpm && ++ !adev->powerplay.pp_funcs->get_fan_speed_rpm) && ++ (attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || ++ attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) ++ return 0; ++ ++ if ((!adev->powerplay.pp_funcs->set_fan_speed_rpm && ++ !adev->powerplay.pp_funcs->get_fan_speed_rpm) && ++ (attr == &sensor_dev_attr_fan1_max.dev_attr.attr || ++ attr == &sensor_dev_attr_fan1_min.dev_attr.attr)) ++ return 0; ++ } + + /* only APUs have vddnb */ + if (!(adev->flags & AMD_IS_APU) && +-- +2.17.1 + |