mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
Thermal control fixes for 6.9-rc2
- 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). -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAmYHBtMSHHJqd0Byand5 c29ja2kubmV0AAoJEILEb/54YlRx9PUP/3Fj6pk2ibvesE9ixcDcLcP0E614RsB9 nGtS5819Kzw++4rqbHCq9USqxumtp28b/B+zZim39AmOKdKvtX3cz9XXZQpq95Va 1H8I0unAQwHmviPG9ZLBOLm6zdGdbbsFFUYctH0dhHt9epMNTAwFUSf4CUek0gxA V/73KDCIqjR1boapaPyIeGD25TvlSipvQBzHdu476SK4DA0rUvmyl1XLVz1sg3UJ Xvwig9za4TlemuTn+1g7192OIWcG67locfMlEjS+18rkbABARUWdnDbm8zH5N2PF geetn9ukbFkFmShUCGR6h40lHpkcxI/8WEht7nNVn2AGImr1eIbcPoFjYlcf/6/a ttAT/qof/d4/uy0clYObMXrFRkCExsI9U3+rZ/TnN0fGmr90mSjAAwSyPdDVNYSg ksZlLojvrvCkdWYjtewr0ONbCJmADT3LnD+VsXQq0hUlMWXQndGLXHn5RzzCHIZa oEdlnCYQjnvdZNk2rdMgxaAxGg1vIKWl5TccUl9tWDJz9m1qh8d+6lL75AnsiYjR zuwD2MIO/WXpEFbEZeSv0DNJY2djIrYXakZjLnf+OlzoykZOqJ9vAXk2r4hxAqd0 yk9DmLWd9QBWLQTsiGiWp95bmI9qDYs1lC5MIEM7xKiJzjth1lwzxB7SkbaR/UyB HrOKLgQloOoa =8O09 -----END PGP SIGNATURE----- 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"
This commit is contained in:
commit
3a3c0de677
@ -214,7 +214,7 @@ static int devfreq_cooling_get_requested_power(struct thermal_cooling_device *cd
|
||||
|
||||
res = dfc->power_ops->get_real_power(df, power, freq, voltage);
|
||||
if (!res) {
|
||||
state = dfc->capped_state;
|
||||
state = dfc->max_state - dfc->capped_state;
|
||||
|
||||
/* Convert EM power into milli-Watts first */
|
||||
rcu_read_lock();
|
||||
|
@ -65,7 +65,6 @@ void __thermal_zone_set_trips(struct thermal_zone_device *tz)
|
||||
{
|
||||
const struct thermal_trip *trip;
|
||||
int low = -INT_MAX, high = INT_MAX;
|
||||
bool same_trip = false;
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&tz->lock);
|
||||
@ -74,36 +73,22 @@ void __thermal_zone_set_trips(struct thermal_zone_device *tz)
|
||||
return;
|
||||
|
||||
for_each_trip(tz, trip) {
|
||||
bool low_set = false;
|
||||
int trip_low;
|
||||
|
||||
trip_low = trip->temperature - trip->hysteresis;
|
||||
|
||||
if (trip_low < tz->temperature && trip_low > low) {
|
||||
if (trip_low < tz->temperature && trip_low > low)
|
||||
low = trip_low;
|
||||
low_set = true;
|
||||
same_trip = false;
|
||||
}
|
||||
|
||||
if (trip->temperature > tz->temperature &&
|
||||
trip->temperature < high) {
|
||||
trip->temperature < high)
|
||||
high = trip->temperature;
|
||||
same_trip = low_set;
|
||||
}
|
||||
}
|
||||
|
||||
/* No need to change trip points */
|
||||
if (tz->prev_low_trip == low && tz->prev_high_trip == high)
|
||||
return;
|
||||
|
||||
/*
|
||||
* If "high" and "low" are the same, skip the change unless this is the
|
||||
* first time.
|
||||
*/
|
||||
if (same_trip && (tz->prev_low_trip != -INT_MAX ||
|
||||
tz->prev_high_trip != INT_MAX))
|
||||
return;
|
||||
|
||||
tz->prev_low_trip = low;
|
||||
tz->prev_high_trip = high;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user