From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Tony Lindgren <tony@atomide.com>
Cc: Alex Shi <alex.shi@linaro.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>,
Linux OMAP Mailing List <linux-omap@vger.kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <Will.Deacon@arm.com>
Subject: Re: Regression with suspicious RCU usage splats with cpu_pm change
Date: Tue, 18 Jul 2017 10:00:01 -0700 [thread overview]
Message-ID: <20170718170001.GD3981@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170718054137.GK10026@atomide.com>
On Mon, Jul 17, 2017 at 10:41:38PM -0700, Tony Lindgren wrote:
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> [170717 05:40]:
> > On Sun, Jul 16, 2017 at 11:08:07PM -0700, Tony Lindgren wrote:
> > > * Alex Shi <alex.shi@linaro.org> [170716 16:25]:
> > > > I reused the rcu_irq_enter_irqson() from RCU_NONIDLE to avoid this issue.
> > > > It works fine.
> > > >
> > > > Tony, Could you like to give a tested-by if this patch works for you.
> > >
> > > Yeah that keeps things booting for me with no splats so:
> > >
> > > Tested-by: Tony Lindgren <tony@atomide.com>
> > >
> > > In general, it seems we're missing the knowledge in Linux kernel
> > > of when the entire system is idle. Right now it seems that only
> > > cpuidle_coupled knows that?
> > >
> > > We could probably simplify things by adding some PM state for
> > > entire system idle. Then cpuidle code and timer code could use
> > > that to test when it's safe to do whatever the SoC needs to do
> > > to enter deeper power states.
> > >
> > > If we already have something like that, please do let me know :)
> >
> > Well, we used to have CONFIG_NO_HZ_FULL_SYSIDLE, which detected
> > full-system idle lazily so as to avoid scalability bottlenecks.
> > https://lwn.net/Articles/558284/
> >
> > No one was using it, so I removed it last merge window. The
> > patch that removed it is at sysidle.2017.05.11a, which can
> > probably still be reverted cleanly. Or just use v4.11 or earlier.
>
> OK thanks for the pointer, for reference that commit is
> fe5ac724d81a ("rcu: Remove nohz_full full-system-idle state
> machine").
>
> For a potential user, I think we could use it for example in
> cpuidle_enter_state_coupled() + omap_enter_idle_coupled() where
> we try to figure out if the system is fully idle before calling
> tick_broadcast_enter().
Would you be willing to prototype your usage on v4.12? It still has
NO_HZ_FULL_SYSIDLE. You have to enable NO_HZ_FULL in order to enable
NO_HZ_FULL_SYSIDLE at the moment.
Either way, here is the important bit for usage:
bool rcu_sys_is_idle(void);
void rcu_sysidle_force_exit(void);
The rcu_sys_is_idle() function returns true if all CPUs other than the
time-keeping CPU (that is, tick_do_timer_cpu, which is usually CPU 0)
are in their idle loop. Of course, if you invoke rcu_sys_is_idle()
from any CPU other than the time-keeping CPU, you will automatically
get a return value of false.
RCU's idle-exit code already sets state appropriately, but if there
is some other circumstance where you need to force the state machine
out of all-CPUs-idle state, you can call rcu_sysidle_force_exit().
Thanx, Paul
next prev parent reply other threads:[~2017-07-18 17:00 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-13 7:07 Regression with suspicious RCU usage splats with cpu_pm change Tony Lindgren
2017-07-13 9:43 ` Alex Shi
2017-07-13 11:50 ` Rafael J. Wysocki
2017-07-13 12:43 ` Paul E. McKenney
2017-07-16 23:24 ` Alex Shi
2017-07-17 6:08 ` Tony Lindgren
2017-07-17 12:39 ` Paul E. McKenney
2017-07-18 5:41 ` Tony Lindgren
2017-07-18 17:00 ` Paul E. McKenney [this message]
2017-07-19 8:01 ` Tony Lindgren
2017-07-27 9:55 ` Alex Shi
2017-07-27 21:32 ` Rafael J. Wysocki
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=20170718170001.GD3981@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=Will.Deacon@arm.com \
--cc=alex.shi@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=tony@atomide.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.