linux/drivers/thermal/intel
Srinivas Pandruvada 8526eb7fc7 thermal: intel: powerclamp: Use powercap idle-inject feature
There are two idle injection implementation in the Linux kernel. One
via intel_powerclamp and the other using powercap/idle_inject. Both
implementation end up in calling play_idle* function from a FIFO
priority thread. Both can't be used at the same time.

It is better to use one idle injection framework for better
maintainability. In this way, there is only one caller for play_idle.

Here powercap/idle_inject can be used for both per-core and for system
wide idle injection. This framework has a well defined interface which
allow registry for per-core or for all CPUs (system wide).

This reduces code complexity in the intel powerclamp driver as all the
per CPU kthreads, delayed work and calls to play_idle can be removed.

The changes include:
 - Remove unneeded include files
 - Remove per CPU kthread workers: balancing_work and idle_injection_work.
 - Reuse the compensation related code by moving from previous worker
   thread to idle_injection callback.
 - Adjust the idle_duration and runtime by using powercap/idle_inject
   interface.
 - Remove all variables, which are not required once powercap/idle_inject
   is used.
 - Add mutex to avoid race during removal of idle injection during module
   unload and user action to change idle inject percent. Also for
   protection during dynamic adjustment of run and idle time from
   update() callback.
 - Remove online/offline callbacks to designate control CPU
 - Use cpu_present_mask global variable for CPU mask
 - Remove hot plug locks

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2023-02-03 14:48:34 +01:00
..
int340x_thermal thermal: intel: int340x: Improve int340x_thermal_set_trip_temp() 2023-02-02 15:31:04 +01:00
intel_bxt_pmic_thermal.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
intel_hfi.c thermal: intel: hfi: Remove a pointless die_id check 2022-12-02 20:47:52 +01:00
intel_hfi.h thermal: intel: hfi: Enable notification interrupt 2022-02-03 19:50:49 +01:00
intel_menlow.c thermal: intel: menlow: Update function descriptions 2023-01-18 21:02:36 +01:00
intel_pch_thermal.c thermal: intel: intel_pch: Drop struct board_info 2023-02-02 21:06:24 +01:00
intel_powerclamp.c thermal: intel: powerclamp: Use powercap idle-inject feature 2023-02-03 14:48:34 +01:00
intel_quark_dts_thermal.c thermal: Rename set_mode() to change_mode() 2020-06-29 20:26:39 +02:00
intel_soc_dts_iosf.c thermal: intel: Fix unsigned comparison with less than zero 2023-01-10 20:33:26 +01:00
intel_soc_dts_iosf.h thermal: intel: intel_soc_dts_iosf: Utilize for_each_set_clump8 macro 2019-12-04 19:44:12 -08:00
intel_soc_dts_thermal.c thermal: Convert to new X86 CPU match macros 2020-03-24 21:33:53 +01:00
intel_tcc_cooling.c thermal/intel/intel_tcc_cooling: Use Intel TCC library 2022-12-30 19:57:38 +01:00
intel_tcc.c thermal/intel: Introduce Intel TCC library 2022-12-30 19:57:38 +01:00
Kconfig thermal: intel: powerclamp: Use powercap idle-inject feature 2023-02-03 14:48:34 +01:00
Makefile thermal/intel: Introduce Intel TCC library 2022-12-30 19:57:38 +01:00
therm_throt.c thermal: intel: Don't set HFI status bit to 1 2022-12-14 14:50:15 +01:00
thermal_interrupt.h thermal: intel: Protect clearing of thermal status bits 2022-11-23 20:09:06 +01:00
x86_pkg_temp_thermal.c Merge back other thermal control material for 6.3. 2023-01-24 21:12:49 +01:00