thermal: core: Move some trip processing to thermal_trip_crossed()

Notice that some processing related to trip point crossing carried out
in handle_thermal_trip() and thermal_zone_set_trip_temp() may as well
be done in thermal_trip_crossed(), which allows code duplication to be
reduced, so change the code accordingly.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Link: https://patch.msgid.link/1982859.PYKUYFuaPT@rjwysocki.net
This commit is contained in:
Rafael J. Wysocki 2024-10-16 13:29:14 +02:00
parent db0a46b600
commit 72fb849f77
2 changed files with 16 additions and 22 deletions

View File

@ -460,11 +460,6 @@ static void handle_thermal_trip(struct thermal_zone_device *tz,
if (tz->temperature < trip->temperature - trip->hysteresis) {
td->notify_temp = trip->temperature - trip->hysteresis;
move_trip_to_sorted_list(td, way_down_list);
if (trip->type == THERMAL_TRIP_PASSIVE) {
tz->passive--;
WARN_ON(tz->passive < 0);
}
} else {
td->threshold -= trip->hysteresis;
}
@ -478,12 +473,6 @@ static void handle_thermal_trip(struct thermal_zone_device *tz,
move_trip_to_sorted_list(td, way_up_list);
td->threshold -= trip->hysteresis;
if (trip->type == THERMAL_TRIP_PASSIVE)
tz->passive++;
else if (trip->type == THERMAL_TRIP_CRITICAL ||
trip->type == THERMAL_TRIP_HOT)
handle_critical_trips(tz, trip);
}
}
@ -533,9 +522,19 @@ static void thermal_trip_crossed(struct thermal_zone_device *tz,
const struct thermal_trip *trip = &td->trip;
if (crossed_up) {
if (trip->type == THERMAL_TRIP_PASSIVE)
tz->passive++;
else if (trip->type == THERMAL_TRIP_CRITICAL ||
trip->type == THERMAL_TRIP_HOT)
handle_critical_trips(tz, trip);
thermal_notify_tz_trip_up(tz, trip);
thermal_debug_tz_trip_up(tz, trip);
} else {
if (trip->type == THERMAL_TRIP_PASSIVE) {
tz->passive--;
WARN_ON(tz->passive < 0);
}
thermal_notify_tz_trip_down(tz, trip);
thermal_debug_tz_trip_down(tz, trip);
}

View File

@ -108,18 +108,13 @@ void thermal_zone_set_trip_temp(struct thermal_zone_device *tz,
if (temp == THERMAL_TEMP_INVALID) {
struct thermal_trip_desc *td = trip_to_trip_desc(trip);
if (tz->temperature >= td->threshold) {
/*
* The trip has been crossed on the way up, so some
* adjustments are needed to compensate for the lack
* of it going forward.
*/
if (trip->type == THERMAL_TRIP_PASSIVE) {
tz->passive--;
WARN_ON_ONCE(tz->passive < 0);
}
/*
* If the trip has been crossed on the way up, some adjustments
* are needed to compensate for the lack of it going forward.
*/
if (tz->temperature >= td->threshold)
thermal_zone_trip_down(tz, td);
}
/*
* Invalidate the threshold to avoid triggering a spurious
* trip crossing notification when the trip becomes valid.