From: Eduardo Valentin <edubezval@gmail.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: linux-pm@vger.kernel.org, linaro-kernel@lists.linaro.org,
rui.zhang@intel.com
Subject: Re: [PATCH 19/26] cpu_cooling: find max level during device registration
Date: Tue, 2 Dec 2014 19:39:38 -0400 [thread overview]
Message-ID: <20141202233936.GB3969@developer> (raw)
In-Reply-To: <e2cb864949d833ab30c24b2bf039c682c8820040.1417167599.git.viresh.kumar@linaro.org>
[-- Attachment #1: Type: text/plain, Size: 3015 bytes --]
Viresh
On Fri, Nov 28, 2014 at 03:14:13PM +0530, Viresh Kumar wrote:
> CPU frequency tables don't update after the driver is registered and so we don't
> need to iterate over them to find total number of states every time
> cpufreq_get_max_state() is called. Do it once at boot time.
Could you please update me regarding the story behind the opp del patch
set?
http://permalink.gmane.org/gmane.linux.power-management.general/53348
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
> drivers/thermal/cpu_cooling.c | 31 +++++++++++++++++++------------
> 1 file changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c
> index 5815abf..05712d5 100644
> --- a/drivers/thermal/cpu_cooling.c
> +++ b/drivers/thermal/cpu_cooling.c
> @@ -52,6 +52,8 @@
> * cooling devices.
> * @cpufreq_val: integer value representing the absolute value of the clipped
> * frequency.
> + * @max_level: maximum cooling level. One less than total number of valid
> + * cpufreq frequencies.
> * @allowed_cpus: all the cpus involved for this cpufreq_cooling_device.
> *
> * This structure is required for keeping information of each registered
> @@ -62,6 +64,7 @@ struct cpufreq_cooling_device {
> struct thermal_cooling_device *cool_dev;
> unsigned int cpufreq_state;
> unsigned int cpufreq_val;
> + unsigned int max_level;
> struct cpumask allowed_cpus;
> };
> static DEFINE_IDR(cpufreq_idr);
> @@ -246,19 +249,9 @@ static int cpufreq_get_max_state(struct thermal_cooling_device *cdev,
> unsigned long *state)
> {
> struct cpufreq_cooling_device *cpufreq_device = cdev->devdata;
> - struct cpumask *mask = &cpufreq_device->allowed_cpus;
> - unsigned int cpu;
> - unsigned int count = 0;
> - int ret;
>
> - cpu = cpumask_any(mask);
> -
> - ret = get_property(cpu, 0, &count, GET_MAXL);
> -
> - if (count > 0)
> - *state = count;
> -
> - return ret;
> + *state = cpufreq_device->max_level;
> + return 0;
> }
>
> /**
> @@ -351,11 +344,25 @@ __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];
> + struct cpufreq_frequency_table *pos, *table;
> +
> + table = cpufreq_frequency_get_table(cpumask_first(clip_cpus));
> + if (!table) {
> + pr_debug("%s: CPUFreq table not found\n", __func__);
> + return ERR_PTR(-EPROBE_DEFER);
> + }
>
> cpufreq_dev = kzalloc(sizeof(*cool_dev), GFP_KERNEL);
> if (!cpufreq_dev)
> return ERR_PTR(-ENOMEM);
>
> + /* Find max levels */
> + cpufreq_for_each_valid_entry(pos, table)
> + cpufreq_dev->max_level++;
> +
> + /* max_level is an index, not a counter */
> + cpufreq_dev->max_level--;
> +
> cpumask_copy(&cpufreq_dev->allowed_cpus, clip_cpus);
>
> cpufreq_dev->id = idr_alloc(&cpufreq_idr, NULL, 0, 0, GFP_KERNEL);
> --
> 2.0.3.693.g996b0fd
>
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2014-12-02 23:39 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 ` [PATCH 16/26] cpu_cooling: Drop useless locking around idr_alloc/idr_remove Viresh Kumar
2014-12-02 15:53 ` 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 [this message]
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=20141202233936.GB3969@developer \
--to=edubezval@gmail.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=rui.zhang@intel.com \
--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).