linux/drivers/thermal
Srinivas Pandruvada 117e4e5bd9 thermal: intel: Avoid updating unsupported THERM_STATUS_CLEAR mask bits
Some older processors don't allow BIT(13) and BIT(15) in the current
mask set by "THERM_STATUS_CLEAR_CORE_MASK". This results in:

unchecked MSR access error: WRMSR to 0x19c (tried to
write 0x000000000000aaa8) at rIP: 0xffffffff816f66a6
(throttle_active_work+0xa6/0x1d0)

To avoid unchecked MSR issues, check CPUID for each relevant feature and
use that information to set the supported feature bits only in the
"clear" mask for cores. Do the same for the analogous package mask set
by "THERM_STATUS_CLEAR_PKG_MASK".

Introduce functions thermal_intr_init_core_clear_mask() and
thermal_intr_init_pkg_clear_mask() to set core and package mask bits,
respectively. These functions are called during initialization.

Fixes: 6fe1e64b60 ("thermal: intel: Prevent accidental clearing of HFI status")
Reported-by: Rui Salvaterra <rsalvaterra@gmail.com>
Link: https://lore.kernel.org/lkml/cdf43fb423368ee3994124a9e8c9b4f8d00712c6.camel@linux.intel.com/T/
Tested-by: Rui Salvaterra <rsalvaterra@gmail.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: 6.2+ <stable@kernel.org> # 6.2+
[ rjw: Renamed 2 funtions and 2 static variables, edited subject and
  changelog ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2023-04-11 18:12:19 +02:00
..
broadcom thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
intel thermal: intel: Avoid updating unsupported THERM_STATUS_CLEAR mask bits 2023-04-11 18:12:19 +02:00
mediatek thermal/drivers/mediatek: Add the Low Voltage Thermal Sensor driver 2023-02-15 17:28:42 +01:00
qcom ARM: SoC drivers for 6.3 2023-02-27 10:04:49 -08:00
samsung thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
st thermal/drivers/st: Remove syscfg based driver 2023-02-15 17:30:04 +01:00
tegra thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
ti-soc-thermal thermal/drivers/ti: Remove unused macros ti_thermal_get_trip_value() / ti_thermal_trip_is_valid() 2023-01-06 14:14:48 +01:00
amlogic_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
armada_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
cpufreq_cooling.c Merge branches 'thermal-intel' and 'thermal-drivers' 2022-10-03 20:43:32 +02:00
cpuidle_cooling.c thermal/drivers/cpuidle_cooling: Fix use after error 2021-04-15 13:21:26 +02:00
da9062-thermal.c thermal/drivers/da9062: Use generic thermal_zone_get_trip() function 2023-01-06 14:14:48 +01:00
db8500_thermal.c thermal/drivers/db8500: Switch to new of API 2022-08-17 14:09:38 +02:00
devfreq_cooling.c Thermal control updates for 5.20-rc1 2022-08-02 11:27:53 -07:00
dove_thermal.c thermal/drivers/dove: Use devm_platform_get_and_ioremap_resource() 2023-01-18 22:18:47 +01:00
gov_bang_bang.c thermal/core/governors: Use thermal_zone_get_trip() instead of ops functions 2023-01-06 14:14:47 +01:00
gov_fair_share.c thermal/core/governors: Use thermal_zone_get_trip() instead of ops functions 2023-01-06 14:14:47 +01:00
gov_power_allocator.c thermal/core/governors: Use thermal_zone_get_trip() instead of ops functions 2023-01-06 14:14:47 +01:00
gov_step_wise.c thermal/core/governors: Use thermal_zone_get_trip() instead of ops functions 2023-01-06 14:14:47 +01:00
gov_user_space.c thermal: gov_user_space: Do not lock thermal zone mutex 2022-08-30 20:18:47 +02:00
hisi_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
imx8mm_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
imx_sc_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
imx_thermal.c thermal/drivers/imx: Use generic thermal_zone_get_trip() function 2023-01-06 14:14:48 +01:00
k3_bandgap.c thermal/drivers/banggap: Switch to new of API 2022-08-17 14:09:38 +02:00
k3_j72xx_bandgap.c thermal/drivers/k3_j72xx_bandgap: Map fuse_base only for erratum workaround 2022-12-14 15:25:41 +01:00
Kconfig thermal/drivers/mediatek: Relocate driver to mediatek folder 2023-02-15 17:28:25 +01:00
khadas_mcu_fan.c thermal/core: Make cooling device state change private 2021-01-19 22:31:10 +01:00
kirkwood_thermal.c thermal/drivers/kirkwood: Use devm_platform_get_and_ioremap_resource() 2023-01-18 22:22:50 +01:00
Makefile thermal/drivers/mediatek: Relocate driver to mediatek folder 2023-02-15 17:28:25 +01:00
max77620_thermal.c thermal/drivers/maxim: Switch to new of API 2022-08-17 14:09:38 +02:00
qoriq_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
rcar_gen3_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00
rcar_thermal.c thermal/drivers/rcar: Use generic thermal_zone_get_trip() function 2023-01-06 14:14:48 +01:00
rockchip_thermal.c thermal/drivers/rockchip: Use devm_platform_get_and_ioremap_resource() 2023-01-18 22:21:59 +01:00
rzg2l_thermal.c thermal/drivers/rzg2l: Switch to new of API 2022-08-17 14:09:38 +02:00
spear_thermal.c thermal/drivers/spear: Use devm_platform_get_and_ioremap_resource() 2023-01-18 22:23:25 +01:00
sprd_thermal.c thermal/drivers/sprd: Switch to new of API 2022-08-17 14:09:38 +02:00
sun8i_thermal.c thermal/drivers/sun8i: Convert to use macro 2023-01-24 11:43:22 +01:00
thermal_acpi.c thermal: ACPI: Make helpers retrieve temperature only 2023-02-02 15:26:45 +01:00
thermal_core.c Merge branch 'thermal-acpi' 2023-03-24 17:11:27 +01:00
thermal_core.h thermal: core: Introduce thermal_cooling_device_update() 2023-03-22 15:20:38 +01:00
thermal_helpers.c thermal/core: Move the thermal trip code to a dedicated file 2023-01-25 16:40:39 +01:00
thermal_hwmon.c thermal/core: Protect hwmon accesses to thermal operations with thermal zone mutex 2022-11-14 19:04:37 +01:00
thermal_hwmon.h thermal_hwmon: Add devres wrapper for thermal_add_hwmon_sysfs() 2020-01-27 10:24:32 +01:00
thermal_mmio.c thermal/drivers/thermal_mmio: Use devm_platform_get_and_ioremap_resource() 2023-01-18 22:22:19 +01:00
thermal_netlink.c thermal/core: Fix unregistering netlink at thermal init time 2023-01-25 16:40:39 +01:00
thermal_netlink.h thermal/core: Fix unregistering netlink at thermal init time 2023-01-25 16:40:39 +01:00
thermal_of.c thermal/of: Remove of_thermal_get_crit_temp() 2023-01-06 14:14:47 +01:00
thermal_sysfs.c thermal: core: Drop excessive lockdep_assert_held() calls 2023-03-28 20:49:47 +02:00
thermal_trip.c thermal/core: Move the thermal trip code to a dedicated file 2023-01-25 16:40:39 +01:00
thermal-generic-adc.c thermal/drivers/generic-adc: Switch to new of API 2022-08-17 14:09:37 +02:00
uniphier_thermal.c thermal: Remove core header inclusion from drivers 2023-02-15 17:29:48 +01:00