From: "[Chander Kashyap" <chander.kashyap@linaro.org>
To: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: rjw@rjwysocki.net, pavel@ucw.cz, len.brown@intel.com,
gregkh@linuxfoundation.org, viresh.kumar@linaro.org,
Chander Kashyap <k.chander@samsung.com>,
Inderpal Singh <inderpal.s@samsung.com>
Subject: [PATCH] PM / OPP: discard duplicate OPP additions
Date: Tue, 13 May 2014 13:11:30 +0530 [thread overview]
Message-ID: <1399966890-22926-1-git-send-email-k.chander@samsung.com> (raw)
From: Chander Kashyap <k.chander@samsung.com>
It may be possible to unregister and re-register the cpufreq driver.
One such example is arm big-little IKS cpufreq driver. While
re-registering the driver, same OPPs may get added again.
This patch detects the duplicacy and discards them.
Signed-off-by: Chander Kashyap <k.chander@samsung.com>
Signed-off-by: Inderpal Singh <inderpal.s@samsung.com>
---
drivers/base/power/opp.c | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/drivers/base/power/opp.c b/drivers/base/power/opp.c
index 2553867..2e803a9 100644
--- a/drivers/base/power/opp.c
+++ b/drivers/base/power/opp.c
@@ -443,23 +443,33 @@ int dev_pm_opp_add(struct device *dev, unsigned long freq, unsigned long u_volt)
new_opp->u_volt = u_volt;
new_opp->available = true;
- /* Insert new OPP in order of increasing frequency */
+ /*
+ * Insert new OPP in order of increasing frequency
+ * and discard if already present
+ */
head = &dev_opp->opp_list;
list_for_each_entry_rcu(opp, &dev_opp->opp_list, node) {
- if (new_opp->rate < opp->rate)
+ if (new_opp->rate <= opp->rate)
break;
else
head = &opp->node;
}
- list_add_rcu(&new_opp->node, head);
- mutex_unlock(&dev_opp_list_lock);
+ if (new_opp->rate != opp->rate) {
+ list_add_rcu(&new_opp->node, head);
+ mutex_unlock(&dev_opp_list_lock);
+
+ /*
+ * Notify the changes in the availability of the operable
+ * frequency/voltage list.
+ */
+ srcu_notifier_call_chain(&dev_opp->head,
+ OPP_EVENT_ADD, new_opp);
+ } else {
+ mutex_unlock(&dev_opp_list_lock);
+ kfree(new_opp);
+ }
- /*
- * Notify the changes in the availability of the operable
- * frequency/voltage list.
- */
- srcu_notifier_call_chain(&dev_opp->head, OPP_EVENT_ADD, new_opp);
return 0;
}
EXPORT_SYMBOL_GPL(dev_pm_opp_add);
--
1.7.9.5
next reply other threads:[~2014-05-13 7:41 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-13 7:41 [Chander Kashyap [this message]
2014-05-13 8:22 ` Viresh Kumar
2014-05-13 10:30 ` Sudeep Holla
2014-05-13 11:05 ` Viresh Kumar
2014-05-13 11:37 ` Sudeep Holla
2014-05-13 11:57 ` Chander Kashyap
2014-05-13 13:02 ` Sudeep Holla
2014-05-13 13:41 ` Nishanth Menon
2014-05-13 13:23 ` Nishanth Menon
2014-05-14 9:31 ` Chander Kashyap
2014-05-14 11:08 ` Viresh Kumar
2014-05-14 14:27 ` Nishanth Menon
2014-05-15 8:25 ` Chander Kashyap
2014-05-15 8:27 ` Viresh Kumar
2014-05-15 8:46 ` Chander Kashyap
2014-05-15 8:55 ` Viresh Kumar
2014-05-16 8:13 ` [PATCH v2] " Chander Kashyap
2014-05-14 15:02 ` [PATCH] " Pavel Machek
2014-05-15 3:57 ` Viresh Kumar
[not found] ` <CAOqmu80j2q6hQLThVt60QkjqcZTXwJ6ddwDLvqBEW1ejrVh_hw@mail.gmail.com>
2014-05-15 4:36 ` Viresh Kumar
2014-05-15 4:52 ` Inderpal Singh
2014-05-15 5:04 ` Viresh Kumar
2014-05-15 5:30 ` Inderpal Singh
2014-05-15 5:37 ` Viresh Kumar
2014-05-15 5:46 ` Inderpal Singh
2014-05-15 6:01 ` Viresh Kumar
2014-05-15 6:10 ` Inderpal Singh
2014-05-17 17:29 ` Pavel Machek
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=1399966890-22926-1-git-send-email-k.chander@samsung.com \
--to=chander.kashyap@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=inderpal.s@samsung.com \
--cc=k.chander@samsung.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=rjw@rjwysocki.net \
--cc=viresh.kumar@linaro.org \
/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®