mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux PM <linux-pm@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Lukasz Luba <lukasz.luba@arm.com>,
	Zhang Rui <rui.zhang@intel.com>
Subject: [RFC PATCH for 6.13 v1 14/20] thermal: core: Introduce thermal_instance_add()
Date: Sat, 14 Sep 2024 12:43:24 +0200	[thread overview]
Message-ID: <2641944.Lt9SDvczpP@rjwysocki.net> (raw)
In-Reply-To: <6100907.lOV4Wx5bFT@rjwysocki.net>

From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

To reduce the number of redundant result checks in
thermal_bind_cdev_to_trip() and make the code in it easier to
follow, move some of that code to a new function called
thermal_instance_add() and make thermal_bind_cdev_to_trip()
invoke that function.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
 drivers/thermal/thermal_core.c |   46 ++++++++++++++++++++++++++---------------
 1 file changed, 30 insertions(+), 16 deletions(-)

Index: linux-pm/drivers/thermal/thermal_core.c
===================================================================
--- linux-pm.orig/drivers/thermal/thermal_core.c
+++ linux-pm/drivers/thermal/thermal_core.c
@@ -736,6 +736,28 @@ struct thermal_zone_device *thermal_zone
  *				     binding, and unbinding.
  */
 
+static int thermal_instance_add(struct thermal_instance *new_instance,
+				struct thermal_cooling_device *cdev,
+				struct thermal_trip_desc *td)
+{
+	struct thermal_instance *instance;
+
+	list_for_each_entry(instance, &td->thermal_instances, trip_node) {
+		if (instance->cdev == cdev)
+			return -EEXIST;
+	}
+
+	list_add_tail(&new_instance->trip_node, &td->thermal_instances);
+
+	mutex_lock(&cdev->lock);
+
+	list_add_tail(&new_instance->cdev_node, &cdev->thermal_instances);
+
+	mutex_unlock(&cdev->lock);
+
+	return 0;
+}
+
 /**
  * thermal_bind_cdev_to_trip - bind a cooling device to a thermal zone
  * @tz:		pointer to struct thermal_zone_device
@@ -754,7 +776,7 @@ static int thermal_bind_cdev_to_trip(str
 				     struct thermal_cooling_device *cdev,
 				     struct cooling_spec *cool_spec)
 {
-	struct thermal_instance *dev, *instance;
+	struct thermal_instance *dev;
 	bool upper_no_limit;
 	int result;
 
@@ -816,23 +838,15 @@ static int thermal_bind_cdev_to_trip(str
 	if (result)
 		goto remove_trip_file;
 
-	mutex_lock(&cdev->lock);
-	list_for_each_entry(instance, &td->thermal_instances, trip_node)
-		if (instance->cdev == cdev) {
-			result = -EEXIST;
-			break;
-		}
-	if (!result) {
-		list_add_tail(&dev->trip_node, &td->thermal_instances);
-		list_add_tail(&dev->cdev_node, &cdev->thermal_instances);
-	}
-	mutex_unlock(&cdev->lock);
+	result = thermal_instance_add(dev, cdev, td);
+	if (result)
+		goto remove_weight_file;
 
-	if (!result) {
-		thermal_governor_update_tz(tz, THERMAL_TZ_BIND_CDEV);
-		return 0;
-	}
+	thermal_governor_update_tz(tz, THERMAL_TZ_BIND_CDEV);
+
+	return 0;
 
+remove_weight_file:
 	device_remove_file(&tz->device, &dev->weight_attr);
 remove_trip_file:
 	device_remove_file(&tz->device, &dev->attr);




  parent reply	other threads:[~2024-09-14 10:58 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-14 10:24 [RFC PATCH for 6.13 v1 00/20] thermal: core: Updates related to thermal zone initialization, suspend and locking Rafael J. Wysocki
2024-09-14 10:25 ` [RFC PATCH for 6.13 v1 01/20] thermal: core: Use the thermal zone guard in more cases Rafael J. Wysocki
2024-09-14 10:27 ` [RFC PATCH for 6.13 v1 02/20] thermal: core: Rearrange PM notification code Rafael J. Wysocki
2024-09-14 10:28 ` [RFC PATCH for 6.13 v1 03/20] thermal: core: Represent suspend-related thermal zone flags as bits Rafael J. Wysocki
2024-09-14 10:30 ` [RFC PATCH for 6.13 v1 04/20] thermal: core: Mark thermal zones as initializing to start with Rafael J. Wysocki
2024-09-14 10:31 ` [RFC PATCH for 6.13 v1 05/20] thermal: core: Fix race between zone registration and system suspend Rafael J. Wysocki
2024-09-14 10:32 ` [RFC PATCH for 6.13 v1 06/20] thermal: core: Consolidate thermal zone locking during initialization Rafael J. Wysocki
2024-09-14 10:34 ` [RFC PATCH for 6.13 v1 07/20] thermal: core: Mark thermal zones as exiting before unregistration Rafael J. Wysocki
2024-09-14 10:35 ` [RFC PATCH for 6.13 v1 08/20] thermal: core: Consolidate thermal zone locking in the exit path Rafael J. Wysocki
2024-09-14 10:36 ` [RFC PATCH for 6.13 v1 09/20] thermal: core: Update thermal zones after cooling device binding Rafael J. Wysocki
2024-09-14 10:37 ` [RFC PATCH for 6.13 v1 10/20] thermal: core: Drop need_update field from struct thermal_zone_device Rafael J. Wysocki
2024-09-14 10:38 ` [RFC PATCH for 6.13 v1 11/20] thermal: core: Separate code running under thermal_list_lock Rafael J. Wysocki
2024-09-14 10:40 ` [RFC PATCH for 6.13 v1 12/20] thermal: core: Manage thermal_list_lock using a mutex guard Rafael J. Wysocki
2024-09-14 10:41 ` [RFC PATCH for 6.13 v1 13/20] thermal: core: Call thermal_governor_update_tz() outside of cdev lock Rafael J. Wysocki
2024-09-14 10:43 ` Rafael J. Wysocki [this message]
2024-09-14 10:44 ` [RFC PATCH for 6.13 v1 15/20] thermal: core: Introduce thermal_instance_delete() Rafael J. Wysocki
2024-09-14 10:45 ` [RFC PATCH for 6.13 v1 16/20] thermal: core: Introduce thermal_cdev_update_nocheck() Rafael J. Wysocki
2024-09-14 10:47 ` [RFC PATCH for 6.13 v1 17/20] thermal: core: Add and use cooling device guard Rafael J. Wysocki
2024-09-14 10:48 ` [RFC PATCH for 6.13 v1 18/20] thermal: core: Call __thermal_cdev_update() on cdev unbind Rafael J. Wysocki
2024-09-14 10:49 ` [RFC PATCH for 6.13 v1 19/20] thermal: core: Separate thermal zone governor initialization Rafael J. Wysocki
2024-09-14 10:50 ` [RFC PATCH for 6.13 v1 20/20] thermal: core: Manage thermal_governor_lock using a mutex guard Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2641944.Lt9SDvczpP@rjwysocki.net \
    --to=rjw@rjwysocki.net \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lukasz.luba@arm.com \
    --cc=rui.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®