All of lore.kernel.org
 help / color / mirror / Atom feed
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: Mon, 11 Jan 2016 17:25:12 -0800	[thread overview]
Message-ID: <20160112012512.GJ22188@codeaurora.org> (raw)
In-Reply-To: <08691b482198b0709fd258d310a5e6ecda2f1a18.1450777582.git.viresh.kumar@linaro.org>

On 12/22, Viresh Kumar wrote:
> @@ -230,6 +230,55 @@ unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
>  EXPORT_SYMBOL_GPL(dev_pm_opp_get_max_clock_latency);
>  
>  /**
> + * dev_pm_opp_get_max_volt_latency() - Get max voltage latency in nanoseconds
> + * @dev:	device for which we do this operation

Weird tab again.

> + *
> + * Return: This function returns the max voltage latency in nanoseconds.
> + *
> + * Locking: This function takes rcu_read_lock().
> + */
> +unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
> +{
> +	struct device_opp *dev_opp;
> +	struct dev_pm_opp *opp;
> +	struct regulator *reg;
> +	unsigned long latency_ns = 0;
> +	unsigned long min_uV = ~0, max_uV = 0;
> +	int ret;
> +
> +	rcu_read_lock();
> +
> +	dev_opp = _find_device_opp(dev);
> +	if (IS_ERR(dev_opp))
> +		goto unlock;
> +
> +	reg = dev_opp->regulator;
> +	/* Regulator may not be available for device */
> +	if (IS_ERR(reg))
> +		goto unlock;
> +
> +	list_for_each_entry_rcu(opp, &dev_opp->opp_list, node) {
> +		if (!opp->available)
> +			continue;
> +
> +		if (opp->u_volt_min < min_uV)
> +			min_uV = opp->u_volt_min;
> +		if (opp->u_volt_max > max_uV)
> +			max_uV = opp->u_volt_max;
> +	}
> +
> +	ret = regulator_set_voltage_time(reg, min_uV, max_uV);

Doesn't rcu_read_lock() disable preemption sometimes? I don't
think we can call regulator ops with preemption disabled because
regulators use mutex locking. It looks like
regulator_list_voltage() may take a mutex anyway.

> +	if (ret > 0)
> +		latency_ns += ret * 1000;

Why add to 0? Perhaps this should just be an assignment?

> +
> +unlock:
> +	rcu_read_unlock();
> +
> +	return latency_ns;
> +}
> +EXPORT_SYMBOL_GPL(dev_pm_opp_get_max_volt_latency);
> 

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2016-01-12  1:25 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 [this message]
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
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=20160112012512.GJ22188@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 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.