From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Kevin Hilman <khilman@ti.com>
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>,
mathieu.desnoyers@polymtl.ca, peterz@infradead.org,
fweisbec@gmail.com, Nicolas Ferre <nicolas.ferre@atmel.com>,
dhowells@redhat.com, Lennert Buytenhek <kernel@wantstofly.org>,
Kukjin Kim <kgene.kim@samsung.com>,
Russell King <linux@arm.linux.org.uk>,
eric.dumazet@gmail.com,
H Hartley Sweeten <hsweeten@visionengravers.com>,
Magnus Damm <magnus.damm@gmail.com>,
Tony Lindgren <tony@atomide.com>,
dipankar@in.ibm.com, darren@dvhart.com, mingo@elte.hu,
Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
Len Brown <len.brown@intel.com>,
Amit Kucheria <amit.kucheria@canonical.com>,
patches@linaro.org, Will Deacon <will.deacon@arm.com>,
josh@joshtriplett.org, Sekhar Nori <nsekhar@ti.com>,
niv@us.ibm.com, linux-samsung-soc@vger.kernel.org,
rostedt@goodmis.org, Barry Song <baohua.song@csr.com>,
tglx@linutronix.de, linux-omap@vger.ke
Subject: Re: [PATCH RFC idle 2/3] arm: Avoid invoking RCU when CPU is idle
Date: Fri, 3 Feb 2012 11:26:18 -0800 [thread overview]
Message-ID: <20120203192618.GI2382@linux.vnet.ibm.com> (raw)
In-Reply-To: <87k4437oaq.fsf@ti.com>
On Fri, Feb 03, 2012 at 10:41:01AM -0800, Kevin Hilman wrote:
> Rob Herring <robherring2@gmail.com> writes:
>
> > On 02/02/2012 04:20 PM, Kevin Hilman wrote:
> >> "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> writes:
> >>
> >> [...]
> >>
> >>>>> The two options I see are:
> >>>>>
> >>>>> 1. Rip tracing out of the inner idle loops and everything that
> >>>>> they invoke.
> >>>>
> >>>> What I suggested above. But as I said I know sh*t about that tracing
> >>>> implementation so that's an easy suggestion for me to make.
> >>>
> >>> Works for me as well. ;-)
> >>
> >> While I must admit not having a better suggestion, I for one would vote
> >> strongly against removing tracing from the idle path.
> >>
> >> Being a PM developer and maintainer, much of the code I work on and
> >> maintain happens to be run in the bowels of the idle path. Not having
> >> the ability to trace this code would be a major step backwards IMO.
> >
> > How is it a step backwards if it is already broken.
>
> Well, I didn't know it was broken. ;) And, as Paul mentioned, this has
> been broken for a long time. Apparently it's been working well enough
> for nobody to notice until recently.
Yep. The probability is quite low, but the consequences are dire.
We might well have hit it occasionally -- it would be a random
inexplicable crash.
Thanx, Paul
> > Obviously you haven't actually used any tracing here because it
> > doesn't work right with things as is.
>
> It's been working well enough for me to debug several idle path problems
> with tracing. Admittedly, this has been primarily on UP systems, but
> I've recently started using the tracing on SMP as well. (however, due
> to "coupled" low-power states on OMAP, large parts of the idle path are
> effectively UP since one CPU0 has to wait for CPU1 to hit a low-power
> state before it can.)
>
> > What exactly do you want to trace at this level. By the point you are in
> > this code, the path is somewhat known and problems you have are likely
> > h/w issues.
>
> Not really.
>
> There is still quite a bit of software between the decision to enter
> idle and the hardware taking over. On OMAP for example, we have power
> domains, clock domains and clocks that are managed during idle, and
> these layers contain tracepoints.
>
> Add to that the runtime PM management of some devices that are coupled
> to the CPU (because they share a power domain, etc). Runtime PM
> contains tracepoints.
>
> Add to that possible voltage scaling during idle using regulators.
> Regulator framework has tracepoints.
>
> That can lead to quite a bit of tracing info *after* the decision to
> enter idle.
>
> > If you are trying to go thru a very precise sequence of
> > saving cpu state and flushing caches, you don't want calls out to
> > tracing code that could very easily change the behavior.
>
> I'm more worried about the power domain and voltage domain transitions
> (or lack thereof) when trying to debug why a particular low-power state
> was not hit.
>
> Kevin
>
WARNING: multiple messages have this Message-ID (diff)
From: paulmck@linux.vnet.ibm.com (Paul E. McKenney)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC idle 2/3] arm: Avoid invoking RCU when CPU is idle
Date: Fri, 3 Feb 2012 11:26:18 -0800 [thread overview]
Message-ID: <20120203192618.GI2382@linux.vnet.ibm.com> (raw)
In-Reply-To: <87k4437oaq.fsf@ti.com>
On Fri, Feb 03, 2012 at 10:41:01AM -0800, Kevin Hilman wrote:
> Rob Herring <robherring2@gmail.com> writes:
>
> > On 02/02/2012 04:20 PM, Kevin Hilman wrote:
> >> "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> writes:
> >>
> >> [...]
> >>
> >>>>> The two options I see are:
> >>>>>
> >>>>> 1. Rip tracing out of the inner idle loops and everything that
> >>>>> they invoke.
> >>>>
> >>>> What I suggested above. But as I said I know sh*t about that tracing
> >>>> implementation so that's an easy suggestion for me to make.
> >>>
> >>> Works for me as well. ;-)
> >>
> >> While I must admit not having a better suggestion, I for one would vote
> >> strongly against removing tracing from the idle path.
> >>
> >> Being a PM developer and maintainer, much of the code I work on and
> >> maintain happens to be run in the bowels of the idle path. Not having
> >> the ability to trace this code would be a major step backwards IMO.
> >
> > How is it a step backwards if it is already broken.
>
> Well, I didn't know it was broken. ;) And, as Paul mentioned, this has
> been broken for a long time. Apparently it's been working well enough
> for nobody to notice until recently.
Yep. The probability is quite low, but the consequences are dire.
We might well have hit it occasionally -- it would be a random
inexplicable crash.
Thanx, Paul
> > Obviously you haven't actually used any tracing here because it
> > doesn't work right with things as is.
>
> It's been working well enough for me to debug several idle path problems
> with tracing. Admittedly, this has been primarily on UP systems, but
> I've recently started using the tracing on SMP as well. (however, due
> to "coupled" low-power states on OMAP, large parts of the idle path are
> effectively UP since one CPU0 has to wait for CPU1 to hit a low-power
> state before it can.)
>
> > What exactly do you want to trace at this level. By the point you are in
> > this code, the path is somewhat known and problems you have are likely
> > h/w issues.
>
> Not really.
>
> There is still quite a bit of software between the decision to enter
> idle and the hardware taking over. On OMAP for example, we have power
> domains, clock domains and clocks that are managed during idle, and
> these layers contain tracepoints.
>
> Add to that the runtime PM management of some devices that are coupled
> to the CPU (because they share a power domain, etc). Runtime PM
> contains tracepoints.
>
> Add to that possible voltage scaling during idle using regulators.
> Regulator framework has tracepoints.
>
> That can lead to quite a bit of tracing info *after* the decision to
> enter idle.
>
> > If you are trying to go thru a very precise sequence of
> > saving cpu state and flushing caches, you don't want calls out to
> > tracing code that could very easily change the behavior.
>
> I'm more worried about the power domain and voltage domain transitions
> (or lack thereof) when trying to debug why a particular low-power state
> was not hit.
>
> Kevin
>
next prev parent reply other threads:[~2012-02-03 19:26 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-02 0:42 [PATCH RFC idle] Make arm, sh, and x86 stop using RCU when idle Paul E. McKenney
2012-02-02 0:43 ` [PATCH RFC idle 1/3] x86: Avoid invoking RCU when CPU is idle Paul E. McKenney
2012-02-02 0:43 ` [PATCH RFC idle 2/3] arm: " Paul E. McKenney
2012-02-02 0:43 ` Paul E. McKenney
2012-02-02 2:48 ` Rob Herring
2012-02-02 2:48 ` Rob Herring
2012-02-02 4:40 ` Paul E. McKenney
2012-02-02 4:40 ` Paul E. McKenney
2012-02-02 3:49 ` Nicolas Pitre
2012-02-02 3:49 ` Nicolas Pitre
2012-02-02 4:44 ` Paul E. McKenney
2012-02-02 4:44 ` Paul E. McKenney
2012-02-02 17:13 ` Nicolas Pitre
2012-02-02 17:13 ` Nicolas Pitre
2012-02-02 17:43 ` Paul E. McKenney
2012-02-02 17:43 ` Paul E. McKenney
2012-02-02 18:31 ` Nicolas Pitre
2012-02-02 18:31 ` Nicolas Pitre
2012-02-02 19:07 ` Paul E. McKenney
2012-02-02 19:07 ` Paul E. McKenney
2012-02-02 22:20 ` Kevin Hilman
2012-02-02 22:20 ` Kevin Hilman
2012-02-02 22:49 ` Rob Herring
2012-02-02 22:49 ` Rob Herring
2012-02-02 23:03 ` Steven Rostedt
2012-02-02 23:03 ` Steven Rostedt
2012-02-02 23:27 ` Paul E. McKenney
2012-02-02 23:27 ` Paul E. McKenney
2012-02-02 23:51 ` Paul E. McKenney
2012-02-02 23:51 ` Paul E. McKenney
2012-02-03 2:45 ` Steven Rostedt
2012-02-03 2:45 ` Steven Rostedt
2012-02-03 6:04 ` Paul E. McKenney
2012-02-03 6:04 ` Paul E. McKenney
2012-02-03 18:55 ` Steven Rostedt
2012-02-03 18:55 ` Steven Rostedt
2012-02-03 19:40 ` Paul E. McKenney
2012-02-03 19:40 ` Paul E. McKenney
2012-02-03 20:02 ` Steven Rostedt
2012-02-03 20:02 ` Steven Rostedt
2012-02-03 20:23 ` Paul E. McKenney
2012-02-03 20:23 ` Paul E. McKenney
2012-02-06 21:18 ` [PATCH][RFC] tracing/rcu: Add trace_##name##__rcuidle() static tracepoint for inside rcu_idle_exit() sections Steven Rostedt
2012-02-06 21:18 ` Steven Rostedt
2012-02-06 23:38 ` Paul E. McKenney
2012-02-06 23:38 ` Paul E. McKenney
2012-02-07 12:32 ` Steven Rostedt
2012-02-07 12:32 ` Steven Rostedt
2012-02-07 14:11 ` Paul E. McKenney
2012-02-07 14:11 ` Paul E. McKenney
2012-02-08 13:57 ` Frederic Weisbecker
2012-02-08 13:57 ` Frederic Weisbecker
2012-02-07 14:40 ` Josh Triplett
2012-02-07 14:40 ` Josh Triplett
[not found] ` <20120206220502.GA21340@leaf>
2012-02-07 0:36 ` Steven Rostedt
2012-02-07 0:36 ` Steven Rostedt
2012-02-17 13:47 ` [tip:perf/core] " tip-bot for Steven Rostedt
[not found] ` <20120203025350.GF13456@leaf>
2012-02-03 6:06 ` [PATCH RFC idle 2/3] arm: Avoid invoking RCU when CPU is idle Paul E. McKenney
2012-02-03 6:06 ` Paul E. McKenney
2012-02-02 23:39 ` Rob Herring
2012-02-02 23:39 ` Rob Herring
2012-02-03 18:41 ` Kevin Hilman
2012-02-03 18:41 ` Kevin Hilman
2012-02-03 19:26 ` Paul E. McKenney [this message]
2012-02-03 19:26 ` Paul E. McKenney
2012-02-03 19:36 ` Steven Rostedt
2012-02-03 19:36 ` Steven Rostedt
2012-02-04 14:21 ` Paul E. McKenney
2012-02-04 14:21 ` Paul E. McKenney
2012-02-06 19:32 ` Steven Rostedt
2012-02-06 19:32 ` Steven Rostedt
2012-02-02 23:03 ` Paul E. McKenney
2012-02-02 23:03 ` Paul E. McKenney
2012-02-03 19:12 ` Kevin Hilman
2012-02-03 19:12 ` Kevin Hilman
2012-02-03 19:26 ` Paul E. McKenney
2012-02-03 19:26 ` Paul E. McKenney
2012-02-02 0:43 ` [PATCH RFC idle 3/3] sh: " Paul E. McKenney
2012-02-02 0:43 ` Paul E. McKenney
2012-02-02 1:54 ` [PATCH RFC idle 1/3] x86: " Frederic Weisbecker
2012-02-02 4:55 ` Paul E. McKenney
2012-02-02 0:48 ` [PATCH RFC idle] Make arm, sh, and x86 stop using RCU when idle Josh Triplett
2012-02-02 1:14 ` Paul E. McKenney
2012-02-02 2:29 ` Paul Mundt
2012-02-02 4:58 ` Paul E. McKenney
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=20120203192618.GI2382@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=amit.kucheria@canonical.com \
--cc=baohua.song@csr.com \
--cc=darren@dvhart.com \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=eric.dumazet@gmail.com \
--cc=fweisbec@gmail.com \
--cc=hsweeten@visionengravers.com \
--cc=josh@joshtriplett.org \
--cc=kernel@wantstofly.org \
--cc=kgene.kim@samsung.com \
--cc=khilman@ti.com \
--cc=len.brown@intel.com \
--cc=linux-omap@vger.ke \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=magnus.damm@gmail.com \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=nicolas.ferre@atmel.com \
--cc=nicolas.pitre@linaro.org \
--cc=niv@us.ibm.com \
--cc=nsekhar@ti.com \
--cc=patches@linaro.org \
--cc=peterz@infradead.org \
--cc=plagnioj@jcrosoft.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=tony@atomide.com \
--cc=will.deacon@arm.com \
/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.