diff mbox series

[v1,2/4] thermal: gov_bang_bang: Split bang_bang_control()

Message ID 3313587.aeNJFYEL58@rjwysocki.net
State New
Headers show
Series thermal: gov_bang_bang: Prevent cooling devices from getting stuck in the "on" state | expand

Commit Message

Rafael J. Wysocki Aug. 13, 2024, 2:26 p.m. UTC
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Move the setting of the thermal instance target state from
bang_bang_control() into a separate function that will be also called
in a different place going forward.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/thermal/gov_bang_bang.c |   42 +++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

Comments

Peter Kästle Aug. 13, 2024, 9:03 p.m. UTC | #1
On 13.08.24 16:26, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> Move the setting of the thermal instance target state from
> bang_bang_control() into a separate function that will be also called
> in a different place going forward.
> 
> No intentional functional impact.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Acked-by: Peter Kästle <peter@piie.net>

> ---
>   drivers/thermal/gov_bang_bang.c |   42 +++++++++++++++++++++-------------------
>   1 file changed, 23 insertions(+), 19 deletions(-)
> 
> Index: linux-pm/drivers/thermal/gov_bang_bang.c
> ===================================================================
> --- linux-pm.orig/drivers/thermal/gov_bang_bang.c
> +++ linux-pm/drivers/thermal/gov_bang_bang.c
> @@ -13,6 +13,27 @@
>   
>   #include "thermal_core.h"
>   
> +static void bang_bang_set_instance_target(struct thermal_instance *instance,
> +					  unsigned int target)
> +{
> +	if (instance->target != 0 && instance->target != 1 &&
> +	    instance->target != THERMAL_NO_TARGET)
> +		pr_debug("Unexpected state %ld of thermal instance %s in bang-bang\n",
> +			 instance->target, instance->name);
> +
> +	/*
> +	 * Enable the fan when the trip is crossed on the way up and disable it
> +	 * when the trip is crossed on the way down.
> +	 */
> +	instance->target = target;
> +
> +	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);
> +}
> +
>   /**
>    * bang_bang_control - controls devices associated with the given zone
>    * @tz: thermal_zone_device
> @@ -54,25 +75,8 @@ static void bang_bang_control(struct the
>   		tz->temperature, trip->hysteresis);
>   
>   	list_for_each_entry(instance, &tz->thermal_instances, tz_node) {
> -		if (instance->trip != trip)
> -			continue;
> -
> -		if (instance->target != 0 && instance->target != 1 &&
> -		    instance->target != THERMAL_NO_TARGET)
> -			pr_debug("Unexpected state %ld of thermal instance %s in bang-bang\n",
> -				 instance->target, instance->name);
> -
> -		/*
> -		 * Enable the fan when the trip is crossed on the way up and
> -		 * disable it when the trip is crossed on the way down.
> -		 */
> -		instance->target = crossed_up;
> -
> -		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);
> +		if (instance->trip == trip)
> +			bang_bang_set_instance_target(instance, crossed_up);
>   	}
>   }
>   
> 
> 
>
Zhang Rui Aug. 16, 2024, 3 a.m. UTC | #2
On Tue, 2024-08-13 at 16:26 +0200, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> Move the setting of the thermal instance target state from
> bang_bang_control() into a separate function that will be also called
> in a different place going forward.
> 
> No intentional functional impact.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Reviewed-by: Zhang Rui <rui.zhang@intel.com>

thanks,
rui

> ---
>  drivers/thermal/gov_bang_bang.c |   42 +++++++++++++++++++++--------
> -----------
>  1 file changed, 23 insertions(+), 19 deletions(-)
> 
> Index: linux-pm/drivers/thermal/gov_bang_bang.c
> ===================================================================
> --- linux-pm.orig/drivers/thermal/gov_bang_bang.c
> +++ linux-pm/drivers/thermal/gov_bang_bang.c
> @@ -13,6 +13,27 @@
>  
>  #include "thermal_core.h"
>  
> +static void bang_bang_set_instance_target(struct thermal_instance
> *instance,
> +                                         unsigned int target)
> +{
> +       if (instance->target != 0 && instance->target != 1 &&
> +           instance->target != THERMAL_NO_TARGET)
> +               pr_debug("Unexpected state %ld of thermal instance %s
> in bang-bang\n",
> +                        instance->target, instance->name);
> +
> +       /*
> +        * Enable the fan when the trip is crossed on the way up and
> disable it
> +        * when the trip is crossed on the way down.
> +        */
> +       instance->target = target;
> +
> +       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);
> +}
> +
>  /**
>   * bang_bang_control - controls devices associated with the given
> zone
>   * @tz: thermal_zone_device
> @@ -54,25 +75,8 @@ static void bang_bang_control(struct the
>                 tz->temperature, trip->hysteresis);
>  
>         list_for_each_entry(instance, &tz->thermal_instances,
> tz_node) {
> -               if (instance->trip != trip)
> -                       continue;
> -
> -               if (instance->target != 0 && instance->target != 1 &&
> -                   instance->target != THERMAL_NO_TARGET)
> -                       pr_debug("Unexpected state %ld of thermal
> instance %s in bang-bang\n",
> -                                instance->target, instance->name);
> -
> -               /*
> -                * Enable the fan when the trip is crossed on the way
> up and
> -                * disable it when the trip is crossed on the way
> down.
> -                */
> -               instance->target = crossed_up;
> -
> -               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);
> +               if (instance->trip == trip)
> +                       bang_bang_set_instance_target(instance,
> crossed_up);
>         }
>  }
>  
> 
> 
>
diff mbox series

Patch

Index: linux-pm/drivers/thermal/gov_bang_bang.c
===================================================================
--- linux-pm.orig/drivers/thermal/gov_bang_bang.c
+++ linux-pm/drivers/thermal/gov_bang_bang.c
@@ -13,6 +13,27 @@ 
 
 #include "thermal_core.h"
 
+static void bang_bang_set_instance_target(struct thermal_instance *instance,
+					  unsigned int target)
+{
+	if (instance->target != 0 && instance->target != 1 &&
+	    instance->target != THERMAL_NO_TARGET)
+		pr_debug("Unexpected state %ld of thermal instance %s in bang-bang\n",
+			 instance->target, instance->name);
+
+	/*
+	 * Enable the fan when the trip is crossed on the way up and disable it
+	 * when the trip is crossed on the way down.
+	 */
+	instance->target = target;
+
+	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);
+}
+
 /**
  * bang_bang_control - controls devices associated with the given zone
  * @tz: thermal_zone_device
@@ -54,25 +75,8 @@  static void bang_bang_control(struct the
 		tz->temperature, trip->hysteresis);
 
 	list_for_each_entry(instance, &tz->thermal_instances, tz_node) {
-		if (instance->trip != trip)
-			continue;
-
-		if (instance->target != 0 && instance->target != 1 &&
-		    instance->target != THERMAL_NO_TARGET)
-			pr_debug("Unexpected state %ld of thermal instance %s in bang-bang\n",
-				 instance->target, instance->name);
-
-		/*
-		 * Enable the fan when the trip is crossed on the way up and
-		 * disable it when the trip is crossed on the way down.
-		 */
-		instance->target = crossed_up;
-
-		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);
+		if (instance->trip == trip)
+			bang_bang_set_instance_target(instance, crossed_up);
 	}
 }