Re: [PATCH v2 2/2] intel_pstate: Set core to min P state during core offline

From: Dirk Brandewie
Date: Tue Mar 18 2014 - 15:44:45 EST


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@xxxxxxxxx> 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?


Regards,
Srivatsa S. Bhat


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/