From: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: linux-pm@lists.linux-foundation.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] cpuidle/powernv: Enable idle powernv cpu to call into the cpuidle framework.
Date: Tue, 30 Jul 2013 09:20:45 +0530 [thread overview]
Message-ID: <51F73815.2040406@linux.vnet.ibm.com> (raw)
In-Reply-To: <51F67FDE.6070902@linaro.org>
On 07/29/2013 08:14 PM, Daniel Lezcano wrote:
> On 07/29/2013 04:27 PM, Deepthi Dharwar wrote:
>> On 07/27/2013 10:59 AM, Daniel Lezcano wrote:
>>> On 07/23/2013 11:01 AM, Deepthi Dharwar wrote:
>>>> This patch enables idle powernv cpu to hook on to the cpuidle
>>>> framework, if available, else call on to default idle platform
>>>> code.
>>>
>>> Why do you need to do that ?
>>>
>>
>> Hi Daniel,
>>
>> Well, this is needed in case when one does not compile with CPU_IDLE
>> config option.
>>
>> When CPUIDLE is not configured, idle cpus are needed to be running some
>> sort of default idle code or loop ( in the worst case) if cpuidle driver
>> is not registered or if one decides not to have that config enabled.
>
> Hi Deepthi,
>
> ok may be there is some difference with the other platform but the
> arch_cpu_idle function defined in the other archs do:
>
> void arch_cpu_idle(void)
> {
> if (cpuidle_idle_call())
> x86_idle();
> else
> local_irq_enable();
> }
>
> or
>
> void arch_cpu_idle(void)
> {
> if (cpuidle_idle_call())
> default_idle();
> }
>
> When the cpuidle driver is not compiled or not loaded, cpuidle_idle_call
> fails, falling back to the default idle function.
>
> The arch_cpu_idle function is called from the generic code in
> kernel/cpu/idle.c.
>
> Is there a particular reason to do it in a different way ?
On powerpc, we have another parameter, ppc_md.powersave
knob. In arch_cpu_idle, we check for this knob. This is kernel command
line parameter too. If this is not set then default idle is executed.
ppc_md is generic powerpc structure, which points to idle routine that
needs to be executed.
In arch_cpu_idle code for powerpc:
arch_cpu_idle()
{
if (ppc_md.powersave())
ppc_md.powersave()
} else
/* default idle */
}
Not all flavors of powerpc arch support cpuidle.
So only those that support, powersave is set to cpuidle backend call.
And this check is necessary there.
Regards,
Deepthi
> Thanks
> -- Daniel
>
>>>
>>>> Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
>>>> ---
>>>> arch/powerpc/platforms/powernv/setup.c | 12 +++++++++++-
>>>> 1 file changed, 11 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c
>>>> index 84438af..97d0951 100644
>>>> --- a/arch/powerpc/platforms/powernv/setup.c
>>>> +++ b/arch/powerpc/platforms/powernv/setup.c
>>>> @@ -25,6 +25,7 @@
>>>> #include <linux/of.h>
>>>> #include <linux/interrupt.h>
>>>> #include <linux/bug.h>
>>>> +#include <linux/cpuidle.h>
>>>>
>>>> #include <asm/machdep.h>
>>>> #include <asm/firmware.h>
>>>> @@ -196,6 +197,15 @@ static int __init pnv_probe(void)
>>>> return 1;
>>>> }
>>>>
>>>> +void powernv_idle(void)
>>>> +{
>>>> + /* Hook to cpuidle framework if available, else
>>>> + * call on default platform idle code
>>>> + */
>>>> + if (cpuidle_idle_call())
>>>> + power7_idle();
>>>> +}
>>>> +
>>>> define_machine(powernv) {
>>>> .name = "PowerNV",
>>>> .probe = pnv_probe,
>>>> @@ -205,7 +215,7 @@ define_machine(powernv) {
>>>> .show_cpuinfo = pnv_show_cpuinfo,
>>>> .progress = pnv_progress,
>>>> .machine_shutdown = pnv_shutdown,
>>>> - .power_save = power7_idle,
>>>> + .power_save = powernv_idle,
>>>> .calibrate_decr = generic_calibrate_decr,
>>>> #ifdef CONFIG_KEXEC
>>>> .kexec_cpu_down = pnv_kexec_cpu_down,
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>> Please read the FAQ at http://www.tux.org/lkml/
>>>>
>>>
>>>
>>
>
>
next prev parent reply other threads:[~2013-07-30 3:51 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-23 9:01 [PATCH 0/3] cpuidle: (powernv) cpuidle driver Deepthi Dharwar
2013-07-23 9:01 ` Deepthi Dharwar
2013-07-23 9:01 ` [PATCH 1/3] cpuidle/powernv: cpuidle backend driver for powernv Deepthi Dharwar
2013-07-23 9:01 ` Deepthi Dharwar
2013-07-23 14:06 ` Michael Ellerman
2013-07-23 14:06 ` Michael Ellerman
2013-07-24 9:58 ` Deepthi Dharwar
2013-07-24 9:58 ` Deepthi Dharwar
2013-07-27 5:27 ` [linux-pm] " Daniel Lezcano
2013-07-27 5:27 ` Daniel Lezcano
2013-07-29 14:39 ` Deepthi Dharwar
2013-07-29 14:39 ` Deepthi Dharwar
2013-07-29 14:53 ` Daniel Lezcano
2013-07-29 14:53 ` Daniel Lezcano
2013-07-30 3:51 ` Deepthi Dharwar
2013-08-02 10:32 ` Preeti U Murthy
2013-07-23 9:01 ` [PATCH 2/3] cpuidle/powernv: Enable idle powernv cpu to call into the cpuidle framework Deepthi Dharwar
2013-07-23 9:01 ` Deepthi Dharwar
2013-07-27 5:29 ` Daniel Lezcano
2013-07-27 5:29 ` Daniel Lezcano
2013-07-29 14:27 ` Deepthi Dharwar
2013-07-29 14:44 ` Daniel Lezcano
2013-07-30 3:50 ` Deepthi Dharwar [this message]
2013-07-23 9:02 ` [PATCH 3/3] cpuidle/powernv: Support smt-snooze-delay parameter in powernv idle Deepthi Dharwar
2013-07-23 9:02 ` Deepthi Dharwar
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=51F73815.2040406@linux.vnet.ibm.com \
--to=deepthi@linux.vnet.ibm.com \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=linuxppc-dev@lists.ozlabs.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.