diff options
| -rw-r--r-- | Documentation/RCU/torture.txt | 15 | ||||
| -rw-r--r-- | Documentation/kernel-parameters.txt | 88 | ||||
| -rw-r--r-- | MAINTAINERS | 14 | ||||
| -rw-r--r-- | arch/um/drivers/mconsole_kern.c | 1 | ||||
| -rw-r--r-- | include/linux/rculist.h | 40 | ||||
| -rw-r--r-- | include/linux/rcupdate.h | 20 | ||||
| -rw-r--r-- | include/linux/rcutiny.h | 11 | ||||
| -rw-r--r-- | include/linux/rcutree.h | 19 | ||||
| -rw-r--r-- | include/linux/sched.h | 10 | ||||
| -rw-r--r-- | include/linux/srcu.h | 48 | ||||
| -rw-r--r-- | include/trace/events/rcu.h | 2 | ||||
| -rw-r--r-- | init/Kconfig | 50 | ||||
| -rw-r--r-- | kernel/rcupdate.c | 28 | ||||
| -rw-r--r-- | kernel/rcutiny_plugin.h | 16 | ||||
| -rw-r--r-- | kernel/rcutorture.c | 257 | ||||
| -rw-r--r-- | kernel/rcutree.c | 332 | ||||
| -rw-r--r-- | kernel/rcutree.h | 23 | ||||
| -rw-r--r-- | kernel/rcutree_plugin.h | 154 | ||||
| -rw-r--r-- | kernel/rcutree_trace.c | 4 | ||||
| -rw-r--r-- | kernel/sched/core.c | 1 | ||||
| -rw-r--r-- | kernel/srcu.c | 548 | ||||
| -rw-r--r-- | kernel/timer.c | 8 | ||||
| -rw-r--r-- | lib/list_debug.c | 22 |
23 files changed, 1358 insertions, 353 deletions
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt index 375d3fb71437..4ddf3913fd8c 100644 --- a/Documentation/RCU/torture.txt +++ b/Documentation/RCU/torture.txt | |||
| @@ -47,6 +47,16 @@ irqreader Says to invoke RCU readers from irq level. This is currently | |||
| 47 | permit this. (Or, more accurately, variants of RCU that do | 47 | permit this. (Or, more accurately, variants of RCU that do |
| 48 | -not- permit this know to ignore this variable.) | 48 | -not- permit this know to ignore this variable.) |
| 49 | 49 | ||
| 50 | n_barrier_cbs If this is nonzero, RCU barrier testing will be conducted, | ||
| 51 | in which case n_barrier_cbs specifies the number of | ||
| 52 | RCU callbacks (and corresponding kthreads) to use for | ||
| 53 | this testing. The value cannot be negative. If you | ||
| 54 | specify this to be non-zero when torture_type indicates a | ||
| 55 | synchronous RCU implementation (one for which a member of | ||
| 56 | the synchronize_rcu() rather than the call_rcu() family is | ||
| 57 | used -- see the documentation for torture_type below), an | ||
| 58 | error will be reported and no testing will be carried out. | ||
| 59 | |||
| 50 | nfakewriters This is the number of RCU fake writer threads to run. Fake | 60 | nfakewriters This is the number of RCU fake writer threads to run. Fake |
| 51 | writer threads repeatedly use the synchronous "wait for | 61 | writer threads repeatedly use the synchronous "wait for |
| 52 | current readers" function of the interface selected by | 62 | current readers" function of the interface selected by |
| @@ -188,7 +198,7 @@ OUTPUT | |||
| 188 | The statistics output is as follows: | 198 | The statistics output is as follows: |
| 189 | 199 | ||
| 190 | rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_hz=1 shuffle_interval=3 stutter=5 irqreader=1 fqs_duration=0 fqs_holdoff=0 fqs_stutter=3 test_boost=1/0 test_boost_interval=7 test_boost_duration=4 | 200 | rcu-torture:--- Start of test: nreaders=16 nfakewriters=4 stat_interval=30 verbose=0 test_no_idle_hz=1 shuffle_interval=3 stutter=5 irqreader=1 fqs_duration=0 fqs_holdoff=0 fqs_stutter=3 test_boost=1/0 test_boost_interval=7 test_boost_duration=4 |
| 191 | rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0 rtbke: 0 rtbre: 0 rtbf: 0 rtb: 0 nt: 3055767 | 201 | rcu-torture: rtc: (null) ver: 155441 tfle: 0 rta: 155441 rtaf: 8884 rtf: 155440 rtmbe: 0 rtbe: 0 rtbke: 0 rtbre: 0 rtbf: 0 rtb: 0 nt: 3055767 |
| 192 | rcu-torture: Reader Pipe: 727860534 34213 0 0 0 0 0 0 0 0 0 | 202 | rcu-torture: Reader Pipe: 727860534 34213 0 0 0 0 0 0 0 0 0 |
| 193 | rcu-torture: Reader Batch: 727877838 17003 0 0 0 0 0 0 0 0 0 | 203 | rcu-torture: Reader Batch: 727877838 17003 0 0 0 0 0 0 0 0 0 |
| 194 | rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 155440 155440 0 | 204 | rcu-torture: Free-Block Circulation: 155440 155440 155440 155440 155440 155440 155440 155440 155440 155440 0 |
| @@ -230,6 +240,9 @@ o "rtmbe": A non-zero value indicates that rcutorture believes that | |||
| 230 | rcu_assign_pointer() and rcu_dereference() are not working | 240 | rcu_assign_pointer() and rcu_dereference() are not working |
| 231 | correctly. This value should be zero. | 241 | correctly. This value should be zero. |
| 232 | 242 | ||
| 243 | o "rtbe": A non-zero value indicates that one of the rcu_barrier() | ||
| 244 | family of functions is not working correctly. | ||
| 245 | |||
| 233 | o "rtbke": rcutorture was unable to create the real-time kthreads | 246 | o "rtbke": rcutorture was unable to create the real-time kthreads |
| 234 | used to force RCU priority inversion. This value should be zero. | 247 | used to force RCU priority inversion. This value should be zero. |
| 235 | 248 | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index c1601e5a8b71..ab84a01c8d68 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -2330,18 +2330,100 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 2330 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 2330 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
| 2331 | See Documentation/blockdev/ramdisk.txt. | 2331 | See Documentation/blockdev/ramdisk.txt. |
| 2332 | 2332 | ||
| 2333 | rcupdate.blimit= [KNL,BOOT] | 2333 | rcutree.blimit= [KNL,BOOT] |
| 2334 | Set maximum number of finished RCU callbacks to process | 2334 | Set maximum number of finished RCU callbacks to process |
| 2335 | in one batch. | 2335 | in one batch. |
| 2336 | 2336 | ||
| 2337 | rcupdate.qhimark= [KNL,BOOT] | 2337 | rcutree.qhimark= [KNL,BOOT] |
| 2338 | Set threshold of queued | 2338 | Set threshold of queued |
| 2339 | RCU callbacks over which batch limiting is disabled. | 2339 | RCU callbacks over which batch limiting is disabled. |
| 2340 | 2340 | ||
| 2341 | rcupdate.qlowmark= [KNL,BOOT] | 2341 | rcutree.qlowmark= [KNL,BOOT] |
| 2342 | Set threshold of queued RCU callbacks below which | 2342 | Set threshold of queued RCU callbacks below which |
| 2343 | batch limiting is re-enabled. | 2343 | batch limiting is re-enabled. |
| 2344 | 2344 | ||
| 2345 | rcutree.rcu_cpu_stall_suppress= [KNL,BOOT] | ||
| 2346 | Suppress RCU CPU stall warning messages. | ||
| 2347 | |||
| 2348 | rcutree.rcu_cpu_stall_timeout= [KNL,BOOT] | ||
| 2349 | Set timeout for RCU CPU stall warning messages. | ||
| 2350 | |||
| 2351 | rcutorture.fqs_duration= [KNL,BOOT] | ||
| 2352 | Set duration of force_quiescent_state bursts. | ||
| 2353 | |||
| 2354 | rcutorture.fqs_holdoff= [KNL,BOOT] | ||
| 2355 | Set holdoff time within force_quiescent_state bursts. | ||
| 2356 | |||
| 2357 | rcutorture.fqs_stutter= [KNL,BOOT] | ||
| 2358 | Set wait time between force_quiescent_state bursts. | ||
| 2359 | |||
| 2360 | rcutorture.irqreader= [KNL,BOOT] | ||
| 2361 | Test RCU readers from irq handlers. | ||
| 2362 | |||
| 2363 | rcutorture.n_barrier_cbs= [KNL,BOOT] | ||
| 2364 | Set callbacks/threads for rcu_barrier() testing. | ||
| 2365 | |||
| 2366 | rcutorture.nfakewriters= [KNL,BOOT] | ||
| 2367 | Set number of concurrent RCU writers. These just | ||
| 2368 | stress RCU, they don't participate in the actual | ||
| 2369 | test, hence the "fake". | ||
| 2370 | |||
| 2371 | rcutorture.nreaders= [KNL,BOOT] | ||
| 2372 | Set number of RCU readers. | ||
| 2373 | |||
| 2374 | rcutorture.onoff_holdoff= [KNL,BOOT] | ||
| 2375 | Set time (s) after boot for CPU-hotplug testing. | ||
| 2376 | |||
| 2377 | rcutorture.onoff_interval= [KNL,BOOT] | ||
| 2378 | Set time (s) between CPU-hotplug operations, or | ||
| 2379 | zero to disable CPU-hotplug testing. | ||
| 2380 | |||
| 2381 | rcutorture.shuffle_interval= [KNL,BOOT] | ||
| 2382 | Set task-shuffle interval (s). Shuffling tasks | ||
| 2383 | allows some CPUs to go into dyntick-idle mode | ||
| 2384 | during the rcutorture test. | ||
| 2385 | |||
| 2386 | rcutorture.shutdown_secs= [KNL,BOOT] | ||
| 2387 | Set time (s) after boot system shutdown. This | ||
| 2388 | is useful for hands-off automated testing. | ||
| 2389 | |||
| 2390 | rcutorture.stall_cpu= [KNL,BOOT] | ||
| 2391 | Duration of CPU stall (s) to test RCU CPU stall | ||
| 2392 | warnings, zero to disable. | ||
| 2393 | |||
| 2394 | rcutorture.stall_cpu_holdoff= [KNL,BOOT] | ||
| 2395 | Time to wait (s) after boot before inducing stall. | ||
| 2396 | |||
| 2397 | rcutorture.stat_interval= [KNL,BOOT] | ||
| 2398 | Time (s) between statistics printk()s. | ||
| 2399 | |||
| 2400 | rcutorture.stutter= [KNL,BOOT] | ||
| 2401 | Time (s) to stutter testing, for example, specifying | ||
| 2402 | five seconds causes the test to run for five seconds, | ||
| 2403 | wait for five seconds, and so on. This tests RCU's | ||
| 2404 | ability to transition abruptly to and from idle. | ||
| 2405 | |||
| 2406 | rcutorture.test_boost= [KNL,BOOT] | ||
| 2407 | Test RCU priority boosting? 0=no, 1=maybe, 2=yes. | ||
| 2408 | "Maybe" means test if the RCU implementation | ||
| 2409 | under test support RCU priority boosting. | ||
| 2410 | |||
| 2411 | rcutorture.test_boost_duration= [KNL,BOOT] | ||
| 2412 | Duration (s) of each individual boost test. | ||
| 2413 | |||
| 2414 | rcutorture.test_boost_interval= [KNL,BOOT] | ||
| 2415 | Interval (s) between each boost test. | ||
| 2416 | |||
| 2417 | rcutorture.test_no_idle_hz= [KNL,BOOT] | ||
| 2418 | Test RCU's dyntick-idle handling. See also the | ||
| 2419 | rcutorture.shuffle_interval parameter. | ||
| 2420 | |||
| 2421 | rcutorture.torture_type= [KNL,BOOT] | ||
| 2422 | Specify the RCU implementation to test. | ||
| 2423 | |||
| 2424 | rcutorture.verbose= [KNL,BOOT] | ||
| 2425 | Enable additional printk() statements. | ||
| 2426 | |||
| 2345 | rdinit= [KNL] | 2427 | rdinit= [KNL] |
| 2346 | Format: <full_path> | 2428 | Format: <full_path> |
| 2347 | Run specified binary instead of /init from the ramdisk, | 2429 | Run specified binary instead of /init from the ramdisk, |
diff --git a/MAINTAINERS b/MAINTAINERS index b36270986501..dff245064d4b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -5608,14 +5608,13 @@ F: net/rds/ | |||
| 5608 | READ-COPY UPDATE (RCU) | 5608 | READ-COPY UPDATE (RCU) |
| 5609 | M: Dipankar Sarma <dipankar@in.ibm.com> | 5609 | M: Dipankar Sarma <dipankar@in.ibm.com> |
| 5610 | M: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> | 5610 | M: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> |
| 5611 | W: http://www.rdrop.com/users/paulmck/rclock/ | ||
