Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'thermal-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull thermal control fixes from Rafael Wysocki:
"These revert a problematic optimization commit and address a devfreq
cooling device issue.

Specifics:

- Revert thermal core optimization that introduced a functional issue
causing a critical trip point to be crossed in some cases (Daniel
Lezcano)

- Add missing conversion between different state ranges to the
devfreq cooling device driver (Ye Zhang)"

* tag 'thermal-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
thermal: devfreq_cooling: Fix perf state when calculate dfc res_util
Revert "thermal: core: Don't update trip points inside the hysteresis range"

+3 -18
+1 -1
drivers/thermal/devfreq_cooling.c
··· 214 214 215 215 res = dfc->power_ops->get_real_power(df, power, freq, voltage); 216 216 if (!res) { 217 - state = dfc->capped_state; 217 + state = dfc->max_state - dfc->capped_state; 218 218 219 219 /* Convert EM power into milli-Watts first */ 220 220 rcu_read_lock();
+2 -17
drivers/thermal/thermal_trip.c
··· 65 65 { 66 66 const struct thermal_trip *trip; 67 67 int low = -INT_MAX, high = INT_MAX; 68 - bool same_trip = false; 69 68 int ret; 70 69 71 70 lockdep_assert_held(&tz->lock); ··· 73 74 return; 74 75 75 76 for_each_trip(tz, trip) { 76 - bool low_set = false; 77 77 int trip_low; 78 78 79 79 trip_low = trip->temperature - trip->hysteresis; 80 80 81 - if (trip_low < tz->temperature && trip_low > low) { 81 + if (trip_low < tz->temperature && trip_low > low) 82 82 low = trip_low; 83 - low_set = true; 84 - same_trip = false; 85 - } 86 83 87 84 if (trip->temperature > tz->temperature && 88 - trip->temperature < high) { 85 + trip->temperature < high) 89 86 high = trip->temperature; 90 - same_trip = low_set; 91 - } 92 87 } 93 88 94 89 /* No need to change trip points */ 95 90 if (tz->prev_low_trip == low && tz->prev_high_trip == high) 96 - return; 97 - 98 - /* 99 - * If "high" and "low" are the same, skip the change unless this is the 100 - * first time. 101 - */ 102 - if (same_trip && (tz->prev_low_trip != -INT_MAX || 103 - tz->prev_high_trip != INT_MAX)) 104 91 return; 105 92 106 93 tz->prev_low_trip = low;