diff mbox series

[v2,02/11] thermal: core: Add and use a reverse thermal zone guard

Message ID 3344086.aeNJFYEL58@rjwysocki.net (mailing list archive)
State In Next
Delegated to: Rafael Wysocki
Headers show
Series thermal: core: Reimplement locking through guards | expand

Commit Message

Rafael J. Wysocki Oct. 10, 2024, 10:07 p.m. UTC
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Add a guard for unlocking a locked thermal zone temporarily and use it
in thermal_zone_pm_prepare().

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---

This is a new patch

---
 drivers/thermal/thermal_core.c |    8 +++-----
 drivers/thermal/thermal_core.h |    3 +++
 2 files changed, 6 insertions(+), 5 deletions(-)

Comments

Lukasz Luba Oct. 22, 2024, 9:03 p.m. UTC | #1
On 10/10/24 23:07, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> Add a guard for unlocking a locked thermal zone temporarily and use it
> in thermal_zone_pm_prepare().
> 
> No intentional functional impact.
> 
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> ---
> 
> This is a new patch
> 
> ---
>   drivers/thermal/thermal_core.c |    8 +++-----
>   drivers/thermal/thermal_core.h |    3 +++
>   2 files changed, 6 insertions(+), 5 deletions(-)
> 
> Index: linux-pm/drivers/thermal/thermal_core.c
> ===================================================================
> --- linux-pm.orig/drivers/thermal/thermal_core.c
> +++ linux-pm/drivers/thermal/thermal_core.c
> @@ -1702,11 +1702,9 @@ static void thermal_zone_pm_prepare(stru
>   		 * acquired the lock yet, so release it to let the function run
>   		 * and wait util it has done the work.
>   		 */
> -		mutex_unlock(&tz->lock);
> -
> -		wait_for_completion(&tz->resume);
> -
> -		mutex_lock(&tz->lock);
> +		scoped_guard(thermal_zone_reverse, tz) {
> +			wait_for_completion(&tz->resume);
> +		}
>   	}
>   
>   	tz->state |= TZ_STATE_FLAG_SUSPENDED;
> Index: linux-pm/drivers/thermal/thermal_core.h
> ===================================================================
> --- linux-pm.orig/drivers/thermal/thermal_core.h
> +++ linux-pm/drivers/thermal/thermal_core.h
> @@ -148,6 +148,9 @@ struct thermal_zone_device {
>   DEFINE_GUARD(thermal_zone, struct thermal_zone_device *, mutex_lock(&_T->lock),
>   	     mutex_unlock(&_T->lock))
>   
> +DEFINE_GUARD(thermal_zone_reverse, struct thermal_zone_device *,
> +	     mutex_unlock(&_T->lock), mutex_lock(&_T->lock))
> +
>   /* Initial thermal zone temperature. */
>   #define THERMAL_TEMP_INIT	INT_MIN
>   
> 
> 
> 

Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
diff mbox series

Patch

Index: linux-pm/drivers/thermal/thermal_core.c
===================================================================
--- linux-pm.orig/drivers/thermal/thermal_core.c
+++ linux-pm/drivers/thermal/thermal_core.c
@@ -1702,11 +1702,9 @@  static void thermal_zone_pm_prepare(stru
 		 * acquired the lock yet, so release it to let the function run
 		 * and wait util it has done the work.
 		 */
-		mutex_unlock(&tz->lock);
-
-		wait_for_completion(&tz->resume);
-
-		mutex_lock(&tz->lock);
+		scoped_guard(thermal_zone_reverse, tz) {
+			wait_for_completion(&tz->resume);
+		}
 	}
 
 	tz->state |= TZ_STATE_FLAG_SUSPENDED;
Index: linux-pm/drivers/thermal/thermal_core.h
===================================================================
--- linux-pm.orig/drivers/thermal/thermal_core.h
+++ linux-pm/drivers/thermal/thermal_core.h
@@ -148,6 +148,9 @@  struct thermal_zone_device {
 DEFINE_GUARD(thermal_zone, struct thermal_zone_device *, mutex_lock(&_T->lock),
 	     mutex_unlock(&_T->lock))
 
+DEFINE_GUARD(thermal_zone_reverse, struct thermal_zone_device *,
+	     mutex_unlock(&_T->lock), mutex_lock(&_T->lock))
+
 /* Initial thermal zone temperature. */
 #define THERMAL_TEMP_INIT	INT_MIN