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 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.