From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: zynq: wfi exit on same cpu is valid
Date: Wed, 5 Jun 2013 12:29:13 +0100 [thread overview]
Message-ID: <20130605112913.GD18614@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <51AF1752.1040804@monstr.eu>
On Wed, Jun 05, 2013 at 12:47:46PM +0200, Michal Simek wrote:
> On 06/04/2013 04:17 PM, Russell King - ARM Linux wrote:
> > And yes, indeed, zynq can control the secondary CPU:
> >
> > void zynq_slcr_cpu_start(int cpu)
> > {
> > /* enable CPUn */
> > writel(SLCR_A9_CPU_CLKSTOP << cpu,
> > zynq_slcr_base + SLCR_A9_CPU_RST_CTRL);
> > /* enable CLK for CPUn */
> > writel(0x0 << cpu, zynq_slcr_base + SLCR_A9_CPU_RST_CTRL);
> > }
> >
> > void zynq_slcr_cpu_stop(int cpu)
> > {
> > /* stop CLK and reset CPUn */
> > writel((SLCR_A9_CPU_CLKSTOP | SLCR_A9_CPU_RST) << cpu,
> > zynq_slcr_base + SLCR_A9_CPU_RST_CTRL);
> > }
> >
> > So there's no need for the pen. There's no need for the low power crap
> > in hotplug.c, there's no need for the pen in hotplug.c. You just arrange
> > for the secondary CPU to have its clock stopped and reset when it is
> > taken offline.
> >
> > Hotplugging a CPU back in _should_ be no different from its initial
> > bringup into the kernel.
>
> I have tested that and cpu_die code is performed on cpu which
> should die.
> And simple calling zynq_slcr_cpu_stop() on cpu which should die
> just doesn't work.
> There is probably any expectation which I can't see.
Have you checked whether the CPU to die can write to this register to
stop its own clock and reset itself? Maybe you need a wfi() after
writing to that register to trigger the hardware to shutdown the CPU?
It's also entirely possible that you need some other CPU to do those
steps while the CPU to die spins in a loop or a wfi or something like
that. You can hook into that via the cpu_kill() callback, which will
have the CPU which is to die as its argument.
Without knowing how your hardware works, it's very difficult to be able
to positively point you in an appropriate direction, but the fact that
it's allegedly possible to turn the clock off and place the secondary
CPU in reset means that this should be possible somehow.
next prev parent reply other threads:[~2013-06-05 11:29 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-31 10:44 [PATCH] ARM: zynq: wfi exit on same cpu is valid Sanjay Singh Rawat
2013-06-03 8:14 ` Daniel Lezcano
2013-06-03 9:51 ` Michal Simek
2013-06-03 12:43 ` Daniel Lezcano
2013-06-04 7:29 ` Michal Simek
2013-06-04 12:40 ` Daniel Lezcano
2013-06-04 13:09 ` Michal Simek
2013-06-04 13:25 ` Daniel Lezcano
2013-06-04 11:39 ` Amit Kucheria
2013-06-04 11:58 ` Daniel Lezcano
2013-06-04 14:10 ` Russell King - ARM Linux
2013-06-04 14:17 ` Russell King - ARM Linux
2013-06-05 9:34 ` Daniel Lezcano
2013-06-05 10:47 ` Michal Simek
2013-06-05 11:29 ` Russell King - ARM Linux [this message]
2013-06-05 12:54 ` Michal Simek
[not found] ` <OFF951DD26.F13B5CB1-ON48257B81.003EE068-48257B81.003F07FB@spreadtrum.com>
2013-06-05 12:07 ` Michal Simek
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=20130605112913.GD18614@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--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 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).