diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/RCU/trace.txt | 144 | ||||
-rw-r--r-- | Documentation/dontdiff | 26 | ||||
-rw-r--r-- | Documentation/kernel-docs.txt | 27 |
3 files changed, 156 insertions, 41 deletions
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt index a851118775d8..6a8c73f55b80 100644 --- a/Documentation/RCU/trace.txt +++ b/Documentation/RCU/trace.txt | |||
@@ -1,18 +1,22 @@ | |||
1 | CONFIG_RCU_TRACE debugfs Files and Formats | 1 | CONFIG_RCU_TRACE debugfs Files and Formats |
2 | 2 | ||
3 | 3 | ||
4 | The rcutree implementation of RCU provides debugfs trace output that | 4 | The rcutree and rcutiny implementations of RCU provide debugfs trace |
5 | summarizes counters and state. This information is useful for debugging | 5 | output that summarizes counters and state. This information is useful for |
6 | RCU itself, and can sometimes also help to debug abuses of RCU. | 6 | debugging RCU itself, and can sometimes also help to debug abuses of RCU. |
7 | The following sections describe the debugfs files and formats. | 7 | The following sections describe the debugfs files and formats, first |
8 | for rcutree and next for rcutiny. | ||
8 | 9 | ||
9 | 10 | ||
10 | Hierarchical RCU debugfs Files and Formats | 11 | CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats |
11 | 12 | ||
12 | This implementation of RCU provides three debugfs files under the | 13 | These implementations of RCU provides five debugfs files under the |
13 | top-level directory RCU: rcu/rcudata (which displays fields in struct | 14 | top-level directory RCU: rcu/rcudata (which displays fields in struct |
14 | rcu_data), rcu/rcugp (which displays grace-period counters), and | 15 | rcu_data), rcu/rcudata.csv (which is a .csv spreadsheet version of |
15 | rcu/rcuhier (which displays the struct rcu_node hierarchy). | 16 | rcu/rcudata), rcu/rcugp (which displays grace-period counters), |
17 | rcu/rcuhier (which displays the struct rcu_node hierarchy), and | ||
18 | rcu/rcu_pending (which displays counts of the reasons that the | ||
19 | rcu_pending() function decided that there was core RCU work to do). | ||
16 | 20 | ||
17 | The output of "cat rcu/rcudata" looks as follows: | 21 | The output of "cat rcu/rcudata" looks as follows: |
18 | 22 | ||
@@ -130,7 +134,8 @@ o "ci" is the number of RCU callbacks that have been invoked for | |||
130 | been registered in absence of CPU-hotplug activity. | 134 | been registered in absence of CPU-hotplug activity. |
131 | 135 | ||
132 | o "co" is the number of RCU callbacks that have been orphaned due to | 136 | o "co" is the number of RCU callbacks that have been orphaned due to |
133 | this CPU going offline. | 137 | this CPU going offline. These orphaned callbacks have been moved |
138 | to an arbitrarily chosen online CPU. | ||
134 | 139 | ||
135 | o "ca" is the number of RCU callbacks that have been adopted due to | 140 | o "ca" is the number of RCU callbacks that have been adopted due to |
136 | other CPUs going offline. Note that ci+co-ca+ql is the number of | 141 | other CPUs going offline. Note that ci+co-ca+ql is the number of |
@@ -168,12 +173,12 @@ o "gpnum" is the number of grace periods that have started. It is | |||
168 | 173 | ||
169 | The output of "cat rcu/rcuhier" looks as follows, with very long lines: | 174 | The output of "cat rcu/rcuhier" looks as follows, with very long lines: |
170 | 175 | ||
171 | c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 oqlen=0 | 176 | c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 |
172 | 1/1 .>. 0:127 ^0 | 177 | 1/1 .>. 0:127 ^0 |
173 | 3/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 | 178 | 3/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 |
174 | 3/3f .>. 0:5 ^0 2/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 | 179 | 3/3f .>. 0:5 ^0 2/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 |
175 | rcu_bh: | 180 | rcu_bh: |
176 | c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0 oqlen=0 | 181 | c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0 |
177 | 0/1 .>. 0:127 ^0 | 182 | 0/1 .>. 0:127 ^0 |
178 | 0/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 | 183 | 0/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 |
179 | 0/3f .>. 0:5 ^0 0/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 | 184 | 0/3f .>. 0:5 ^0 0/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 |
@@ -212,11 +217,6 @@ o "fqlh" is the number of calls to force_quiescent_state() that | |||
212 | exited immediately (without even being counted in nfqs above) | 217 | exited immediately (without even being counted in nfqs above) |
213 | due to contention on ->fqslock. | 218 | due to contention on ->fqslock. |
214 | 219 | ||
215 | o "oqlen" is the number of callbacks on the "orphan" callback | ||
216 | list. RCU callbacks are placed on this list by CPUs going | ||
217 | offline, and are "adopted" either by the CPU helping the outgoing | ||
218 | CPU or by the next rcu_barrier*() call, whichever comes first. | ||
219 | |||
220 | o Each element of the form "1/1 0:127 ^0" represents one struct | 220 | o Each element of the form "1/1 0:127 ^0" represents one struct |
221 | rcu_node. Each line represents one level of the hierarchy, from | 221 | rcu_node. Each line represents one level of the hierarchy, from |
222 | root to leaves. It is best to think of the rcu_data structures | 222 | root to leaves. It is best to think of the rcu_data structures |
@@ -326,3 +326,115 @@ o "nn" is the number of times that this CPU needed nothing. Alert | |||
326 | readers will note that the rcu "nn" number for a given CPU very | 326 | readers will note that the rcu "nn" number for a given CPU very |
327 | closely matches the rcu_bh "np" number for that same CPU. This | 327 | closely matches the rcu_bh "np" number for that same CPU. This |
328 | is due to short-circuit evaluation in rcu_pending(). | 328 | is due to short-circuit evaluation in rcu_pending(). |
329 | |||
330 | |||
331 | CONFIG_TINY_RCU and CONFIG_TINY_PREEMPT_RCU debugfs Files and Formats | ||
332 | |||
333 | These implementations of RCU provides a single debugfs file under the | ||
334 | top-level directory RCU, namely rcu/rcudata, which displays fields in | ||
335 | rcu_bh_ctrlblk, rcu_sched_ctrlblk and, for CONFIG_TINY_PREEMPT_RCU, | ||
336 | rcu_preempt_ctrlblk. | ||
337 | |||
338 | The output of "cat rcu/rcudata" is as follows: | ||
339 | |||
340 | rcu_preempt: qlen=24 gp=1097669 g197/p197/c197 tasks=... | ||
341 | ttb=. btg=no ntb=184 neb=0 nnb=183 j=01f7 bt=0274 | ||
342 | normal balk: nt=1097669 gt=0 bt=371 b=0 ny=25073378 nos=0 | ||
343 | exp balk: bt=0 nos=0 | ||
344 | rcu_sched: qlen: 0 | ||
345 | rcu_bh: qlen: 0 | ||
346 | |||
347 | This is split into rcu_preempt, rcu_sched, and rcu_bh sections, with the | ||
348 | rcu_preempt section appearing only in CONFIG_TINY_PREEMPT_RCU builds. | ||
349 | The last three lines of the rcu_preempt section appear only in | ||
350 | CONFIG_RCU_BOOST kernel builds. The fields are as follows: | ||
351 | |||
352 | o "qlen" is the number of RCU callbacks currently waiting either | ||
353 | for an RCU grace period or waiting to be invoked. This is the | ||
354 | only field present for rcu_sched and rcu_bh, due to the | ||
355 | short-circuiting of grace period in those two cases. | ||
356 | |||
357 | o "gp" is the number of grace periods that have completed. | ||
358 | |||
359 | o "g197/p197/c197" displays the grace-period state, with the | ||
360 | "g" number being the number of grace periods that have started | ||
361 | (mod 256), the "p" number being the number of grace periods | ||
362 | that the CPU has responded to (also mod 256), and the "c" | ||
363 | number being the number of grace periods that have completed | ||
364 | (once again mode 256). | ||
365 | |||
366 | Why have both "gp" and "g"? Because the data flowing into | ||
367 | "gp" is only present in a CONFIG_RCU_TRACE kernel. | ||
368 | |||
369 | o "tasks" is a set of bits. The first bit is "T" if there are | ||
370 | currently tasks that have recently blocked within an RCU | ||
371 | read-side critical section, the second bit is "N" if any of the | ||
372 | aforementioned tasks are blocking the current RCU grace period, | ||
373 | and the third bit is "E" if any of the aforementioned tasks are | ||
374 | blocking the current expedited grace period. Each bit is "." | ||
375 | if the corresponding condition does not hold. | ||
376 | |||
377 | o "ttb" is a single bit. It is "B" if any of the blocked tasks | ||
378 | need to be priority boosted and "." otherwise. | ||
379 | |||
380 | o "btg" indicates whether boosting has been carried out during | ||
381 | the current grace period, with "exp" indicating that boosting | ||
382 | is in progress for an expedited grace period, "no" indicating | ||
383 | that boosting has not yet started for a normal grace period, | ||
384 | "begun" indicating that boosting has bebug for a normal grace | ||
385 | period, and "done" indicating that boosting has completed for | ||
386 | a normal grace period. | ||
387 | |||
388 | o "ntb" is the total number of tasks subjected to RCU priority boosting | ||
389 | periods since boot. | ||
390 | |||
391 | o "neb" is the number of expedited grace periods that have had | ||
392 | to resort to RCU priority boosting since boot. | ||
393 | |||
394 | o "nnb" is the number of normal grace periods that have had | ||
395 | to resort to RCU priority boosting since boot. | ||
396 | |||
397 | o "j" is the low-order 12 bits of the jiffies counter in hexadecimal. | ||
398 | |||
399 | o "bt" is the low-order 12 bits of the value that the jiffies counter | ||
400 | will have at the next time that boosting is scheduled to begin. | ||
401 | |||
402 | o In the line beginning with "normal balk", the fields are as follows: | ||
403 | |||
404 | o "nt" is the number of times that the system balked from | ||
405 | boosting because there were no blocked tasks to boost. | ||
406 | Note that the system will balk from boosting even if the | ||
407 | grace period is overdue when the currently running task | ||
408 | is looping within an RCU read-side critical section. | ||
409 | There is no point in boosting in this case, because | ||
410 | boosting a running task won't make it run any faster. | ||
411 | |||
412 | o "gt" is the number of times that the system balked | ||
413 | from boosting because, although there were blocked tasks, | ||
414 | none of them were preventing the current grace period | ||
415 | from completing. | ||
416 | |||
417 | o "bt" is the number of times that the system balked | ||
418 | from boosting because boosting was already in progress. | ||
419 | |||
420 | o "b" is the number of times that the system balked from | ||
421 | boosting because boosting had already completed for | ||
422 | the grace period in question. | ||
423 | |||
424 | o "ny" is the number of times that the system balked from | ||
425 | boosting because it was not yet time to start boosting | ||
426 | the grace period in question. | ||
427 | |||
428 | o "nos" is the number of times that the system balked from | ||
429 | boosting for inexplicable ("not otherwise specified") | ||
430 | reasons. This can actually happen due to races involving | ||
431 | increments of the jiffies counter. | ||
432 | |||
433 | o In the line beginning with "exp balk", the fields are as follows: | ||
434 | |||
435 | o "bt" is the number of times that the system balked from | ||
436 | boosting because there were no blocked tasks to boost. | ||
437 | |||
438 | o "nos" is the number of times that the system balked from | ||
439 | boosting for inexplicable ("not otherwise specified") | ||
440 | reasons. | ||
diff --git a/Documentation/dontdiff b/Documentation/dontdiff index d9bcffd59433..470d3dba1a69 100644 --- a/Documentation/dontdiff +++ b/Documentation/dontdiff | |||
@@ -62,6 +62,10 @@ aic7*reg_print.c* | |||
62 | aic7*seq.h* | 62 | aic7*seq.h* |
63 | aicasm | 63 | aicasm |
64 | aicdb.h* | 64 | aicdb.h* |
65 | altivec1.c | ||
66 | altivec2.c | ||
67 | altivec4.c | ||
68 | altivec8.c | ||
65 | asm-offsets.h | 69 | asm-offsets.h |
66 | asm_offsets.h | 70 | asm_offsets.h |
67 | autoconf.h* | 71 | autoconf.h* |
@@ -76,6 +80,7 @@ btfixupprep | |||
76 | build | 80 | build |
77 | bvmlinux | 81 | bvmlinux |
78 | bzImage* | 82 | bzImage* |
83 | capflags.c | ||
79 | classlist.h* | 84 | classlist.h* |
80 | comp*.log | 85 | comp*.log |
81 | compile.h* | 86 | compile.h* |
@@ -94,6 +99,7 @@ devlist.h* | |||
94 | docproc | 99 | docproc |
95 | elf2ecoff | 100 | elf2ecoff |
96 | elfconfig.h* | 101 | elfconfig.h* |
102 | evergreen_reg_safe.h | ||
97 | fixdep | 103 | fixdep |
98 | flask.h | 104 | flask.h |
99 | fore200e_mkfirm | 105 | fore200e_mkfirm |
@@ -108,9 +114,16 @@ genksyms | |||
108 | *_gray256.c | 114 | *_gray256.c |
109 | ihex2fw | 115 | ihex2fw |
110 | ikconfig.h* | 116 | ikconfig.h* |
117 | inat-tables.c | ||
111 | initramfs_data.cpio | 118 | initramfs_data.cpio |
112 | initramfs_data.cpio.gz | 119 | initramfs_data.cpio.gz |
113 | initramfs_list | 120 | initramfs_list |
121 | int16.c | ||
122 | int1.c | ||
123 | int2.c | ||
124 | int32.c | ||
125 | int4.c | ||
126 | int8.c | ||
114 | kallsyms | 127 | kallsyms |
115 | kconfig | 128 | kconfig |
116 | keywords.c | 129 | keywords.c |
@@ -140,6 +153,7 @@ mkprep | |||
140 | mktables | 153 | mktables |
141 | mktree | 154 | mktree |
142 | modpost | 155 | modpost |
156 | modules.builtin | ||
143 | modules.order | 157 | modules.order |
144 | modversions.h* | 158 | modversions.h* |
145 | ncscope.* | 159 | ncscope.* |
@@ -153,14 +167,23 @@ pca200e.bin | |||
153 | pca200e_ecd.bin2 | 167 | pca200e_ecd.bin2 |
154 | piggy.gz | 168 | piggy.gz |
155 | piggyback | 169 | piggyback |
170 | piggy.S | ||
156 | pnmtologo | 171 | pnmtologo |
157 | ppc_defs.h* | 172 | ppc_defs.h* |
158 | pss_boot.h | 173 | pss_boot.h |
159 | qconf | 174 | qconf |
175 | r100_reg_safe.h | ||
176 | r200_reg_safe.h | ||
177 | r300_reg_safe.h | ||
178 | r420_reg_safe.h | ||
179 | r600_reg_safe.h | ||
160 | raid6altivec*.c | 180 | raid6altivec*.c |
161 | raid6int*.c | 181 | raid6int*.c |
162 | raid6tables.c | 182 | raid6tables.c |
163 | relocs | 183 | relocs |
184 | rn50_reg_safe.h | ||
185 | rs600_reg_safe.h | ||
186 | rv515_reg_safe.h | ||
164 | series | 187 | series |
165 | setup | 188 | setup |
166 | setup.bin | 189 | setup.bin |
@@ -169,6 +192,7 @@ sImage | |||
169 | sm_tbl* | 192 | sm_tbl* |
170 | split-include | 193 | split-include |
171 | syscalltab.h | 194 | syscalltab.h |
195 | tables.c | ||
172 | tags | 196 | tags |
173 | tftpboot.img | 197 | tftpboot.img |
174 | timeconst.h | 198 | timeconst.h |
@@ -190,6 +214,7 @@ vmlinux | |||
190 | vmlinux-* | 214 | vmlinux-* |
191 | vmlinux.aout | 215 | vmlinux.aout |
192 | vmlinux.lds | 216 | vmlinux.lds |
217 | voffset.h | ||
193 | vsyscall.lds | 218 | vsyscall.lds |
194 | vsyscall_32.lds | 219 | vsyscall_32.lds |
195 | wanxlfw.inc | 220 | wanxlfw.inc |
@@ -200,3 +225,4 @@ wakeup.elf | |||
200 | wakeup.lds | 225 | wakeup.lds |
201 | zImage* | 226 | zImage* |
202 | zconf.hash.c | 227 | zconf.hash.c |
228 | zoffset.h | ||
diff --git a/Documentation/kernel-docs.txt b/Documentation/kernel-docs.txt index 715eaaf1519d..9a8674629a07 100644 --- a/Documentation/kernel-docs.txt +++ b/Documentation/kernel-docs.txt | |||
@@ -537,7 +537,7 @@ | |||
537 | Notes: Further information in | 537 | Notes: Further information in |
538 | http://www.oreilly.com/catalog/linuxdrive2/ | 538 | http://www.oreilly.com/catalog/linuxdrive2/ |
539 | 539 | ||
540 | * Title: "Linux Device Drivers, 3nd Edition" | 540 | * Title: "Linux Device Drivers, 3rd Edition" |
541 | Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman | 541 | Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman |
542 | Publisher: O'Reilly & Associates. | 542 | Publisher: O'Reilly & Associates. |
543 | Date: 2005. | 543 | Date: 2005. |
@@ -592,14 +592,6 @@ | |||
592 | Pages: 600. | 592 | Pages: 600. |
593 | ISBN: 0-13-101908-2 | 593 | ISBN: 0-13-101908-2 |
594 | 594 | ||
595 | * Title: "The Design and Implementation of the 4.4 BSD UNIX | ||
596 | Operating System" | ||
597 | Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, | ||
598 | John S. Quarterman. | ||
599 | Publisher: Addison-Wesley. | ||
600 | Date: 1996. | ||
601 | ISBN: 0-201-54979-4 | ||
602 | |||
603 | * Title: "Programming for the real world - POSIX.4" | 595 | * Title: "Programming for the real world - POSIX.4" |
604 | Author: Bill O. Gallmeister. | 596 | Author: Bill O. Gallmeister. |
605 | Publisher: O'Reilly & Associates, Inc.. | 597 | Publisher: O'Reilly & Associates, Inc.. |
@@ -610,28 +602,13 @@ | |||
610 | POSIX. Good reference. | 602 | POSIX. Good reference. |
611 | 603 | ||
612 | * Title: "UNIX Systems for Modern Architectures: Symmetric | 604 | * Title: "UNIX Systems for Modern Architectures: Symmetric |
613 | Multiprocesssing and Caching for Kernel Programmers" | 605 | Multiprocessing and Caching for Kernel Programmers" |
614 | Author: Curt Schimmel. | 606 | Author: Curt Schimmel. |
615 | Publisher: Addison Wesley. | 607 | Publisher: Addison Wesley. |
616 | Date: June, 1994. | 608 | Date: June, 1994. |
617 | Pages: 432. | 609 | Pages: 432. |
618 | ISBN: 0-201-63338-8 | 610 | ISBN: 0-201-63338-8 |
619 | 611 | ||
620 | * Title: "The Design and Implementation of the 4.3 BSD UNIX | ||
621 | Operating System" | ||
622 | Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J. | ||
623 | Karels, John S. Quarterman. | ||
624 | Publisher: Addison-Wesley. | ||
625 | Date: 1989 (reprinted with corrections on October, 1990). | ||
626 | ISBN: 0-201-06196-1 | ||
627 | |||
628 | * Title: "The Design of the UNIX Operating System" | ||
629 | Author: Maurice J. Bach. | ||
630 | Publisher: Prentice Hall. | ||
631 | Date: 1986. | ||
632 | Pages: 471. | ||
633 | ISBN: 0-13-201757-1 | ||
634 | |||
635 | MISCELLANEOUS: | 612 | MISCELLANEOUS: |
636 | 613 | ||
637 | * Name: linux/Documentation | 614 | * Name: linux/Documentation |