From: Stephen Boyd <sboyd@codeaurora.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Rafael Wysocki <rjw@rjwysocki.net>,
linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org,
nm@ti.com
Subject: Re: [PATCH 04/17] PM / OPP: Introduce dev_pm_opp_get_max_volt_latency()
Date: Wed, 20 Jan 2016 16:20:32 -0800 [thread overview]
Message-ID: <20160121002032.GD12841@codeaurora.org> (raw)
In-Reply-To: <20160113053447.GB6050@ubuntu>
On 01/13, Viresh Kumar wrote:
> On 12-01-16, 11:45, Stephen Boyd wrote:
> > > + /*
> > > + * Hold our list modification lock here as regulator_set_voltage_time()
> > > + * can possibly take another mutex, which isn't allowed within rcu
> > > + * locks.
> > > + */
> > > + mutex_lock(&dev_opp_list_lock);
> >
> > So now we take the list modification mutex. Why can't we
> > rcu_read_lock(), find the min and max voltage, and then release
> > the read lock and ask regulator framework for the voltage time?
>
> That was possible before this series came in..
>
> > From what I can tell we're just trying to make sure that the list
> > is stable when iterating through it to find the min/max voltage.
>
> Hmm, we have pointer to regulator within the dev-opp struct. If we
> drop the lock, the dev-opp struct can get freed and regulator will be
> put just before that. So, we may be using an already freed resource.
>
> How do you suggest we fix it ?
>
Ok, first off, I don't understand why the regulator and clock
pointers are in the struct device_opp instead of the struct
device_list_opp. I thought we wanted to make it possible for two
devices to share the same OPP table (device_opp), but have
physically different clocks and regulators (non opp-shared case)?
If we put the clock and regulator handles in the device_opp then
the opp table is limited to one device or a set of devices that
all share the same clock and regulators.
BTW, these structure names confuse me all the time. I have to
rename dev_pm_opp to opp_entry, device_opp to opp_table, and
device_list_opp to opp_device_list in my head for anything to
make sense.
Gripes aside, the clock and regulator pointers should never be
'put' and go away until the device driver that's using the
dev_pm_opp_set_rate() API has called dev_pm_opp_remove(). So any
concerns about that happening during an OPP switch aren't the
concern of the OPP framework, but the concern of the consumer
drivers having the proper locking and tear down sequences.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2016-01-21 0:20 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-22 10:16 [PATCH 00/17] PM / OPP: Introduce APIs to transition OPPs Viresh Kumar
2015-12-22 10:16 ` [PATCH 01/17] PM / OPP: get/put regulators from OPP core Viresh Kumar
2016-01-11 23:21 ` Stephen Boyd
2016-01-12 3:05 ` Viresh Kumar
2016-01-12 5:23 ` Viresh Kumar
2016-01-12 19:32 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 02/17] PM / OPP: Add APIs to set regulator-name Viresh Kumar
2016-01-12 1:18 ` Stephen Boyd
2016-01-12 4:43 ` Viresh Kumar
2015-12-22 10:16 ` [PATCH 03/17] PM / OPP: Disable OPPs that aren't supported by the regulator Viresh Kumar
2016-01-12 1:19 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 04/17] PM / OPP: Introduce dev_pm_opp_get_max_volt_latency() Viresh Kumar
2016-01-12 1:25 ` Stephen Boyd
2016-01-12 5:10 ` Viresh Kumar
2016-01-12 19:45 ` Stephen Boyd
2016-01-13 5:34 ` Viresh Kumar
2016-01-18 7:23 ` Viresh Kumar
2016-01-21 0:20 ` Stephen Boyd [this message]
2016-01-21 2:32 ` Viresh Kumar
2016-01-21 2:43 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 05/17] PM / OPP: Introduce dev_pm_opp_get_max_transition_latency() Viresh Kumar
2016-01-12 2:20 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 06/17] PM / OPP: Parse clock-latency and voltage-tolerance for v1 bindings Viresh Kumar
2016-01-12 1:29 ` Stephen Boyd
2016-01-12 5:14 ` Viresh Kumar
2016-01-13 0:36 ` Stephen Boyd
2016-01-13 5:35 ` Viresh Kumar
2016-01-15 1:54 ` Stephen Boyd
2016-01-15 1:54 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 07/17] PM / OPP: Manage device clk Viresh Kumar
2016-01-12 1:32 ` Stephen Boyd
2016-01-12 5:43 ` Viresh Kumar
2016-01-12 19:47 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 08/17] PM / OPP: Add dev_pm_opp_set_rate() Viresh Kumar
2016-01-12 1:40 ` Stephen Boyd
2016-01-12 6:58 ` Viresh Kumar
2016-01-13 0:49 ` Stephen Boyd
2016-01-13 5:51 ` Viresh Kumar
2015-12-22 10:16 ` [PATCH 10/17] cpufreq: dt: Rename 'need_update' to 'opp_v1' Viresh Kumar
2016-01-12 1:41 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 11/17] cpufreq: dt: OPP layers handles clock-latency for V1 bindings as well Viresh Kumar
2016-01-12 1:41 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 12/17] cpufreq: dt: Pass regulator name to the OPP core for V1 bindings Viresh Kumar
2016-01-12 1:53 ` Stephen Boyd
2016-01-12 7:11 ` Viresh Kumar
2016-01-13 0:43 ` Stephen Boyd
2016-01-13 5:47 ` Viresh Kumar
2016-01-13 11:15 ` Mark Brown
2015-12-22 10:16 ` [PATCH 13/17] cpufreq: dt: Unsupported OPPs are already disabled Viresh Kumar
2016-01-12 1:53 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 14/17] cpufreq: dt: Reuse dev_pm_opp_get_max_transition_latency() Viresh Kumar
2016-01-12 1:54 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 15/17] cpufreq: dt: Use dev_pm_opp_set_rate() to switch frequency Viresh Kumar
2016-01-12 1:55 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 16/17] cpufreq: dt: drop references to DT node Viresh Kumar
2016-01-12 1:55 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 17/17] cpufreq: dt: No need to allocate resources anymore Viresh Kumar
2016-01-12 2:20 ` Stephen Boyd
2016-01-12 7:34 ` Viresh Kumar
2016-01-21 1:18 ` Stephen Boyd
2016-01-21 2:36 ` Viresh Kumar
2016-01-21 2:45 ` Stephen Boyd
2016-01-25 10:33 ` Viresh Kumar
2015-12-22 10:20 ` [PATCH 09/17] cpufreq: dt: Convert few pr_debug/err() calls to dev_dbg/err() Viresh Kumar
2016-01-12 1:40 ` Stephen Boyd
2015-12-23 3:12 ` [PATCH 00/17] PM / OPP: Introduce APIs to transition OPPs Rafael J. Wysocki
2015-12-23 2:46 ` Viresh Kumar
2016-01-11 16:28 ` 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=20160121002032.GD12841@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=nm@ti.com \
--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;
as well as URLs for NNTP newsgroup(s).