summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2024-10-11 01:20:56 +0300
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2024-10-24 15:48:42 +0300
commitaf73d53e97ca5972e93ed481745d25741fa3af65 (patch)
treee714e3b6a23d23d16a2661e1b50e90a4cd2f93cf
parenta5a98a786e5e31e85a69d30935254e8730734706 (diff)
downloadlinux-af73d53e97ca5972e93ed481745d25741fa3af65.tar.xz
thermal: core: Separate thermal zone governor initialization
In preparation for a subsequent change that will switch over the thermal core to using a mutex guard for managing thermal_governor_lock, move the code running in thermal_zone_device_register_with_trips() under that lock into a separate function called thermal_zone_init_governor(). While at it, drop a useless comment. No intentional functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Link: https://patch.msgid.link/4408795.ejJDZkT8p0@rjwysocki.net Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
-rw-r--r--drivers/thermal/thermal_core.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index f98aa396787a..6464be98df5f 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1345,6 +1345,25 @@ int thermal_zone_get_crit_temp(struct thermal_zone_device *tz, int *temp)
}
EXPORT_SYMBOL_GPL(thermal_zone_get_crit_temp);
+static int thermal_zone_init_governor(struct thermal_zone_device *tz)
+{
+ struct thermal_governor *governor;
+ int ret;
+
+ mutex_lock(&thermal_governor_lock);
+
+ if (tz->tzp)
+ governor = __find_governor(tz->tzp->governor_name);
+ else
+ governor = def_governor;
+
+ ret = thermal_set_governor(tz, governor);
+
+ mutex_unlock(&thermal_governor_lock);
+
+ return ret;
+}
+
static void thermal_zone_init_complete(struct thermal_zone_device *tz)
{
struct thermal_cooling_device *cdev;
@@ -1409,7 +1428,6 @@ thermal_zone_device_register_with_trips(const char *type,
struct thermal_trip_desc *td;
int id;
int result;
- struct thermal_governor *governor;
if (!type || strlen(type) == 0) {
pr_err("No thermal zone type defined\n");
@@ -1507,21 +1525,9 @@ thermal_zone_device_register_with_trips(const char *type,
if (result)
goto release_device;
- /* Update 'this' zone's governor information */
- mutex_lock(&thermal_governor_lock);
-
- if (tz->tzp)
- governor = __find_governor(tz->tzp->governor_name);
- else
- governor = def_governor;
-
- result = thermal_set_governor(tz, governor);
- if (result) {
- mutex_unlock(&thermal_governor_lock);
+ result = thermal_zone_init_governor(tz);
+ if (result)
goto unregister;
- }
-
- mutex_unlock(&thermal_governor_lock);
if (!tz->tzp || !tz->tzp->no_hwmon) {
result = thermal_add_hwmon_sysfs(tz);