From: jszhang@marvell.com (Jisheng Zhang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/4] arm: psci: add cpuidle_ops support
Date: Wed, 8 Jul 2015 20:42:18 +0800 [thread overview]
Message-ID: <20150708204218.50c3cfc3@xhacker> (raw)
In-Reply-To: <20150708193842.1ca1c55a@xhacker>
Dear Russell,
On Wed, 8 Jul 2015 19:38:42 +0800
Jisheng Zhang <jszhang@marvell.com> wrote:
> Dear Russell,
>
> On Wed, 8 Jul 2015 11:34:29 +0100
> Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>
> > On Wed, Jul 08, 2015 at 06:13:37PM +0800, Jisheng Zhang wrote:
> > > This patch implements cpuidle_ops using psci. After this patch, we can use
> > > cpuidle-arm.c with psci backend for both arm and arm64.
> >
> > I really don't see the point of most of the patches in this series.
> >
> > To summarise, what you're doing is:
> >
> > 1. Renaming arch/arm/kernel/psci_smp.c to arch/arm/kernel/psci.c
> > 2. Adding a #ifdef CONFIG_SMP around _all_ the code in psci.c
> > 3. Adding cpuidle code with an #ifdef CONFIG_CPU_IDLE around all the
> > CPU idle code.
> >
> > So, we end up with a file which contains:
> >
> > /*
> > header
> > */
> > #include statements
> >
> > /*
> > some commentry relevant to SMP code
> > */
> > #ifdef CONFIG_CPU_IDLE
> > ... cpu idle code ...
> > #endif
> > #ifdef CONFIG_SMP
> > ... smp code ...
> > #endif
> >
> > which (a) is a mess, and (b) is unnecessary. The only relevant bits which
> > are shared are the #include statements.
> >
> > Please try this alternative approach:
> >
> > 1. Leave psci_smp.c alone.
> > 2. Add arch/arm/kernel/psci_cpuidle.c containing the #include statements
> > you need, and the CPU idle code.
After more consideration, I have one concern.
Currently, cpuidle_ops is defined as the following,
> struct cpuidle_ops {
> int (*suspend)(int cpu, unsigned long arg);
the cpu may not be necessary, because to-be-suspended cpu is always the calling
cpu itself.
> int (*init)(struct device_node *, int cpu);
the device_node here may not be necessary either, because we can get the node
via. of_get_cpu_node.
So if we refine cpuidle_ops defintion, the code would be as simple as
static struct cpuidle_ops psci_cpuidle_ops __initdata = {
.suspend = cpu_psci_cpu_suspend,
.init = cpu_psci_cpu_init_idle,
};
CPUIDLE_METHOD_OF_DECLARE(psci_idle, "psci", &psci_cpuidle_ops);
I'm not sure a new psci_cpuidle.c only with above 5 lines is acceptable or not.
Thanks,
Jisheng
> >
> > I think such an approach will reduce your patch series to two patches,
> > one moving the ARM64 code, and one adding the cpuidle code.
> >
>
> Good idea! Will refine the patches as you suggested.
>
WARNING: multiple messages have this Message-ID (diff)
From: Jisheng Zhang <jszhang@marvell.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: <mark.rutland@arm.com>, <Lorenzo.Pieralisi@arm.com>,
<Catalin.Marinas@arm.com>, <daniel.lezcano@linaro.org>,
<will.deacon@arm.com>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 4/4] arm: psci: add cpuidle_ops support
Date: Wed, 8 Jul 2015 20:42:18 +0800 [thread overview]
Message-ID: <20150708204218.50c3cfc3@xhacker> (raw)
In-Reply-To: <20150708193842.1ca1c55a@xhacker>
Dear Russell,
On Wed, 8 Jul 2015 19:38:42 +0800
Jisheng Zhang <jszhang@marvell.com> wrote:
> Dear Russell,
>
> On Wed, 8 Jul 2015 11:34:29 +0100
> Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
>
> > On Wed, Jul 08, 2015 at 06:13:37PM +0800, Jisheng Zhang wrote:
> > > This patch implements cpuidle_ops using psci. After this patch, we can use
> > > cpuidle-arm.c with psci backend for both arm and arm64.
> >
> > I really don't see the point of most of the patches in this series.
> >
> > To summarise, what you're doing is:
> >
> > 1. Renaming arch/arm/kernel/psci_smp.c to arch/arm/kernel/psci.c
> > 2. Adding a #ifdef CONFIG_SMP around _all_ the code in psci.c
> > 3. Adding cpuidle code with an #ifdef CONFIG_CPU_IDLE around all the
> > CPU idle code.
> >
> > So, we end up with a file which contains:
> >
> > /*
> > header
> > */
> > #include statements
> >
> > /*
> > some commentry relevant to SMP code
> > */
> > #ifdef CONFIG_CPU_IDLE
> > ... cpu idle code ...
> > #endif
> > #ifdef CONFIG_SMP
> > ... smp code ...
> > #endif
> >
> > which (a) is a mess, and (b) is unnecessary. The only relevant bits which
> > are shared are the #include statements.
> >
> > Please try this alternative approach:
> >
> > 1. Leave psci_smp.c alone.
> > 2. Add arch/arm/kernel/psci_cpuidle.c containing the #include statements
> > you need, and the CPU idle code.
After more consideration, I have one concern.
Currently, cpuidle_ops is defined as the following,
> struct cpuidle_ops {
> int (*suspend)(int cpu, unsigned long arg);
the cpu may not be necessary, because to-be-suspended cpu is always the calling
cpu itself.
> int (*init)(struct device_node *, int cpu);
the device_node here may not be necessary either, because we can get the node
via. of_get_cpu_node.
So if we refine cpuidle_ops defintion, the code would be as simple as
static struct cpuidle_ops psci_cpuidle_ops __initdata = {
.suspend = cpu_psci_cpu_suspend,
.init = cpu_psci_cpu_init_idle,
};
CPUIDLE_METHOD_OF_DECLARE(psci_idle, "psci", &psci_cpuidle_ops);
I'm not sure a new psci_cpuidle.c only with above 5 lines is acceptable or not.
Thanks,
Jisheng
> >
> > I think such an approach will reduce your patch series to two patches,
> > one moving the ARM64 code, and one adding the cpuidle code.
> >
>
> Good idea! Will refine the patches as you suggested.
>
next prev parent reply other threads:[~2015-07-08 12:42 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-08 10:13 [PATCH 0/4] arm: psci: implement cpuidle_ops Jisheng Zhang
2015-07-08 10:13 ` Jisheng Zhang
2015-07-08 10:13 ` [PATCH 1/4] arm: psci: rename psci_smp.c to psci.c Jisheng Zhang
2015-07-08 10:13 ` Jisheng Zhang
2015-07-08 10:13 ` [PATCH 2/4] arm: psci: enable PSCI on UP systems Jisheng Zhang
2015-07-08 10:13 ` Jisheng Zhang
2015-07-08 10:13 ` [PATCH 3/4] firmware: psci: move cpu_suspend handling to generic code Jisheng Zhang
2015-07-08 10:13 ` Jisheng Zhang
2015-07-08 10:13 ` [PATCH 4/4] arm: psci: add cpuidle_ops support Jisheng Zhang
2015-07-08 10:13 ` Jisheng Zhang
2015-07-08 10:34 ` Russell King - ARM Linux
2015-07-08 10:34 ` Russell King - ARM Linux
2015-07-08 11:38 ` Jisheng Zhang
2015-07-08 11:38 ` Jisheng Zhang
2015-07-08 12:42 ` Jisheng Zhang [this message]
2015-07-08 12:42 ` Jisheng Zhang
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=20150708204218.50c3cfc3@xhacker \
--to=jszhang@marvell.com \
--cc=linux-arm-kernel@lists.infradead.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.