From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
To: Dirk Brandewie <dirk.brandewie@gmail.com>
Cc: dirk.j.brandewie@intel.com,
Viresh Kumar <viresh.kumar@linaro.org>,
Linux PM list <linux-pm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Patrick Marlier <patrick.marlier@gmail.com>
Subject: Re: [PATCH v2 2/2] intel_pstate: Set core to min P state during core offline
Date: Wed, 19 Mar 2014 01:45:18 +0530 [thread overview]
Message-ID: <5328A956.1050808@linux.vnet.ibm.com> (raw)
In-Reply-To: <5328A21C.3010909@intel.com>
On 03/19/2014 01:14 AM, Dirk Brandewie wrote:
> On 03/18/2014 11:52 AM, Srivatsa S. Bhat wrote:
>> On 03/18/2014 08:31 PM, Dirk Brandewie wrote:
>>> On 03/17/2014 10:44 PM, Viresh Kumar wrote:
>>>> On Sat, Mar 15, 2014 at 2:33 AM, <dirk.brandewie@gmail.com> wrote:
>>>>> +
>>>>> static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
>>>>> {
>>>>> struct cpudata *cpu;
>>>>> @@ -818,7 +824,7 @@ static struct cpufreq_driver
>>>>> intel_pstate_driver = {
>>>>> .setpolicy = intel_pstate_set_policy,
>>>>> .get = intel_pstate_get,
>>>>> .init = intel_pstate_cpu_init,
>>>>> - .exit = intel_pstate_cpu_exit,
>>>>> + .stop = intel_pstate_cpu_stop,
>>>>
>>>> Probably, keep exit as is and only change P-state in stop(). So that
>>>> allocation of resources happen in init() and they are freed in exit()?
>>>>
>>> I looked at doing just that but it junked up the code. if stop() is
>>> called
>>> during PREPARE then init() will be called via __cpufreq_add_dev() in the
>>> ONLINE
>>> and DOWN_FAILED case. So once stop() is called the driver will be
>>> ready for
>>> init() to be called exactly like when exit() is called.
>>>
>>
>> I'm sorry, but that didn't make much sense to me. Can you be a little
>> more specific as to what problems you hit while trying to have a
>> ->stop() which sets min P state and a separate ->exit() which frees
>> the resources? I think we can achieve this with almost no trouble.
>>
>
> There was no problem per se. In stop() all I really needed to do is
> stop the
> timer and set the P state to MIN.
>
> At init time I need to allocate memory and start timer. If stopping the
> timer
> and deallocating memory are separated then I need code in init() to detect
> this case.
>
> Moving all the clean up to stop() make my code simpler, covers the
> failure case and maintains the behaviour expected by the core.
>
>> If you ignore the failure case (such as DOWN_FAILED) for now, do you
>> still see any serious roadblocks?
>
> Why would I ignore a valid failure case?
>
Of course you shouldn't ignore it. I was just trying to make it easier
to think about the design without complicating it with arcane failure
cases right at the outset, that's all.
Now that I looked at it again, I see your point. The problem is that
by the DOWN_PREPARE stage, the core would have completed only half the
tear-down (via __cpufreq_remove_dev_prepare()), but on failure, it tries
to do a full init (via __cpufreq_add_dev()). I would say that's actually
not a great design from the cpufreq core perspective, but perhaps we can
fix it at a later point in time if it is that painful to endure.
So yes, now I understand see why you do all the teardown in ->stop(),
to workaround the somewhat inconvenient rollback performed by the
cpufreq core. Your approach looks good to me.
Regards,
Srivatsa S. Bhat
next prev parent reply other threads:[~2014-03-18 20:15 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAKQMxzQhVz0QT6tV0PKFjXXpYpDbtnOBH=miARoeQhrvs2TKFQ@mail.gmail.com>
[not found] ` <5320D05F.7050304@gmail.com>
[not found] ` <5320D12B.4040303@gmail.com>
2014-03-13 0:07 ` intel_pstate: Lower p-state when putting down CPU Rafael J. Wysocki
2014-03-13 4:56 ` Viresh Kumar
2014-03-13 21:39 ` Rafael J. Wysocki
2014-03-14 21:03 ` [PATCH v2 0/2] Add exit_prepare callback to the cpufreq_driver interface dirk.brandewie
2014-03-14 21:03 ` [PATCH v2 1/2] cpufreq: Add exit_prepare callback to " dirk.brandewie
2014-03-15 2:04 ` Rafael J. Wysocki
2014-03-18 5:43 ` Viresh Kumar
2014-03-14 21:03 ` [PATCH v2 2/2] intel_pstate: Set core to min P state during core offline dirk.brandewie
2014-03-18 5:44 ` Viresh Kumar
2014-03-18 15:01 ` Dirk Brandewie
2014-03-18 18:52 ` Srivatsa S. Bhat
2014-03-18 19:44 ` Dirk Brandewie
2014-03-18 20:15 ` Srivatsa S. Bhat [this message]
2014-03-19 5:20 ` Viresh Kumar
2014-03-19 15:32 ` Dirk Brandewie
2014-03-18 17:22 ` [PATCH v3 0/2] Add stop callback to the cpufreq_driver interface dirk.brandewie
2014-03-18 17:22 ` [PATCH 1/2] cpufreq: Add stop callback to " dirk.brandewie
2014-03-19 5:04 ` Viresh Kumar
2014-03-18 17:22 ` [PATCH 2/2] intel_pstate: Set core to min P state during core offline dirk.brandewie
2014-03-18 19:08 ` Srivatsa S. Bhat
2014-03-18 19:08 ` [PATCH v3 0/2] Add stop callback to the cpufreq_driver interface Srivatsa S. Bhat
2014-03-18 19:25 ` Dirk Brandewie
2014-03-18 20:04 ` Srivatsa S. Bhat
2014-03-19 0:53 ` Rafael J. Wysocki
2014-03-19 5:33 ` Viresh Kumar
2014-03-19 14:01 ` Rafael J. Wysocki
2014-03-19 13:49 ` Viresh Kumar
2014-03-19 14:25 ` Rafael J. Wysocki
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=5328A956.1050808@linux.vnet.ibm.com \
--to=srivatsa.bhat@linux.vnet.ibm.com \
--cc=dirk.brandewie@gmail.com \
--cc=dirk.j.brandewie@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=patrick.marlier@gmail.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).