thermal: core: Introduce thermal_cdev_update_nocheck()

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>
This commit is contained in:
Rafael J. Wysocki 2024-10-11 00:16:54 +02:00
parent c690dce5dc
commit c597b4e74b
5 changed files with 18 additions and 9 deletions

View 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); dev_dbg(&instance->cdev->device, "target=%ld\n", instance->target);
mutex_lock(&instance->cdev->lock); thermal_cdev_update_nocheck(instance->cdev);
__thermal_cdev_update(instance->cdev);
mutex_unlock(&instance->cdev->lock);
} }
/** /**

View File

@ -89,9 +89,7 @@ static void fair_share_throttle(struct thermal_zone_device *tz,
} }
instance->target = div_u64(dividend, divisor); instance->target = div_u64(dividend, divisor);
mutex_lock(&cdev->lock); thermal_cdev_update_nocheck(cdev);
__thermal_cdev_update(cdev);
mutex_unlock(&cdev->lock);
} }
} }

View File

@ -322,9 +322,8 @@ power_actor_set_power(struct thermal_cooling_device *cdev,
return ret; return ret;
instance->target = clamp_val(state, instance->lower, instance->upper); instance->target = clamp_val(state, instance->lower, instance->upper);
mutex_lock(&cdev->lock);
__thermal_cdev_update(cdev); thermal_cdev_update_nocheck(cdev);
mutex_unlock(&cdev->lock);
return 0; return 0;
} }

View 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(struct thermal_cooling_device *);
void thermal_cdev_update_nocheck(struct thermal_cooling_device *cdev);
void __thermal_cdev_update(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); int get_tz_trend(struct thermal_zone_device *tz, const struct thermal_trip *trip);

View File

@ -205,6 +205,19 @@ void thermal_cdev_update(struct thermal_cooling_device *cdev)
mutex_unlock(&cdev->lock); 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 * thermal_zone_get_slope - return the slope attribute of the thermal zone
* @tz: thermal zone device with the slope attribute * @tz: thermal zone device with the slope attribute