[PATCH 0/6] thermal/intel: Introduce intel-tcc lib and enhance tjmax handling

Zhang Rui
2022-11-08T03:31:22Z

Currently, all the thermal drivers that access the Intel CPU TCC (thermal
control circuitry) MSRs have two problems,
1. they have their own implementation for the same TCC functionalities,
including getting the tjmax/temperature, getting/setting the TCC offset.
This introduces a lot of duplicate code.
2. they get TjMax value once and always use the cached value later.
But Tjmax value retrieved from MSR_IA32_TEMPERATURE_TARGET can be changed
at runtime for cases like the Intel SST-PP (Intel Speed Select Technology-
Performance Profile) level change.

The intel-tcc library is introduced in patch 1/6 for cleaning up the duplicate
code among these drivers, and it also ensures the temperature is alway got
based on the updated tjmax value.

Patch 2 ~ 5 cleans up the drivers by using the new Intel TCC lib APIs.

Patch 6/6 enhances the x86_pkg_temp driver to handle dynamic tjmax when
progamming the thermal interrupt threshold.
Actually, the thermal interrupt threshold programming can also be part of the
TCC library, but I didn't do it in this version because x86_pkg_temp is the
only user for now.

thanks,
rui

----------------------------------------------------------------
Zhang Rui (6):
thermal/intel: Introduce Intel TCC library
thermal/x86_pkg_temp_thermal: Use Intel TCC library
thermal/int340x/processor_thermal: Use Intel TCC library
thermal/intel/intel_soc_dts_iosf: Use Intel TCC library
thermal/intel/intel_tcc_cooling: Use Intel TCC library
thermal/x86_pkg_temp_thermal: Add support for handling dynamic tjmax

drivers/thermal/intel/Kconfig | 7 ++
drivers/thermal/intel/Makefile | 1 +
drivers/thermal/intel/int340x_thermal/Kconfig | 1 +
.../int340x_thermal/processor_thermal_device.c | 123 ++++---------------
drivers/thermal/intel/intel_soc_dts_iosf.c | 33 +-----
drivers/thermal/intel/intel_tcc.c | 132 +++++++++++++++++++++
drivers/thermal/intel/intel_tcc_cooling.c | 37 +-----
drivers/thermal/intel/x86_pkg_temp_thermal.c | 62 ++++------
include/linux/intel_tcc.h | 18 +++
9 files changed, 219 insertions(+), 195 deletions(-)
create mode 100644 drivers/thermal/intel/intel_tcc.c
create mode 100644 include/linux/intel_tcc.h