Message ID | 4408795.ejJDZkT8p0@rjwysocki.net (mailing list archive) |
---|---|
State | Mainlined, archived |
Headers | show |
Series | thermal: core: Reimplement locking through guards | expand |
On 10/10/24 23:20, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > 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> > --- > > This is a resend of > > https://lore.kernel.org/linux-pm/2495577.jE0xQCEvom@rjwysocki.net/ > > --- > drivers/thermal/thermal_core.c | 36 +++++++++++++++++++++--------------- > 1 file changed, 21 insertions(+), 15 deletions(-) > > Index: linux-pm/drivers/thermal/thermal_core.c > =================================================================== > --- linux-pm.orig/drivers/thermal/thermal_core.c > +++ linux-pm/drivers/thermal/thermal_core.c > @@ -1343,6 +1343,25 @@ int thermal_zone_get_crit_temp(struct th > } > 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; > @@ -1407,7 +1426,6 @@ thermal_zone_device_register_with_trips( > 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"); > @@ -1505,21 +1523,9 @@ thermal_zone_device_register_with_trips( > 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); > > > Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Index: linux-pm/drivers/thermal/thermal_core.c =================================================================== --- linux-pm.orig/drivers/thermal/thermal_core.c +++ linux-pm/drivers/thermal/thermal_core.c @@ -1343,6 +1343,25 @@ int thermal_zone_get_crit_temp(struct th } 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; @@ -1407,7 +1426,6 @@ thermal_zone_device_register_with_trips( 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"); @@ -1505,21 +1523,9 @@ thermal_zone_device_register_with_trips( 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);