All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: linux-pm@vger.kernel.org, edubezval@gmail.com
Cc: linaro-kernel@lists.linaro.org, rui.zhang@intel.com,
	Viresh Kumar <viresh.kumar@linaro.org>
Subject: [PATCH 16/26] cpu_cooling: Drop useless locking around idr_alloc/idr_remove
Date: Fri, 28 Nov 2014 15:14:10 +0530	[thread overview]
Message-ID: <a71abc2219d80e9b8e77599d2e60612a96bb36a9.1417167599.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1417167599.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1417167599.git.viresh.kumar@linaro.org>

Locking around idr_alloc/idr_remove looks rather pointless as there is no race
it is trying to fix. Remove it.

get_idr() and release_idr() aren't much useful now, so get rid of them as well.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
@Eduardo: Same is true for thermal-core as well ?
---
 drivers/thermal/cpu_cooling.c | 45 ++++---------------------------------------
 1 file changed, 4 insertions(+), 41 deletions(-)

diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c
index 032cba3..ca8f1bb 100644
--- a/drivers/thermal/cpu_cooling.c
+++ b/drivers/thermal/cpu_cooling.c
@@ -73,42 +73,6 @@ static unsigned int cpufreq_dev_count;
 #define NOTIFY_INVALID NULL
 static struct cpufreq_cooling_device *notify_device;
 
-/**
- * get_idr - function to get a unique id.
- * @idr: struct idr * handle used to create a id.
- * @id: int * value generated by this function.
- *
- * This function will populate @id with an unique
- * id, using the idr API.
- *
- * Return: 0 on success, an error code on failure.
- */
-static int get_idr(struct idr *idr, int *id)
-{
-	int ret;
-
-	mutex_lock(&cooling_cpufreq_lock);
-	ret = idr_alloc(idr, NULL, 0, 0, GFP_KERNEL);
-	mutex_unlock(&cooling_cpufreq_lock);
-	if (unlikely(ret < 0))
-		return ret;
-	*id = ret;
-
-	return 0;
-}
-
-/**
- * release_idr - function to free the unique id.
- * @idr: struct idr * handle used for creating the id.
- * @id: int value representing the unique id.
- */
-static void release_idr(struct idr *idr, int id)
-{
-	mutex_lock(&cooling_cpufreq_lock);
-	idr_remove(idr, id);
-	mutex_unlock(&cooling_cpufreq_lock);
-}
-
 /* Below code defines functions to be used for cpufreq as cooling device */
 
 enum cpufreq_cooling_property {
@@ -430,7 +394,6 @@ __cpufreq_cooling_register(struct device_node *np,
 	struct thermal_cooling_device *cool_dev;
 	struct cpufreq_cooling_device *cpufreq_dev;
 	char dev_name[THERMAL_NAME_LENGTH];
-	int ret = 0;
 
 	cpufreq_dev = kzalloc(sizeof(*cool_dev), GFP_KERNEL);
 	if (!cpufreq_dev)
@@ -438,8 +401,8 @@ __cpufreq_cooling_register(struct device_node *np,
 
 	cpumask_copy(&cpufreq_dev->allowed_cpus, clip_cpus);
 
-	ret = get_idr(&cpufreq_idr, &cpufreq_dev->id);
-	if (ret) {
+	cpufreq_dev->id = idr_alloc(&cpufreq_idr, NULL, 0, 0, GFP_KERNEL);
+	if (unlikely(cpufreq_dev->id < 0)) {
 		cool_dev = ERR_PTR(cpufreq_dev->id);
 		goto free_cdev;
 	}
@@ -467,7 +430,7 @@ __cpufreq_cooling_register(struct device_node *np,
 	return cool_dev;
 
 remove_idr:
-	release_idr(&cpufreq_idr, cpufreq_dev->id);
+	idr_remove(&cpufreq_idr, cpufreq_dev->id);
 free_cdev:
 	kfree(cpufreq_dev);
 
@@ -540,7 +503,7 @@ void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
 	mutex_unlock(&cooling_cpufreq_lock);
 
 	thermal_cooling_device_unregister(cpufreq_dev->cool_dev);
-	release_idr(&cpufreq_idr, cpufreq_dev->id);
+	idr_remove(&cpufreq_idr, cpufreq_dev->id);
 	kfree(cpufreq_dev);
 }
 EXPORT_SYMBOL_GPL(cpufreq_cooling_unregister);
-- 
2.0.3.693.g996b0fd


  parent reply	other threads:[~2014-11-28  9:45 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-28  9:43 [PATCH 00/26] thermal: cpu_cooling: Fixes and cleanups Viresh Kumar
2014-11-28  9:43 ` [PATCH 01/26] thermal: db8500: pass cpu_present_mask to cpufreq_cooling_register() Viresh Kumar
2014-11-28  9:43 ` [PATCH 02/26] thermal: imx: " Viresh Kumar
2014-11-28  9:43 ` [PATCH 03/26] thermal: exynos: " Viresh Kumar
2014-11-28  9:43 ` [PATCH 04/26] thermal: exynos: Handle -EPROBE_DEFER properly Viresh Kumar
2014-12-02 23:08   ` Eduardo Valentin
2014-11-28  9:43 ` [PATCH 05/26] cpu_cooling: random comment fixups Viresh Kumar
2014-12-02 23:09   ` Eduardo Valentin
2014-11-28  9:44 ` [PATCH 06/26] cpu_cooling: fix doc comment over struct cpufreq_cooling_device Viresh Kumar
2014-11-28  9:44 ` [PATCH 07/26] cpu_cooling: Add comment to clarify relation between cooling state and frequency Viresh Kumar
2014-11-28  9:44 ` [PATCH 08/26] cpu_cooling: Pass variable instead of its type to sizeof() Viresh Kumar
2014-12-02 15:26   ` Javi Merino
2014-12-02 23:07     ` Eduardo Valentin
2014-12-03  4:38       ` Viresh Kumar
2014-11-28  9:44 ` [PATCH 09/26] cpu_cooling: no need to set cpufreq_state to zero Viresh Kumar
2014-11-28  9:44 ` [PATCH 10/26] cpu_cooling: no need to set cpufreq_dev to NULL Viresh Kumar
2014-11-28  9:44 ` [PATCH 11/26] cpu_cooling: propagate error returned by idr_alloc() Viresh Kumar
2014-12-02 15:35   ` Javi Merino
2014-12-03  4:36     ` Viresh Kumar
2014-12-02 23:03   ` Eduardo Valentin
2014-11-28  9:44 ` [PATCH 12/26] cpu_cooling: Don't match min/max frequencies for all CPUs on cooling register Viresh Kumar
2014-11-28  9:44 ` [PATCH 13/26] cpu_cooling: don't iterate over all allowed_cpus to update cpufreq policy Viresh Kumar
2014-11-28  9:44 ` [PATCH 14/26] cpu_cooling: Don't check is_cpufreq_valid() Viresh Kumar
2014-11-28  9:44 ` [PATCH 15/26] cpu_cooling: do error handling at the bottom in __cpufreq_cooling_register() Viresh Kumar
2014-12-02 15:45   ` Javi Merino
2014-11-28  9:44 ` Viresh Kumar [this message]
2014-12-02 15:53   ` [PATCH 16/26] cpu_cooling: Drop useless locking around idr_alloc/idr_remove Javi Merino
2014-12-02 23:05   ` Eduardo Valentin
2014-12-03  9:32     ` Viresh Kumar
2014-11-28  9:44 ` [PATCH 17/26] cpu_cooling: Merge cpufreq_apply_cooling() into cpufreq_set_cur_state() Viresh Kumar
2014-11-28  9:44 ` [PATCH 18/26] cpu_cooling: Merge get_cpu_frequency() " Viresh Kumar
2014-11-28  9:44 ` [PATCH 19/26] cpu_cooling: find max level during device registration Viresh Kumar
2014-12-02 23:39   ` Eduardo Valentin
2014-12-03  4:57     ` Viresh Kumar
2014-12-03 13:40       ` Eduardo Valentin
2014-11-28  9:44 ` [PATCH 20/26] cpu_cooling: get_property() doesn't need to support GET_MAXL anymore Viresh Kumar
2014-11-28  9:44 ` [PATCH 21/26] cpu_cooling: create list of cpufreq_cooling_devices Viresh Kumar
2014-12-02 23:12   ` Eduardo Valentin
2014-11-28  9:44 ` [PATCH 22/26] cpu_cooling: use cpufreq_dev_list instead of cpufreq_dev_count Viresh Kumar
2014-11-28  9:44 ` [PATCH 23/26] cpu_cooling: Pass 'cpufreq_dev' to get_property() Viresh Kumar
2014-11-28  9:44 ` [PATCH 24/26] cpu_cooling: Store frequencies in descending order Viresh Kumar
2014-12-02 23:21   ` Eduardo Valentin
2014-12-03  4:52     ` Viresh Kumar
2014-12-03 13:41       ` Eduardo Valentin
     [not found]         ` <CAKohponw7E9yyvjhP97CzjtcFcq3N+5ysde7DR5q+Nm0s=bKAw@mail.gmail.com>
2014-12-03 14:00           ` Eduardo Valentin
2014-11-28  9:44 ` [PATCH 25/26] cpu_cooling: Use cpufreq_dev->freq_table for finding level/freq Viresh Kumar
2014-12-02 23:36   ` Eduardo Valentin
2014-12-03  5:10     ` Viresh Kumar
2014-12-03 13:32       ` Eduardo Valentin
2014-11-28  9:44 ` [PATCH 26/26] cpu_cooling: update copyright tags Viresh Kumar
2014-12-02 19:41   ` Eduardo Valentin
2014-12-03  4:34     ` Viresh Kumar
2014-12-04  4:41       ` amit daniel kachhap
2014-11-28 13:26 ` [PATCH 00/26] thermal: cpu_cooling: Fixes and cleanups Eduardo Valentin
2014-11-28 13:41   ` Viresh Kumar

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=a71abc2219d80e9b8e77599d2e60612a96bb36a9.1417167599.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=edubezval@gmail.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-pm@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.