Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54d5f16e authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'for-mingo' of...

Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu

 into core/rcu

Pull RCU changes from Paul E. McKenney:

 - Documentation updates.  Just some simple changes, no design-level
   additions.

 - Miscellaneous fixes.

 - Torture-test updates.

Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents 4c2e07c6 4d03754f
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -2391,6 +2391,41 @@ and <tt>RCU_NONIDLE()</tt> on the other while inspecting
idle-loop code.
Steven Rostedt supplied <tt>_rcuidle</tt> event tracing,
which is used quite heavily in the idle loop.
However, there are some restrictions on the code placed within
<tt>RCU_NONIDLE()</tt>:

<ol>
<li>	Blocking is prohibited.
	In practice, this is not a serious restriction given that idle
	tasks are prohibited from blocking to begin with.
<li>	Although nesting <tt>RCU_NONIDLE()</tt> is permited, they cannot
	nest indefinitely deeply.
	However, given that they can be nested on the order of a million
	deep, even on 32-bit systems, this should not be a serious
	restriction.
	This nesting limit would probably be reached long after the
	compiler OOMed or the stack overflowed.
<li>	Any code path that enters <tt>RCU_NONIDLE()</tt> must sequence
	out of that same <tt>RCU_NONIDLE()</tt>.
	For example, the following is grossly illegal:

	<blockquote>
	<pre>
 1     RCU_NONIDLE({
 2       do_something();
 3       goto bad_idea;  /* BUG!!! */
 4       do_something_else();});
 5   bad_idea:
	</pre>
	</blockquote>

	<p>
	It is just as illegal to transfer control into the middle of
	<tt>RCU_NONIDLE()</tt>'s argument.
	Yes, in theory, you could transfer in as long as you also
	transferred out, but in practice you could also expect to get sharply
	worded review comments.
</ol>

<p>
It is similarly socially unacceptable to interrupt an
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ rcupdate.rcu_task_stall_timeout
	This boot/sysfs parameter controls the RCU-tasks stall warning
	interval.  A value of zero or less suppresses RCU-tasks stall
	warnings.  A positive value sets the stall-warning interval
	in jiffies.  An RCU-tasks stall warning starts wtih the line:
	in jiffies.  An RCU-tasks stall warning starts with the line:

		INFO: rcu_tasks detected stalls on tasks:

+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@ to start learning about RCU:
2.	What is RCU? Part 2: Usage   http://lwn.net/Articles/263130/
3.	RCU part 3: the RCU API      http://lwn.net/Articles/264090/
4.	The RCU API, 2010 Edition    http://lwn.net/Articles/418853/
	2010 Big API Table           http://lwn.net/Articles/419086/
5.	The RCU API, 2014 Edition    http://lwn.net/Articles/609904/
	2014 Big API Table           http://lwn.net/Articles/609973/


What is RCU?
+12 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ show up in /proc/sys/kernel:
- panic_on_stackoverflow
- panic_on_unrecovered_nmi
- panic_on_warn
- panic_on_rcu_stall
- perf_cpu_time_max_percent
- perf_event_paranoid
- perf_event_max_stack
@@ -618,6 +619,17 @@ a kernel rebuild when attempting to kdump at the location of a WARN().

==============================================================

panic_on_rcu_stall:

When set to 1, calls panic() after RCU stall detection messages. This
is useful to define the root cause of RCU stalls using a vmcore.

0: do not panic() when RCU stall takes place, default behavior.

1: panic() after printing RCU stall messages.

==============================================================

perf_cpu_time_max_percent:

Hints to the kernel how much CPU time it should be allowed to
+1 −0
Original line number Diff line number Diff line
@@ -451,6 +451,7 @@ extern int panic_on_oops;
extern int panic_on_unrecovered_nmi;
extern int panic_on_io_nmi;
extern int panic_on_warn;
extern int sysctl_panic_on_rcu_stall;
extern int sysctl_panic_on_stackoverflow;

extern bool crash_kexec_post_notifiers;
Loading