Message ID | 2696911.mvXUDI8C0e@kreacher |
---|---|
State | New |
Headers | show |
Series | [v1] thermal: core: Clean up thermal_list_lock locking | expand |
On 22/03/2023 20:34, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > Once thermal_list_lock has been acquired in > __thermal_cooling_device_register(), it is not necessary to drop it > and take it again until all of the thermal zones have been updated, > so change the code accordingly. > > No expected functional impact. > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > --- Looks good to me, shall I pick it in my branch ? > drivers/thermal/thermal_core.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > Index: linux-pm/drivers/thermal/thermal_core.c > =================================================================== > --- linux-pm.orig/drivers/thermal/thermal_core.c > +++ linux-pm/drivers/thermal/thermal_core.c > @@ -826,8 +826,6 @@ static void bind_cdev(struct thermal_coo > const struct thermal_zone_params *tzp; > struct thermal_zone_device *pos = NULL; > > - mutex_lock(&thermal_list_lock); > - > list_for_each_entry(pos, &thermal_tz_list, node) { > if (!pos->tzp && !pos->ops->bind) > continue; > @@ -854,8 +852,6 @@ static void bind_cdev(struct thermal_coo > tzp->tbp[i].weight); > } > } > - > - mutex_unlock(&thermal_list_lock); > } > > /** > @@ -933,17 +929,17 @@ __thermal_cooling_device_register(struct > > /* Add 'this' new cdev to the global cdev list */ > mutex_lock(&thermal_list_lock); > + > list_add(&cdev->node, &thermal_cdev_list); > - mutex_unlock(&thermal_list_lock); > > /* Update binding information for 'this' new cdev */ > bind_cdev(cdev); > > - mutex_lock(&thermal_list_lock); > list_for_each_entry(pos, &thermal_tz_list, node) > if (atomic_cmpxchg(&pos->need_update, 1, 0)) > thermal_zone_device_update(pos, > THERMAL_EVENT_UNSPECIFIED); > + > mutex_unlock(&thermal_list_lock); > > return cdev; > > >
On Sat, Apr 1, 2023 at 10:45 PM Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > > On 22/03/2023 20:34, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > > > Once thermal_list_lock has been acquired in > > __thermal_cooling_device_register(), it is not necessary to drop it > > and take it again until all of the thermal zones have been updated, > > so change the code accordingly. > > > > No expected functional impact. > > > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > --- > > Looks good to me, shall I pick it in my branch ? No, I;ll take care of it myself, thanks! > > drivers/thermal/thermal_core.c | 8 ++------ > > 1 file changed, 2 insertions(+), 6 deletions(-) > > > > Index: linux-pm/drivers/thermal/thermal_core.c > > =================================================================== > > --- linux-pm.orig/drivers/thermal/thermal_core.c > > +++ linux-pm/drivers/thermal/thermal_core.c > > @@ -826,8 +826,6 @@ static void bind_cdev(struct thermal_coo > > const struct thermal_zone_params *tzp; > > struct thermal_zone_device *pos = NULL; > > > > - mutex_lock(&thermal_list_lock); > > - > > list_for_each_entry(pos, &thermal_tz_list, node) { > > if (!pos->tzp && !pos->ops->bind) > > continue; > > @@ -854,8 +852,6 @@ static void bind_cdev(struct thermal_coo > > tzp->tbp[i].weight); > > } > > } > > - > > - mutex_unlock(&thermal_list_lock); > > } > > > > /** > > @@ -933,17 +929,17 @@ __thermal_cooling_device_register(struct > > > > /* Add 'this' new cdev to the global cdev list */ > > mutex_lock(&thermal_list_lock); > > + > > list_add(&cdev->node, &thermal_cdev_list); > > - mutex_unlock(&thermal_list_lock); > > > > /* Update binding information for 'this' new cdev */ > > bind_cdev(cdev); > > > > - mutex_lock(&thermal_list_lock); > > list_for_each_entry(pos, &thermal_tz_list, node) > > if (atomic_cmpxchg(&pos->need_update, 1, 0)) > > thermal_zone_device_update(pos, > > THERMAL_EVENT_UNSPECIFIED); > > + > > mutex_unlock(&thermal_list_lock); > > > > return cdev; > > > > > > > > -- > <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs > > Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | > <http://twitter.com/#!/linaroorg> Twitter | > <http://www.linaro.org/linaro-blog/> Blog >
Index: linux-pm/drivers/thermal/thermal_core.c =================================================================== --- linux-pm.orig/drivers/thermal/thermal_core.c +++ linux-pm/drivers/thermal/thermal_core.c @@ -826,8 +826,6 @@ static void bind_cdev(struct thermal_coo const struct thermal_zone_params *tzp; struct thermal_zone_device *pos = NULL; - mutex_lock(&thermal_list_lock); - list_for_each_entry(pos, &thermal_tz_list, node) { if (!pos->tzp && !pos->ops->bind) continue; @@ -854,8 +852,6 @@ static void bind_cdev(struct thermal_coo tzp->tbp[i].weight); } } - - mutex_unlock(&thermal_list_lock); } /** @@ -933,17 +929,17 @@ __thermal_cooling_device_register(struct /* Add 'this' new cdev to the global cdev list */ mutex_lock(&thermal_list_lock); + list_add(&cdev->node, &thermal_cdev_list); - mutex_unlock(&thermal_list_lock); /* Update binding information for 'this' new cdev */ bind_cdev(cdev); - mutex_lock(&thermal_list_lock); list_for_each_entry(pos, &thermal_tz_list, node) if (atomic_cmpxchg(&pos->need_update, 1, 0)) thermal_zone_device_update(pos, THERMAL_EVENT_UNSPECIFIED); + mutex_unlock(&thermal_list_lock); return cdev;