From: Dirk Brandewie <dirk.brandewie@gmail.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Dirk Brandewie <dirk.brandewie@gmail.com>,
linux-kernel@vger.kernel.org, cpufreq@vger.kernel.org,
Dirk Brandewie <dirk.j.brandewie@intel.com>
Subject: Re: [PATCH 5/7] cpufreq: balance out cpufreq_cpu_{get,put} for scaling drivers using setpolicy
Date: Wed, 06 Feb 2013 08:11:03 -0800 [thread overview]
Message-ID: <51128097.9000801@gmail.com> (raw)
In-Reply-To: <CAKohpokoG16S8uft0nSFSoejipS8X=zhhg6goJs4mBSt3tAwxw@mail.gmail.com>
On 02/05/2013 06:45 PM, Viresh Kumar wrote:
> On 6 February 2013 07:38, Dirk Brandewie <dirk.brandewie@gmail.com> wrote:
>> On 02/05/2013 05:58 PM, Viresh Kumar wrote:
>>>
>>> On Tue, Feb 5, 2013 at 11:54 PM, <dirk.brandewie@gmail.com> wrote:
>>>>
>>>> From: Dirk Brandewie <dirk.brandewie@gmail.com>
>>>>
>>>> There is an additional reference added to the driver in
>>>> cpufreq_add_dev() that is removed in__cpufreq_governor() if the
>>>>
>>>> driver implements target(). Remove the last reference when the
>>>> driver implements setpolicy()
>>>>
>>>> Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
>>>>
>>>> ---
>>>> drivers/cpufreq/cpufreq.c | 3 +++
>>>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
>>>> index 622e282..d17477b 100644
>>>> --- a/drivers/cpufreq/cpufreq.c
>>>> +++ b/drivers/cpufreq/cpufreq.c
>>>> @@ -1049,6 +1049,9 @@ static int __cpufreq_remove_dev(struct device *dev,
>>>> struct subsys_interface *sif
>>>>
>>>> if (cpufreq_driver->target)
>>>> __cpufreq_governor(data, CPUFREQ_GOV_STOP);
>>>>
>>>> + if (cpufreq_driver->setpolicy)
>>>> + cpufreq_cpu_put(data);
>>>
>>>
>>> I don't understand this patch at all.. I grepped both cpufreq_cpu_get() &
>>> put()
>>> in bleeding-edge and found everything to be correct.
>>>
>>> Can you please point me to the exact line numbers ?
>>>
>>
>> Line 878 in cpufreq_add_dev()
>
> Following is line 878:
>
> for_each_online_cpu(sibling) {
> struct cpufreq_policy *cp = per_cpu(cpufreq_cpu_data, sibling);
> if (cp && cpumask_test_cpu(cpu, cp->related_cpus))
> return cpufreq_add_policy_cpu(cpu, sibling, dev);
> }
>
> How is this related to your patch?
>
our files are clearly out of sync :-) The code in cpufreq_add_dev() is
#ifdef CONFIG_SMP
/* check whether a different CPU already registered this
* CPU because it is in the same boat. */
policy = cpufreq_cpu_get(cpu);
if (unlikely(policy)) {
cpufreq_cpu_put(policy);
return 0;
}
The reference added by this cpufreq_cpu_get() is finally dropped in
__cpufreq_remove_dev() with the call to __cpufreq_governor()
if (driver->target)
__cpufreq_governor(data, CPUFREQ_GOV_STOP);
Without this change I hang at:
pr_debug("waiting for dropping of refcount\n");
wait_for_completion(cmp);
--Dirk
next prev parent reply other threads:[~2013-02-06 16:11 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-05 18:23 [PATCH 0/7] Add P state driver for Intel Core Processors dirk.brandewie
2013-02-05 18:24 ` [PATCH 1/7] cpufreq: Don't remove sysfs link for policy->cpu dirk.brandewie
2013-02-06 1:42 ` Viresh Kumar
2013-02-05 18:24 ` [PATCH 2/7] cpufreq: Retrieve current frequency from scaling drivers with internal governors dirk.brandewie
2013-02-06 1:41 ` Viresh Kumar
2013-02-06 1:45 ` Viresh Kumar
2013-02-06 2:15 ` Dirk Brandewie
2013-02-06 2:25 ` Viresh Kumar
2013-02-06 2:31 ` Dirk Brandewie
2013-02-06 2:46 ` Viresh Kumar
2013-02-05 18:24 ` [PATCH 3/7] cpufreq: Only query drivers that implement cpufreq_driver.target() dirk.brandewie
2013-02-06 1:47 ` Viresh Kumar
2013-02-06 2:06 ` Dirk Brandewie
2013-02-06 2:43 ` Viresh Kumar
2013-02-05 18:24 ` [PATCH 4/7] cpufreq: Do not track governor name for scaling drivers with internal governors dirk.brandewie
2013-02-06 1:50 ` Viresh Kumar
2013-02-05 18:24 ` [PATCH 5/7] cpufreq: balance out cpufreq_cpu_{get,put} for scaling drivers using setpolicy dirk.brandewie
2013-02-06 1:58 ` Viresh Kumar
2013-02-06 2:08 ` Dirk Brandewie
2013-02-06 2:45 ` Viresh Kumar
2013-02-06 16:11 ` Dirk Brandewie [this message]
2013-02-06 16:19 ` Viresh Kumar
2013-02-05 18:24 ` [PATCH 6/7] cpufreq_stats: do not remove sysfs files if frequency table is not present dirk.brandewie
2013-02-06 2:18 ` Viresh Kumar
2013-02-05 18:24 ` [PATCH 7/7] cpufreq/x86: Add P-state driver for sandy bridge dirk.brandewie
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=51128097.9000801@gmail.com \
--to=dirk.brandewie@gmail.com \
--cc=cpufreq@vger.kernel.org \
--cc=dirk.j.brandewie@intel.com \
--cc=linux-kernel@vger.kernel.org \
--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.