thermal: core: Introduce thermal_cdev_update_nocheck()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 10 Oct 2024 22:16:54 +0000 (00:16 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 23 Oct 2024 09:57:11 +0000 (11:57 +0200)
Three thermal governors call __thermal_cdev_update() under the
cdev lock without doing any checks, so in order to reduce the
related code duplication, introduce a new helper function called
thermal_cdev_update_nocheck() for them and make them use it.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/1835097.VLH7GnMWUR@rjwysocki.net
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
drivers/thermal/gov_bang_bang.c
drivers/thermal/gov_fair_share.c
drivers/thermal/gov_power_allocator.c
drivers/thermal/thermal_core.h
drivers/thermal/thermal_helpers.c

index b887e48e8c7e676cee10bedf8c8c819ecb9c9468..97f3d819852b2f51ccedf350f4abc273ea6ffd89 100644 (file)
@@ -30,9 +30,7 @@ static void bang_bang_set_instance_target(struct thermal_instance *instance,
 
        dev_dbg(&instance->cdev->device, "target=%ld\n", instance->target);
 
-       mutex_lock(&instance->cdev->lock);
-       __thermal_cdev_update(instance->cdev);
-       mutex_unlock(&instance->cdev->lock);
+       thermal_cdev_update_nocheck(instance->cdev);
 }
 
 /**
index d37d57d48c389adcd2f661c6444e09e4b0bab638..4643be4f941db84a15e436937ec68a25175c5898 100644 (file)
@@ -89,9 +89,7 @@ static void fair_share_throttle(struct thermal_zone_device *tz,
                }
                instance->target = div_u64(dividend, divisor);
 
-               mutex_lock(&cdev->lock);
-               __thermal_cdev_update(cdev);
-               mutex_unlock(&cdev->lock);
+               thermal_cdev_update_nocheck(cdev);
        }
 }
 
index 46c81b147662c2387eb3bd20160e65460ec680d5..bdae60001b2c9834e20eb253577e812e40a9a4f4 100644 (file)
@@ -322,9 +322,8 @@ power_actor_set_power(struct thermal_cooling_device *cdev,
                return ret;
 
        instance->target = clamp_val(state, instance->lower, instance->upper);
-       mutex_lock(&cdev->lock);
-       __thermal_cdev_update(cdev);
-       mutex_unlock(&cdev->lock);
+
+       thermal_cdev_update_nocheck(cdev);
 
        return 0;
 }
index dc84862017ea5dd6e9cd73aa8953e0e19c40aba4..04d45cd97614ff1f56f1d3fe3f1529063c4dc472 100644 (file)
@@ -215,6 +215,7 @@ static inline bool cdev_is_power_actor(struct thermal_cooling_device *cdev)
 }
 
 void thermal_cdev_update(struct thermal_cooling_device *);
+void thermal_cdev_update_nocheck(struct thermal_cooling_device *cdev);
 void __thermal_cdev_update(struct thermal_cooling_device *cdev);
 
 int get_tz_trend(struct thermal_zone_device *tz, const struct thermal_trip *trip);
index f2baadd8f8dadf030831de40169ce5183859b973..030a4e4bc824ca72f06a18231b0ea149f0948490 100644 (file)
@@ -205,6 +205,19 @@ void thermal_cdev_update(struct thermal_cooling_device *cdev)
        mutex_unlock(&cdev->lock);
 }
 
+/**
+ * thermal_cdev_update_nocheck() - Unconditionally update cooling device state
+ * @cdev: Target cooling device.
+ */
+void thermal_cdev_update_nocheck(struct thermal_cooling_device *cdev)
+{
+       mutex_lock(&cdev->lock);
+
+       __thermal_cdev_update(cdev);
+
+       mutex_unlock(&cdev->lock);
+}
+
 /**
  * thermal_zone_get_slope - return the slope attribute of the thermal zone
  * @tz: thermal zone device with the slope attribute