From: Dave Martin <Dave.Martin-5wv7dgnIgG8@public.gmane.org>
To: Abhilash Kesavan
<a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
Nicolas Pitre
<nicolas.pitre-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: mark.rutland-5wv7dgnIgG8@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Lorenzo Pieralisi
<lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
t.figa-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
inderpal.s-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
thomas.ab-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 5/5] arm: exynos: Add MCPM call-back functions
Date: Tue, 15 Apr 2014 09:36:15 +0100 [thread overview]
Message-ID: <20140415083615.GC3596@e103592.cambridge.arm.com> (raw)
In-Reply-To: <alpine.LFD.2.11.1404140956060.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
On Mon, Apr 14, 2014 at 10:01:27AM -0400, Nicolas Pitre wrote:
> On Mon, 14 Apr 2014, Dave Martin wrote:
>
> > On Fri, Apr 11, 2014 at 04:23:04PM -0400, Nicolas Pitre wrote:
> > > On Fri, 11 Apr 2014, Abhilash Kesavan wrote:
> > >
> > > > Add machine-dependent MCPM call-backs for Exynos5420. These are used
> > > > to power up/down the secondary CPUs during boot, shutdown, s2r and
> > > > switching.
> > > >
> > > > Signed-off-by: Thomas Abraham <thomas.ab-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> > > > Signed-off-by: Inderpal Singh <inderpal.s-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> > > > Signed-off-by: Andrew Bresticker <abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
> > > > Signed-off-by: Abhilash Kesavan <a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> > >
> > > See comments inline.
> >
> > I won't duplicate Nico's review, but I have a couple of extra comments/
> > questions, below.
> >
> > [...]
> >
> > > > diff --git a/arch/arm/mach-exynos/mcpm-exynos.c b/arch/arm/mach-exynos/mcpm-exynos.c
> > > > new file mode 100644
> > > > index 0000000..46d4968
> > > > --- /dev/null
> > > > +++ b/arch/arm/mach-exynos/mcpm-exynos.c
> > > > @@ -0,0 +1,444 @@
> >
> > [...]
> >
> > > > +static void exynos_cluster_power_control(unsigned int cluster, int enable)
> > > > +{
> > > > + unsigned long timeout = jiffies + msecs_to_jiffies(20);
> > > > + unsigned int status, val = EXYNOS_CORE_LOCAL_PWR_DIS;
> > > > +
> > > > + if (enable)
> > > > + val = EXYNOS_CORE_LOCAL_PWR_EN;
> > > > +
> > > > + status = __raw_readl(EXYNOS_COMMON_STATUS(cluster));
> > > > + if ((status & EXYNOS_CORE_LOCAL_PWR_EN) == val)
> > > > + return;
> > > > +
> > > > + __raw_writel(val, EXYNOS_COMMON_CONFIGURATION(cluster));
> > > > + /* Wait until cluster power control is applied */
> > > > + while (time_before(jiffies, timeout)) {
> > > > + status = __raw_readl(EXYNOS_COMMON_STATUS(cluster));
> > > > +
> > > > + if ((status & EXYNOS_CORE_LOCAL_PWR_EN) == val)
> > > > + return;
> > > > +
> > > > + cpu_relax();
> > > > + }
> > > > + pr_warn("timed out waiting for cluster %u to power %s\n", cluster,
> > > > + enable ? "on" : "off");
> > >
> > > You should not have to wait for the power status to change here.
> > > Simply signaling the desired state and returning is all that is
> > > expected. And because IRQs are turned off, it is likely that
> > > time_before(jiffies, timeout) will always be true anyway because jiffies
> > > are not updated if there is no other CPU to service the timer interrupt.
> > >
> > > The actual power status should be polled for in the mcpm_finish()
> > > method only.
> >
> > Depending on the power controller, it might be possible for writes to
> > the controller to be lost or not acted upon, if a previous change is
> > still pending.
> >
> > Does this issue apply to the exynos power controller?
>
> Given the way the code is structured now, I suppose that has not been
> the case so far.
It depends on the purpose of the polling loop. If it was added to resolve
a race between a power-up and a power-down that is complete in MCPM but
still pending in the hardware, than that would suggest the power controller
does have this behaviour.
But I'm just guessing.
Abhilash, can you comment?
> >
> > If this is the case, it might be necessary to ensure before a power-up
> > request, that the power controller has caught up and reports the
> > cluster/CPU as down. Putting this poll before the write to the
> > power controller maximises the chance of pipelining useful work
> > in the meantime. Putting the poll after the write is the worst case.
>
> More useful might be a check on the actual _control_ bit. If the
> control bits may be read back then I expect the indicated state will
> happen even if delayed.
Quite likely, yes. It just depends on what the hardware specs say.
Cheers
---Dave
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-04-15 8:36 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-11 18:01 [PATCH 0/5] MCPM backend for Exynos5420 Abhilash Kesavan
[not found] ` <1397239311-27717-1-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-11 18:01 ` [PATCH 1/5] ARM: bL_switcher: Don't enable bL switcher on systems without CCI Abhilash Kesavan
[not found] ` <1397239311-27717-2-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-11 18:14 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404111406210.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-16 19:10 ` Abhilash Kesavan
2014-04-16 20:18 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404161524050.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-21 15:57 ` Abhilash Kesavan
[not found] ` <CAM4voamv7CrGpnM_HgTsSU6jvb3TffC0BKKrvNh-VHj+u9EKOQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-21 23:37 ` Nicolas Pitre
2014-04-11 18:01 ` [PATCH 2/5] drivers/bus: arm-cci: Add common control interface for ACE ports Abhilash Kesavan
[not found] ` <1397239311-27717-3-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-11 18:24 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404111419540.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-11 19:16 ` Abhilash Kesavan
2014-04-11 18:01 ` [PATCH 3/5] ARM: EXYNOS5420: Add IO mapping for non-secure SYSRAM Abhilash Kesavan
[not found] ` <1397239311-27717-4-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-14 11:25 ` Dave Martin
2014-04-14 11:47 ` Arnd Bergmann
2014-04-14 11:59 ` Dave Martin
[not found] ` <20140414115910.GD3844-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2014-04-14 13:24 ` Arnd Bergmann
2014-04-16 19:10 ` Abhilash Kesavan
2014-04-11 18:01 ` [PATCH 4/5] ARM: dts: exynos5420: add CCI node Abhilash Kesavan
[not found] ` <1397239311-27717-5-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-22 6:16 ` [PATCH v2 1/3] " Abhilash Kesavan
2014-04-11 18:01 ` [PATCH 5/5] arm: exynos: Add MCPM call-back functions Abhilash Kesavan
[not found] ` <1397239311-27717-6-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-11 20:23 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404111426510.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-14 10:41 ` Dave Martin
[not found] ` <20140414104116.GA3844-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2014-04-14 14:01 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404140956060.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-15 8:36 ` Dave Martin [this message]
[not found] ` <20140415083615.GC3596-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2014-04-16 19:11 ` Abhilash Kesavan
[not found] ` <CAM4voamo5iiOQ5P1JyO8kekU6cuxoj4oAT+VpS14LNvWqw_T4g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-17 10:03 ` Dave Martin
[not found] ` <20140417100302.GB18864-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2014-04-21 15:57 ` Abhilash Kesavan
[not found] ` <CAM4voamiJ-HZqz8Rgc-RTCjNRDaw5VQbs6GVfxPDxqCKKhm6XA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-22 2:11 ` Nicolas Pitre
2014-04-16 19:11 ` Abhilash Kesavan
[not found] ` <CAM4voa=-29EsNRCebri1C9D5cWopTT4Ux_0UPGAvdjP60ADZZQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-17 9:59 ` Dave Martin
[not found] ` <20140417095925.GA18864-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2014-04-17 15:20 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404171114370.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-17 15:38 ` Dave Martin
[not found] ` <20140417153812.GD18864-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2014-04-21 15:57 ` Abhilash Kesavan
2014-04-16 19:11 ` Abhilash Kesavan
2014-04-22 6:17 ` [PATCH v2 2/3] " Abhilash Kesavan
[not found] ` <1398147435-3122-1-git-send-email-a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-22 11:21 ` Daniel Lezcano
[not found] ` <535650AE.90501-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-04-22 15:40 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404221129150.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-22 19:21 ` Daniel Lezcano
[not found] ` <5356C134.8070707-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-04-22 19:56 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404221540540.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-23 15:31 ` Abhilash Kesavan
2014-04-23 16:13 ` Lorenzo Pieralisi
[not found] ` <20140423161325.GB1243-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-06-17 2:38 ` Abhilash Kesavan
[not found] ` <CAM4voa=Lv3xpHfHVcua1jpajEY1XPrXKK=vS4-_3r+etmB4DDQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-19 8:56 ` Lorenzo Pieralisi
[not found] ` <20140619085607.GB5401-7AyDDHkRsp3ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-06-19 12:23 ` Abhilash Kesavan
2014-04-23 15:31 ` Abhilash Kesavan
[not found] ` <CAM4voa=WJiF-9wZB29JOFhz2kEE-TC0y6h-8GVwk3_JoXxpK+A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-23 20:56 ` Daniel Lezcano
2014-04-22 19:18 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.11.1404221428070.980-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2014-04-23 15:31 ` Abhilash Kesavan
2014-04-22 6:16 ` [PATCH v2 0/3] MCPM backend for Exynos5420 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=20140415083615.GC3596@e103592.cambridge.arm.com \
--to=dave.martin-5wv7dgnigg8@public.gmane.org \
--cc=a.kesavan-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=inderpal.s-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=nicolas.pitre-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=t.figa-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=thomas.ab-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.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).