Skip to content

Commit e7ffb4e

Browse files
author
Paul E. McKenney
committed
Merge branches 'doc.2019.01.26a', 'fixes.2019.01.26a', 'sil.2019.01.26a', 'spdx.2019.02.09a', 'srcu.2019.01.26a' and 'torture.2019.01.26a' into HEAD
doc.2019.01.26a: Documentation updates. fixes.2019.01.26a: Miscellaneous fixes. sil.2019.01.26a: Removal of a few more spin_is_locked() instances. spdx.2019.02.09a: Add SPDX identifiers to RCU files srcu.2019.01.26a: SRCU updates. torture.2019.01.26a: Torture-test updates.
6 parents 87d1779 + 423a86a + 6706dae + 5a4eb3c + e81baf4 + 6684880 commit e7ffb4e

37 files changed

+296
-715
lines changed

Documentation/RCU/Design/Memory-Ordering/Tree-RCU-Memory-Ordering.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -485,13 +485,13 @@ <h4><a name="Self-Reported Quiescent States">
485485
noted by <tt>rcu_node_context_switch()</tt> on the left.
486486
On the other hand, if the CPU takes a scheduler-clock interrupt
487487
while executing in usermode, a quiescent state will be noted by
488-
<tt>rcu_check_callbacks()</tt> on the right.
488+
<tt>rcu_sched_clock_irq()</tt> on the right.
489489
Either way, the passage through a quiescent state will be noted
490490
in a per-CPU variable.
491491

492492
<p>The next time an <tt>RCU_SOFTIRQ</tt> handler executes on
493493
this CPU (for example, after the next scheduler-clock
494-
interrupt), <tt>__rcu_process_callbacks()</tt> will invoke
494+
interrupt), <tt>rcu_core()</tt> will invoke
495495
<tt>rcu_check_quiescent_state()</tt>, which will notice the
496496
recorded quiescent state, and invoke
497497
<tt>rcu_report_qs_rdp()</tt>.
@@ -651,7 +651,7 @@ <h4><a name="Callback Invocation">Callback Invocation</a></h4>
651651
These callbacks are identified by <tt>rcu_advance_cbs()</tt>,
652652
which is usually invoked by <tt>__note_gp_changes()</tt>.
653653
As shown in the diagram below, this invocation can be triggered by
654-
the scheduling-clock interrupt (<tt>rcu_check_callbacks()</tt> on
654+
the scheduling-clock interrupt (<tt>rcu_sched_clock_irq()</tt> on
655655
the left) or by idle entry (<tt>rcu_cleanup_after_idle()</tt> on
656656
the right, but only for kernels build with
657657
<tt>CONFIG_RCU_FAST_NO_HZ=y</tt>).

Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg

Lines changed: 1 addition & 1 deletion
Loading

Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg

Lines changed: 4 additions & 4 deletions
Loading

Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg

Lines changed: 3 additions & 3 deletions
Loading

Documentation/RCU/torture.txt

Lines changed: 2 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -10,173 +10,8 @@ status messages via printk(), which can be examined via the dmesg
1010
command (perhaps grepping for "torture"). The test is started
1111
when the module is loaded, and stops when the module is unloaded.
1212

13-
14-
MODULE PARAMETERS
15-
16-
This module has the following parameters:
17-
18-
fqs_duration Duration (in microseconds) of artificially induced bursts
19-
of force_quiescent_state() invocations. In RCU
20-
implementations having force_quiescent_state(), these
21-
bursts help force races between forcing a given grace
22-
period and that grace period ending on its own.
23-
24-
fqs_holdoff Holdoff time (in microseconds) between consecutive calls
25-
to force_quiescent_state() within a burst.
26-
27-
fqs_stutter Wait time (in seconds) between consecutive bursts
28-
of calls to force_quiescent_state().
29-
30-
gp_normal Make the fake writers use normal synchronous grace-period
31-
primitives.
32-
33-
gp_exp Make the fake writers use expedited synchronous grace-period
34-
primitives. If both gp_normal and gp_exp are set, or
35-
if neither gp_normal nor gp_exp are set, then randomly
36-
choose the primitive so that about 50% are normal and
37-
50% expedited. By default, neither are set, which
38-
gives best overall test coverage.
39-
40-
irqreader Says to invoke RCU readers from irq level. This is currently
41-
done via timers. Defaults to "1" for variants of RCU that
42-
permit this. (Or, more accurately, variants of RCU that do
43-
-not- permit this know to ignore this variable.)
44-
45-
n_barrier_cbs If this is nonzero, RCU barrier testing will be conducted,
46-
in which case n_barrier_cbs specifies the number of
47-
RCU callbacks (and corresponding kthreads) to use for
48-
this testing. The value cannot be negative. If you
49-
specify this to be non-zero when torture_type indicates a
50-
synchronous RCU implementation (one for which a member of
51-
the synchronize_rcu() rather than the call_rcu() family is
52-
used -- see the documentation for torture_type below), an
53-
error will be reported and no testing will be carried out.
54-
55-
nfakewriters This is the number of RCU fake writer threads to run. Fake
56-
writer threads repeatedly use the synchronous "wait for
57-
current readers" function of the interface selected by
58-
torture_type, with a delay between calls to allow for various
59-
different numbers of writers running in parallel.
60-
nfakewriters defaults to 4, which provides enough parallelism
61-
to trigger special cases caused by multiple writers, such as
62-
the synchronize_srcu() early return optimization.
63-
64-
nreaders This is the number of RCU reading threads supported.
65-
The default is twice the number of CPUs. Why twice?
66-
To properly exercise RCU implementations with preemptible
67-
read-side critical sections.
68-
69-
onoff_interval
70-
The number of seconds between each attempt to execute a
71-
randomly selected CPU-hotplug operation. Defaults to
72-
zero, which disables CPU hotplugging. In HOTPLUG_CPU=n
73-
kernels, rcutorture will silently refuse to do any
74-
CPU-hotplug operations regardless of what value is
75-
specified for onoff_interval.
76-
77-
onoff_holdoff The number of seconds to wait until starting CPU-hotplug
78-
operations. This would normally only be used when
79-
rcutorture was built into the kernel and started
80-
automatically at boot time, in which case it is useful
81-
in order to avoid confusing boot-time code with CPUs
82-
coming and going.
83-
84-
shuffle_interval
85-
The number of seconds to keep the test threads affinitied
86-
to a particular subset of the CPUs, defaults to 3 seconds.
87-
Used in conjunction with test_no_idle_hz.
88-
89-
shutdown_secs The number of seconds to run the test before terminating
90-
the test and powering off the system. The default is
91-
zero, which disables test termination and system shutdown.
92-
This capability is useful for automated testing.
93-
94-
stall_cpu The number of seconds that a CPU should be stalled while
95-
within both an rcu_read_lock() and a preempt_disable().
96-
This stall happens only once per rcutorture run.
97-
If you need multiple stalls, use modprobe and rmmod to
98-
repeatedly run rcutorture. The default for stall_cpu
99-
is zero, which prevents rcutorture from stalling a CPU.
100-
101-
Note that attempts to rmmod rcutorture while the stall
102-
is ongoing will hang, so be careful what value you
103-
choose for this module parameter! In addition, too-large
104-
values for stall_cpu might well induce failures and
105-
warnings in other parts of the kernel. You have been
106-
warned!
107-
108-
stall_cpu_holdoff
109-
The number of seconds to wait after rcutorture starts
110-
before stalling a CPU. Defaults to 10 seconds.
111-
112-
stat_interval The number of seconds between output of torture
113-
statistics (via printk()). Regardless of the interval,
114-
statistics are printed when the module is unloaded.
115-
Setting the interval to zero causes the statistics to
116-
be printed -only- when the module is unloaded, and this
117-
is the default.
118-
119-
stutter The length of time to run the test before pausing for this
120-
same period of time. Defaults to "stutter=5", so as
121-
to run and pause for (roughly) five-second intervals.
122-
Specifying "stutter=0" causes the test to run continuously
123-
without pausing, which is the old default behavior.
124-
125-
test_boost Whether or not to test the ability of RCU to do priority
126-
boosting. Defaults to "test_boost=1", which performs
127-
RCU priority-inversion testing only if the selected
128-
RCU implementation supports priority boosting. Specifying
129-
"test_boost=0" never performs RCU priority-inversion
130-
testing. Specifying "test_boost=2" performs RCU
131-
priority-inversion testing even if the selected RCU
132-
implementation does not support RCU priority boosting,
133-
which can be used to test rcutorture's ability to
134-
carry out RCU priority-inversion testing.
135-
136-
test_boost_interval
137-
The number of seconds in an RCU priority-inversion test
138-
cycle. Defaults to "test_boost_interval=7". It is
139-
usually wise for this value to be relatively prime to
140-
the value selected for "stutter".
141-
142-
test_boost_duration
143-
The number of seconds to do RCU priority-inversion testing
144-
within any given "test_boost_interval". Defaults to
145-
"test_boost_duration=4".
146-
147-
test_no_idle_hz Whether or not to test the ability of RCU to operate in
148-
a kernel that disables the scheduling-clock interrupt to
149-
idle CPUs. Boolean parameter, "1" to test, "0" otherwise.
150-
Defaults to omitting this test.
151-
152-
torture_type The type of RCU to test, with string values as follows:
153-
154-
"rcu": rcu_read_lock(), rcu_read_unlock() and call_rcu(),
155-
along with expedited, synchronous, and polling
156-
variants.
157-
158-
"rcu_bh": rcu_read_lock_bh(), rcu_read_unlock_bh(), and
159-
call_rcu_bh(), along with expedited and synchronous
160-
variants.
161-
162-
"rcu_busted": This tests an intentionally incorrect version
163-
of RCU in order to help test rcutorture itself.
164-
165-
"srcu": srcu_read_lock(), srcu_read_unlock() and
166-
call_srcu(), along with expedited and
167-
synchronous variants.
168-
169-
"sched": preempt_disable(), preempt_enable(), and
170-
call_rcu_sched(), along with expedited,
171-
synchronous, and polling variants.
172-
173-
"tasks": voluntary context switch and call_rcu_tasks(),
174-
along with expedited and synchronous variants.
175-
176-
Defaults to "rcu".
177-
178-
verbose Enable debug printk()s. Default is disabled.
179-
13+
Module parameters are prefixed by "rcutorture." in
14+
Documentation/admin-guide/kernel-parameters.txt.
18015

18116
OUTPUT
18217

MAINTAINERS

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10791,6 +10791,12 @@ F: drivers/power/supply/bq27xxx_battery_i2c.c
1079110791
F: drivers/power/supply/isp1704_charger.c
1079210792
F: drivers/power/supply/rx51_battery.c
1079310793

10794+
NOLIBC HEADER FILE
10795+
M: Willy Tarreau <w@1wt.eu>
10796+
S: Maintained
10797+
T: git git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git
10798+
F: tools/include/nolibc/
10799+
1079410800
NTB AMD DRIVER
1079510801
M: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
1079610802
L: linux-ntb@googlegroups.com

include/asm-generic/bug.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,6 @@ void __warn(const char *file, int line, void *caller, unsigned taint,
211211
/*
212212
* WARN_ON_SMP() is for cases that the warning is either
213213
* meaningless for !SMP or may even cause failures.
214-
* This is usually used for cases that we have
215-
* WARN_ON(!spin_is_locked(&lock)) checks, as spin_is_locked()
216-
* returns 0 for uniprocessor settings.
217214
* It can also be used with values that are only defined
218215
* on SMP:
219216
*

include/linux/rcu_node_tree.h

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* SPDX-License-Identifier: GPL-2.0+ */
12
/*
23
* RCU node combining tree definitions. These are used to compute
34
* global attributes while avoiding common-case global contention. A key
@@ -11,23 +12,9 @@
1112
* because the size of the TREE SRCU srcu_struct structure depends
1213
* on these definitions.
1314
*
14-
* This program is free software; you can redistribute it and/or modify
15-
* it under the terms of the GNU General Public License as published by
16-
* the Free Software Foundation; either version 2 of the License, or
17-
* (at your option) any later version.
18-
*
19-
* This program is distributed in the hope that it will be useful,
20-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22-
* GNU General Public License for more details.
23-
*
24-
* You should have received a copy of the GNU General Public License
25-
* along with this program; if not, you can access it online at
26-
* http://www.gnu.org/licenses/gpl-2.0.html.
27-
*
2815
* Copyright IBM Corporation, 2017
2916
*
30-
* Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
17+
* Author: Paul E. McKenney <paulmck@linux.ibm.com>
3118
*/
3219

3320
#ifndef __LINUX_RCU_NODE_TREE_H

include/linux/rcu_segcblist.h

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,14 @@
1+
/* SPDX-License-Identifier: GPL-2.0+ */
12
/*
23
* RCU segmented callback lists
34
*
45
* This seemingly RCU-private file must be available to SRCU users
56
* because the size of the TREE SRCU srcu_struct structure depends
67
* on these definitions.
78
*
8-
* This program is free software; you can redistribute it and/or modify
9-
* it under the terms of the GNU General Public License as published by
10-
* the Free Software Foundation; either version 2 of the License, or
11-
* (at your option) any later version.
12-
*
13-
* This program is distributed in the hope that it will be useful,
14-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16-
* GNU General Public License for more details.
17-
*
18-
* You should have received a copy of the GNU General Public License
19-
* along with this program; if not, you can access it online at
20-
* http://www.gnu.org/licenses/gpl-2.0.html.
21-
*
229
* Copyright IBM Corporation, 2017
2310
*
24-
* Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
11+
* Authors: Paul E. McKenney <paulmck@linux.net.ibm.com>
2512
*/
2613

2714
#ifndef __INCLUDE_LINUX_RCU_SEGCBLIST_H

include/linux/rcu_sync.h

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,7 @@
1+
/* SPDX-License-Identifier: GPL-2.0+ */
12
/*
23
* RCU-based infrastructure for lightweight reader-writer locking
34
*
4-
* This program is free software; you can redistribute it and/or modify
5-
* it under the terms of the GNU General Public License as published by
6-
* the Free Software Foundation; either version 2 of the License, or
7-
* (at your option) any later version.
8-
*
9-
* This program is distributed in the hope that it will be useful,
10-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12-
* GNU General Public License for more details.
13-
*
14-
* You should have received a copy of the GNU General Public License
15-
* along with this program; if not, you can access it online at
16-
* http://www.gnu.org/licenses/gpl-2.0.html.
17-
*
185
* Copyright (c) 2015, Red Hat, Inc.
196
*
207
* Author: Oleg Nesterov <oleg@redhat.com>

0 commit comments

Comments
 (0)