[PATCH 1/3] thermal: core: introduce governor .reboot_prepare()

From: Eduardo Valentin
Date: Thu May 25 2023 - 17:17:20 EST

From: Eduardo Valentin <eduval@xxxxxxxxxx>

This callback is used to notify the governors that
reboot is coming up. Upon this event, this callback
gives governors the opportunity to leave the thermal
zones in a sane state prior to reboot.

Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx> (supporter:THERMAL)
Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> (supporter:THERMAL)
Cc: Amit Kucheria <amitk@xxxxxxxxxx> (reviewer:THERMAL)
Cc: Zhang Rui <rui.zhang@xxxxxxxxx> (reviewer:THERMAL)
Cc: Jonathan Corbet <corbet@xxxxxxx> (maintainer:DOCUMENTATION)
Cc: linux-pm@xxxxxxxxxxxxxxx (open list:THERMAL)
Cc: linux-doc@xxxxxxxxxxxxxxx (open list:DOCUMENTATION)
Cc: linux-kernel@xxxxxxxxxxxxxxx (open list)

Signed-off-by: Eduardo Valentin <eduval@xxxxxxxxxx>
include/linux/thermal.h | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 82c8e09a63e0..d3c8af928522 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -201,6 +201,9 @@ struct thermal_zone_device {
* below the trip point temperature
* @check_error: callback called whenever temperature updates fail.
* Opportunity for the governor to react on errors.
+ * @reboot_prepare: callback called upon system restart.
+ * Opportunity for the governor to tear down zones or at least
+ * leave them in a safe state.
* @governor_list: node in thermal_governor_list (in thermal_core.c)
struct thermal_governor {
@@ -209,6 +212,7 @@ struct thermal_governor {
void (*unbind_from_tz)(struct thermal_zone_device *tz);
int (*throttle)(struct thermal_zone_device *tz, int trip);
void (*check_error)(struct thermal_zone_device *tz, int error);
+ void (*reboot_prepare)(struct thermal_zone_device *tz);
struct list_head governor_list;