From: kgene@kernel.org (Kukjin Kim)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/5] ARM: EXYNOS: fix the hotplug for Cortex-A15
Date: Tue, 20 Nov 2012 18:41:50 +0900 [thread overview]
Message-ID: <0c4c01cdc703$43deda00$cb9c8e00$@org> (raw)
In-Reply-To: <20121106135502.GE30439@e102568-lin.cambridge.arm.com>
Lorenzo Pieralisi wrote:
>
> On Tue, Nov 06, 2012 at 12:17:02PM +0000, Santosh Shilimkar wrote:
> > On Tuesday 06 November 2012 12:12 AM, Abhilash Kesavan wrote:
> > > The sequence of cpu_enter_lowpower() for Cortex-A15
> > > is different from the sequence for Cortex-A9.
> > Are you sure ? Apart from integrated cache vs external, there
> > should be no change. And L2 doesn't need to come into picture
> > while powering down just a CPU.
>
> Reiterating Santosh point in here. v7 shutdown procedure is and has to
> be identical across all v7 cores. There is not such a thing as "A15
> specific" shutdown procedure.
>
BTW, it's true that current codes cannot support A15. So we need a separate
A15 func. And a A9 func. Now, cpu_enter_lowpower_a9() on A15 does NOT
work...also cpu_enter_lowpower_a15() on A9 does NOT work as well...
> Embedded L2 will come into the picture on multi-cluster systems, for the
> time being L2 must not be flushed when hotplugging a CPU in a single
> cluster
> so the LoUIS API is to be used here.
>
OK.
> > > This patch implements cpu_enter_lowpower() for EXYNOS5
> > > SoC which has Cortex-A15 cores.
[...]
> > >
> > > +static inline void cpu_enter_lowpower_a15(void)
> > > +{
> > > + unsigned int v;
> > > +
> > > + asm volatile(
> > > + " mrc p15, 0, %0, c1, c0, 0\n"
> > > + " bic %0, %0, %1\n"
> > > + " mcr p15, 0, %0, c1, c0, 0\n"
> > > + : "=&r" (v)
> > > + : "Ir" (CR_C)
> > > + : "cc");
> > > +
> > > + flush_cache_all();
> > > +
> > Why are flushing all the cache levels ?
> > flush_kern_louis() should be enough for CPU power
> > down.
>
> Agree with Santosh again.
>
Yes, agree. I will replace as per your suggestion when I apply this. And as
I know, Abhilash already tested it on the boards and it works fine.
> >
> > > + asm volatile(
> > > + /*
> > > + * Turn off coherency
> > > + */
> > > + " mrc p15, 0, %0, c1, c0, 1\n"
> > > + " bic %0, %0, %1\n"
> > > + " mcr p15, 0, %0, c1, c0, 1\n"
> > > + : "=&r" (v)
> > > + : "Ir" (0x40)
> > > + : "cc");
> > > +
> > > + isb();
> > > + dsb();
> > > +}
> > > +
> > The above sequence should work on A9 as well. In general you should have
> > CPU power down code under one code block and avoid making use of stack
> > in between. Otherwise you will end up with stack corruption because of
> > the memory view change after C bit is disabled.
> >
> > Regards
> > Santosh
>
> The above sequence does not work on A9 since A9 does not look-up the
> caches when the C bit is cleared. It is an accident waiting to happen,
> as Santosh explained.
>
> The sequence:
>
> - clear C bit
> - clean L1
> - exit SMP
>
> must be written in assembly with no access to any data whatsoever, no
> stack,
> _nothing_.
>
> There is some code in the works to consolidate this procedure once for all
> but
> all bits and pieces are already in the kernel.
>
I see, so it means, at this moment, exynos stuff needs this patch until
finishing common implementation you said. Then, I think, if any common codes
are available, we can use new codes instead.
K-Gene <kgene@kernel.org>
next prev parent reply other threads:[~2012-11-20 9:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-06 6:12 [PATCH 0/5] PM Fixes for exynos5 Abhilash Kesavan
2012-11-06 6:12 ` [PATCH 1/5] ARM: EXYNOS: fix the hotplug for Cortex-A15 Abhilash Kesavan
2012-11-06 6:21 ` Kyungmin Park
2012-11-06 12:17 ` Santosh Shilimkar
2012-11-06 13:55 ` Lorenzo Pieralisi
2012-11-20 9:41 ` Kukjin Kim [this message]
2012-11-06 6:12 ` [PATCH 2/5] ARM: EXYNOS5: Add support for rtc wakeup Abhilash Kesavan
2012-11-06 6:12 ` [PATCH 3/5] ARM: EXYNOS: Fix soft reboot hang after suspend/resume Abhilash Kesavan
2012-11-06 6:12 ` [PATCH 4/5] ARM: EXYNOS5: Remove scu_enable from cpuidle Abhilash Kesavan
2012-11-06 6:12 ` [PATCH 5/5] ARM: EXYNOS5: Add flush_cache_all in suspend finisher Abhilash Kesavan
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='0c4c01cdc703$43deda00$cb9c8e00$@org' \
--to=kgene@kernel.org \
--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).