aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/CodingStyle149
-rw-r--r--Documentation/DocBook/drm.tmpl2
-rw-r--r--Documentation/DocBook/media/v4l/biblio.xml11
-rw-r--r--Documentation/DocBook/media/v4l/dev-sliced-vbi.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml2
-rw-r--r--Documentation/PCI/MSI-HOWTO.txt21
-rw-r--r--Documentation/PCI/pci-error-recovery.txt2
-rw-r--r--Documentation/PCI/pcieaer-howto.txt4
-rw-r--r--Documentation/arm/Booting9
-rw-r--r--Documentation/arm/README15
-rw-r--r--Documentation/blackfin/Makefile2
-rw-r--r--Documentation/block/biodoc.txt36
-rw-r--r--Documentation/cgroups/memory.txt8
-rw-r--r--Documentation/email-clients.txt11
-rw-r--r--Documentation/filesystems/proc.txt6
-rw-r--r--Documentation/gpio/board.txt41
-rw-r--r--Documentation/i2o/README63
-rw-r--r--Documentation/i2o/ioctl394
-rw-r--r--Documentation/input/alps.txt4
-rw-r--r--Documentation/input/event-codes.txt2
-rw-r--r--Documentation/input/gpio-tilt.txt2
-rw-r--r--Documentation/input/iforce-protocol.txt2
-rw-r--r--Documentation/input/walkera0701.txt2
-rw-r--r--Documentation/input/yealink.txt2
-rw-r--r--Documentation/kernel-parameters.txt12
-rw-r--r--Documentation/kmemcheck.txt4
-rw-r--r--Documentation/kprobes.txt4
-rw-r--r--Documentation/memory-barriers.txt2
-rw-r--r--Documentation/memory-hotplug.txt47
-rw-r--r--Documentation/printk-formats.txt12
-rw-r--r--Documentation/scheduler/completion.txt132
-rw-r--r--Documentation/vm/pagemap.txt3
-rw-r--r--Documentation/vm/transhuge.txt11
-rw-r--r--Documentation/zh_CN/arm64/booting.txt54
-rw-r--r--Documentation/zh_CN/arm64/legacy_instructions.txt72
-rw-r--r--Documentation/zh_CN/arm64/memory.txt65
-rw-r--r--MAINTAINERS4
-rw-r--r--README42
-rw-r--r--include/linux/hsi/hsi.h6
-rw-r--r--init/Kconfig6
40 files changed, 490 insertions, 778 deletions
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index 4d4f06d47e06..f4b78eafd92a 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -13,7 +13,7 @@ and NOT read it. Burn them, it's a great symbolic gesture.
13Anyway, here goes: 13Anyway, here goes:
14 14
15 15
16 Chapter 1: Indentation 16 Chapter 1: Indentation
17 17
18Tabs are 8 characters, and thus indentations are also 8 characters. 18Tabs are 8 characters, and thus indentations are also 8 characters.
19There are heretic movements that try to make indentations 4 (or even 2!) 19There are heretic movements that try to make indentations 4 (or even 2!)
@@ -56,7 +56,6 @@ instead of "double-indenting" the "case" labels. E.g.:
56 break; 56 break;
57 } 57 }
58 58
59
60Don't put multiple statements on a single line unless you have 59Don't put multiple statements on a single line unless you have
61something to hide: 60something to hide:
62 61
@@ -156,25 +155,25 @@ comments on.
156 155
157Do not unnecessarily use braces where a single statement will do. 156Do not unnecessarily use braces where a single statement will do.
158 157
159if (condition) 158 if (condition)
160 action(); 159 action();
161 160
162and 161and
163 162
164if (condition) 163 if (condition)
165 do_this(); 164 do_this();
166else 165 else
167 do_that(); 166 do_that();
168 167
169This does not apply if only one branch of a conditional statement is a single 168This does not apply if only one branch of a conditional statement is a single
170statement; in the latter case use braces in both branches: 169statement; in the latter case use braces in both branches:
171 170
172if (condition) { 171 if (condition) {
173 do_this(); 172 do_this();
174 do_that(); 173 do_that();
175} else { 174 } else {
176 otherwise(); 175 otherwise();
177} 176 }
178 177
179 3.1: Spaces 178 3.1: Spaces
180 179
@@ -186,8 +185,11 @@ although they are not required in the language, as in: "sizeof info" after
186"struct fileinfo info;" is declared). 185"struct fileinfo info;" is declared).
187 186
188So use a space after these keywords: 187So use a space after these keywords:
188
189 if, switch, case, for, do, while 189 if, switch, case, for, do, while
190
190but not with sizeof, typeof, alignof, or __attribute__. E.g., 191but not with sizeof, typeof, alignof, or __attribute__. E.g.,
192
191 s = sizeof(struct file); 193 s = sizeof(struct file);
192 194
193Do not add spaces around (inside) parenthesized expressions. This example is 195Do not add spaces around (inside) parenthesized expressions. This example is
@@ -209,12 +211,15 @@ such as any of these:
209 = + - < > * / % | & ^ <= >= == != ? : 211 = + - < > * / % | & ^ <= >= == != ? :
210 212
211but no space after unary operators: 213but no space after unary operators:
214
212 & * + - ~ ! sizeof typeof alignof __attribute__ defined 215 & * + - ~ ! sizeof typeof alignof __attribute__ defined
213 216
214no space before the postfix increment & decrement unary operators: 217no space before the postfix increment & decrement unary operators:
218
215 ++ -- 219 ++ --
216 220
217no space after the prefix increment & decrement unary operators: 221no space after the prefix increment & decrement unary operators:
222
218 ++ -- 223 ++ --
219 224
220and no space around the '.' and "->" structure member operators. 225and no space around the '.' and "->" structure member operators.
@@ -268,13 +273,11 @@ See chapter 6 (Functions).
268 Chapter 5: Typedefs 273 Chapter 5: Typedefs
269 274
270Please don't use things like "vps_t". 275Please don't use things like "vps_t".
271
272It's a _mistake_ to use typedef for structures and pointers. When you see a 276It's a _mistake_ to use typedef for structures and pointers. When you see a
273 277
274 vps_t a; 278 vps_t a;
275 279
276in the source, what does it mean? 280in the source, what does it mean?
277
278In contrast, if it says 281In contrast, if it says
279 282
280 struct virtual_container *a; 283 struct virtual_container *a;
@@ -372,11 +375,11 @@ In source files, separate functions with one blank line. If the function is
372exported, the EXPORT* macro for it should follow immediately after the closing 375exported, the EXPORT* macro for it should follow immediately after the closing
373function brace line. E.g.: 376function brace line. E.g.:
374 377
375int system_is_up(void) 378 int system_is_up(void)
376{ 379 {
377 return system_state == SYSTEM_RUNNING; 380 return system_state == SYSTEM_RUNNING;
378} 381 }
379EXPORT_SYMBOL(system_is_up); 382 EXPORT_SYMBOL(system_is_up);
380 383
381In function prototypes, include parameter names with their data types. 384In function prototypes, include parameter names with their data types.
382Although this is not required by the C language, it is preferred in Linux 385Although this is not required by the C language, it is preferred in Linux
@@ -405,34 +408,34 @@ The rationale for using gotos is:
405 modifications are prevented 408 modifications are prevented
406- saves the compiler work to optimize redundant code away ;) 409- saves the compiler work to optimize redundant code away ;)
407 410
408int fun(int a) 411 int fun(int a)
409{ 412 {
410 int result = 0; 413 int result = 0;
411 char *buffer; 414 char *buffer;
412 415
413 buffer = kmalloc(SIZE, GFP_KERNEL); 416 buffer = kmalloc(SIZE, GFP_KERNEL);
414 if (!buffer) 417 if (!buffer)
415 return -ENOMEM; 418 return -ENOMEM;
416 419
417 if (condition1) { 420 if (condition1) {
418 while (loop1) { 421 while (loop1) {
419 ... 422 ...
423 }
424 result = 1;
425 goto out_buffer;
420 } 426 }
421 result = 1; 427 ...
422 goto out_buffer; 428 out_buffer:
429 kfree(buffer);
430 return result;
423 } 431 }
424 ...
425out_buffer:
426 kfree(buffer);
427 return result;
428}
429 432
430A common type of bug to be aware of it "one err bugs" which look like this: 433A common type of bug to be aware of it "one err bugs" which look like this:
431 434
432err: 435 err:
433 kfree(foo->bar); 436 kfree(foo->bar);
434 kfree(foo); 437 kfree(foo);
435 return ret; 438 return ret;
436 439
437The bug in this code is that on some exit paths "foo" is NULL. Normally the 440The bug in this code is that on some exit paths "foo" is NULL. Normally the
438fix for this is to split it up into two error labels "err_bar:" and "err_foo:". 441fix for this is to split it up into two error labels "err_bar:" and "err_foo:".
@@ -503,9 +506,9 @@ values. To do the latter, you can stick the following in your .emacs file:
503(defun c-lineup-arglist-tabs-only (ignored) 506(defun c-lineup-arglist-tabs-only (ignored)
504 "Line up argument lists by tabs, not spaces" 507 "Line up argument lists by tabs, not spaces"
505 (let* ((anchor (c-langelem-pos c-syntactic-element)) 508 (let* ((anchor (c-langelem-pos c-syntactic-element))
506 (column (c-langelem-2nd-pos c-syntactic-element)) 509 (column (c-langelem-2nd-pos c-syntactic-element))
507 (offset (- (1+ column) anchor)) 510 (offset (- (1+ column) anchor))
508 (steps (floor offset c-basic-offset))) 511 (steps (floor offset c-basic-offset)))
509 (* (max steps 1) 512 (* (max steps 1)
510 c-basic-offset))) 513 c-basic-offset)))
511 514
@@ -612,7 +615,7 @@ have a reference count on it, you almost certainly have a bug.
612 615
613Names of macros defining constants and labels in enums are capitalized. 616Names of macros defining constants and labels in enums are capitalized.
614 617
615#define CONSTANT 0x12345 618 #define CONSTANT 0x12345
616 619
617Enums are preferred when defining several related constants. 620Enums are preferred when defining several related constants.
618 621
@@ -623,28 +626,28 @@ Generally, inline functions are preferable to macros resembling functions.
623 626
624Macros with multiple statements should be enclosed in a do - while block: 627Macros with multiple statements should be enclosed in a do - while block:
625 628
626#define macrofun(a, b, c) \ 629 #define macrofun(a, b, c) \
627 do { \ 630 do { \
628 if (a == 5) \ 631 if (a == 5) \
629 do_this(b, c); \ 632 do_this(b, c); \
630 } while (0) 633 } while (0)
631 634
632Things to avoid when using macros: 635Things to avoid when using macros:
633 636
6341) macros that affect control flow: 6371) macros that affect control flow:
635 638
636#define FOO(x) \ 639 #define FOO(x) \
637 do { \ 640 do { \
638 if (blah(x) < 0) \ 641 if (blah(x) < 0) \
639 return -EBUGGERED; \ 642 return -EBUGGERED; \
640 } while(0) 643 } while(0)
641 644
642is a _very_ bad idea. It looks like a function call but exits the "calling" 645is a _very_ bad idea. It looks like a function call but exits the "calling"
643function; don't break the internal parsers of those who will read the code. 646function; don't break the internal parsers of those who will read the code.
644 647
6452) macros that depend on having a local variable with a magic name: 6482) macros that depend on having a local variable with a magic name:
646 649
647#define FOO(val) bar(index, val) 650 #define FOO(val) bar(index, val)
648 651
649might look like a good thing, but it's confusing as hell when one reads the 652might look like a good thing, but it's confusing as hell when one reads the
650code and it's prone to breakage from seemingly innocent changes. 653code and it's prone to breakage from seemingly innocent changes.
@@ -656,8 +659,8 @@ bite you if somebody e.g. turns FOO into an inline function.
656must enclose the expression in parentheses. Beware of similar issues with 659must enclose the expression in parentheses. Beware of similar issues with
657macros using parameters. 660macros using parameters.
658 661
659#define CONSTANT 0x4000 662 #define CONSTANT 0x4000
660#define CONSTEXP (CONSTANT | 3) 663 #define CONSTEXP (CONSTANT | 3)
661 664
6625) namespace collisions when defining local variables in macros resembling 6655) namespace collisions when defining local variables in macros resembling
663functions: 666functions:
@@ -809,11 +812,11 @@ you should use, rather than explicitly coding some variant of them yourself.
809For example, if you need to calculate the length of an array, take advantage 812For example, if you need to calculate the length of an array, take advantage
810of the macro 813of the macro
811 814
812 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) 815 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
813 816
814Similarly, if you need to calculate the size of some structure member, use 817Similarly, if you need to calculate the size of some structure member, use
815 818
816 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) 819 #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
817 820
818There are also min() and max() macros that do strict type checking if you 821There are also min() and max() macros that do strict type checking if you
819need them. Feel free to peruse that header file to see what else is already 822need them. Feel free to peruse that header file to see what else is already
@@ -826,19 +829,19 @@ Some editors can interpret configuration information embedded in source files,
826indicated with special markers. For example, emacs interprets lines marked 829indicated with special markers. For example, emacs interprets lines marked
827like this: 830like this:
828 831
829-*- mode: c -*- 832 -*- mode: c -*-
830 833
831Or like this: 834Or like this:
832 835
833/* 836 /*
834Local Variables: 837 Local Variables:
835compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c" 838 compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
836End: 839 End:
837*/ 840 */
838 841
839Vim interprets markers that look like this: 842Vim interprets markers that look like this:
840 843
841/* vim:set sw=8 noet */ 844 /* vim:set sw=8 noet */
842 845
843Do not include any of these in source files. People have their own personal 846Do not include any of these in source files. People have their own personal
844editor configurations, and your source files should not override them. This 847editor configurations, and your source files should not override them. This
@@ -915,9 +918,9 @@ At the end of any non-trivial #if or #ifdef block (more than a few lines),
915place a comment after the #endif on the same line, noting the conditional 918place a comment after the #endif on the same line, noting the conditional
916expression used. For instance: 919expression used. For instance:
917 920
918#ifdef CONFIG_SOMETHING 921 #ifdef CONFIG_SOMETHING
919... 922 ...
920#endif /* CONFIG_SOMETHING */ 923 #endif /* CONFIG_SOMETHING */
921 924
922 925
923 Appendix I: References 926 Appendix I: References
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 03f1985a4bd1..0cad3ce957ff 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -1293,7 +1293,7 @@ int max_width, max_height;</synopsis>
1293 </para> 1293 </para>
1294 <para> 1294 <para>
1295 If a page flip can be successfully scheduled the driver must set the 1295 If a page flip can be successfully scheduled the driver must set the
1296 <code>drm_crtc-&lt;fb</code> field to the new framebuffer pointed to 1296 <code>drm_crtc-&gt;fb</code> field to the new framebuffer pointed to
1297 by <code>fb</code>. This is important so that the reference counting 1297 by <code>fb</code>. This is important so that the reference counting
1298 on framebuffers stays balanced. 1298 on framebuffers stays balanced.
1299 </para> 1299 </para>
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
index 7ff01a23c2fe..fdee6b3f3eca 100644
--- a/Documentation/DocBook/media/v4l/biblio.xml
+++ b/Documentation/DocBook/media/v4l/biblio.xml
@@ -1,14 +1,13 @@
1 <bibliography> 1 <bibliography>
2 <title>References</title> 2 <title>References</title>
3 3
4 <biblioentry id="eia608"> 4 <biblioentry id="cea608">
5 <abbrev>EIA&nbsp;608-B</abbrev> 5 <abbrev>CEA&nbsp;608-E</abbrev>
6 <authorgroup> 6 <authorgroup>
7 <corpauthor>Electronic Industries Alliance (<ulink 7 <corpauthor>Consumer Electronics Association (<ulink
8url="http://www.eia.org">http://www.eia.org</ulink>)</corpauthor> 8url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
9 </authorgroup> 9 </authorgroup>
10 <title>EIA 608-B "Recommended Practice for Line 21 Data 10 <title>CEA-608-E R-2014 "Line 21 Data Services"</title>
11Service"</title>
12 </biblioentry> 11 </biblioentry>
13 12
14 <biblioentry id="en300294"> 13 <biblioentry id="en300294">
diff --git a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
index 7a8bf3011ee9..0aec62ed2bf8 100644
--- a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
+++ b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
@@ -254,7 +254,7 @@ ETS&nbsp;300&nbsp;231, lsb first transmitted.</entry>
254 <row> 254 <row>
255 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry> 255 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry>
256 <entry>0x1000</entry> 256 <entry>0x1000</entry>
257 <entry><xref linkend="eia608" /></entry> 257 <entry><xref linkend="cea608" /></entry>
258 <entry>NTSC line 21, 284 (second field 21)</entry> 258 <entry>NTSC line 21, 284 (second field 21)</entry>
259 <entry>Two bytes in transmission order, including parity 259 <entry>Two bytes in transmission order, including parity
260bit, lsb first transmitted.</entry> 260bit, lsb first transmitted.</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
index bd015d1563ff..d05623c55403 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
@@ -205,7 +205,7 @@ ETS&nbsp;300&nbsp;231, lsb first transmitted.</entry>
205 <row> 205 <row>
206 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry> 206 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry>
207 <entry>0x1000</entry> 207 <entry>0x1000</entry>
208 <entry><xref linkend="eia608" /></entry> 208 <entry><xref linkend="cea608" /></entry>
209 <entry>NTSC line 21, 284 (second field 21)</entry> 209 <entry>NTSC line 21, 284 (second field 21)</entry>
210 <entry>Two bytes in transmission order, including parity 210 <entry>Two bytes in transmission order, including parity
211bit, lsb first transmitted.</entry> 211bit, lsb first transmitted.</entry>
diff --git a/Documentation/PCI/MSI-HOWTO.txt b/Documentation/PCI/MSI-HOWTO.txt
index 0d920d54536d..1179850f453c 100644
--- a/Documentation/PCI/MSI-HOWTO.txt
+++ b/Documentation/PCI/MSI-HOWTO.txt
@@ -353,7 +353,7 @@ retry:
353 rc = pci_enable_msix_range(adapter->pdev, adapter->msix_entries, 353 rc = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
354 maxvec, maxvec); 354 maxvec, maxvec);
355 /* 355 /*
356 * -ENOSPC is the only error code allowed to be analized 356 * -ENOSPC is the only error code allowed to be analyzed
357 */ 357 */
358 if (rc == -ENOSPC) { 358 if (rc == -ENOSPC) {
359 if (maxvec == 1) 359 if (maxvec == 1)
@@ -370,7 +370,7 @@ retry:
370 return rc; 370 return rc;
371} 371}
372 372
373Note how pci_enable_msix_range() return value is analized for a fallback - 373Note how pci_enable_msix_range() return value is analyzed for a fallback -
374any error code other than -ENOSPC indicates a fatal error and should not 374any error code other than -ENOSPC indicates a fatal error and should not
375be retried. 375be retried.
376 376
@@ -486,7 +486,7 @@ during development.
486If your device supports both MSI-X and MSI capabilities, you should use 486If your device supports both MSI-X and MSI capabilities, you should use
487the MSI-X facilities in preference to the MSI facilities. As mentioned 487the MSI-X facilities in preference to the MSI facilities. As mentioned
488above, MSI-X supports any number of interrupts between 1 and 2048. 488above, MSI-X supports any number of interrupts between 1 and 2048.
489In constrast, MSI is restricted to a maximum of 32 interrupts (and 489In contrast, MSI is restricted to a maximum of 32 interrupts (and
490must be a power of two). In addition, the MSI interrupt vectors must 490must be a power of two). In addition, the MSI interrupt vectors must
491be allocated consecutively, so the system might not be able to allocate 491be allocated consecutively, so the system might not be able to allocate
492as many vectors for MSI as it could for MSI-X. On some platforms, MSI 492as many vectors for MSI as it could for MSI-X. On some platforms, MSI
@@ -501,18 +501,9 @@ necessary to disable interrupts (Linux guarantees the same interrupt will
501not be re-entered). If a device uses multiple interrupts, the driver 501not be re-entered). If a device uses multiple interrupts, the driver
502must disable interrupts while the lock is held. If the device sends 502must disable interrupts while the lock is held. If the device sends
503a different interrupt, the driver will deadlock trying to recursively 503a different interrupt, the driver will deadlock trying to recursively
504acquire the spinlock. 504acquire the spinlock. Such deadlocks can be avoided by using
505 505spin_lock_irqsave() or spin_lock_irq() which disable local interrupts
506There are two solutions. The first is to take the lock with 506and acquire the lock (see Documentation/DocBook/kernel-locking).
507spin_lock_irqsave() or spin_lock_irq() (see
508Documentation/DocBook/kernel-locking). The second is to specify
509IRQF_DISABLED to request_irq() so that the kernel runs the entire
510interrupt routine with interrupts disabled.
511
512If your MSI interrupt routine does not hold the lock for the whole time
513it is running, the first solution may be best. The second solution is
514normally preferred as it avoids making two transitions from interrupt
515disabled to enabled and back again.
516 507
5174.6 How to tell whether MSI/MSI-X is enabled on a device 5084.6 How to tell whether MSI/MSI-X is enabled on a device
518 509
diff --git a/Documentation/PCI/pci-error-recovery.txt b/Documentation/PCI/pci-error-recovery.txt
index 898ded24510d..ac26869c7db4 100644
--- a/Documentation/PCI/pci-error-recovery.txt
+++ b/Documentation/PCI/pci-error-recovery.txt
@@ -256,7 +256,7 @@ STEP 4: Slot Reset
256------------------ 256------------------
257 257
258In response to a return value of PCI_ERS_RESULT_NEED_RESET, the 258In response to a return value of PCI_ERS_RESULT_NEED_RESET, the
259the platform will peform a slot reset on the requesting PCI device(s). 259the platform will perform a slot reset on the requesting PCI device(s).
260The actual steps taken by a platform to perform a slot reset 260The actual steps taken by a platform to perform a slot reset
261will be platform-dependent. Upon completion of slot reset, the 261will be platform-dependent. Upon completion of slot reset, the
262platform will call the device slot_reset() callback. 262platform will call the device slot_reset() callback.
diff --git a/Documentation/PCI/pcieaer-howto.txt b/Documentation/PCI/pcieaer-howto.txt
index 26d3d945c3c2..b4987c0bcb20 100644
--- a/Documentation/PCI/pcieaer-howto.txt
+++ b/Documentation/PCI/pcieaer-howto.txt
@@ -66,8 +66,8 @@ hardware (mostly chipsets) has root ports that cannot obtain the reporting
66source ID. nosourceid=n by default. 66source ID. nosourceid=n by default.
67 67
682.3 AER error output 682.3 AER error output
69When a PCI-E AER error is captured, an error message will be outputed to 69When a PCI-E AER error is captured, an error message will be outputted to
70console. If it's a correctable error, it is outputed as a warning. 70console. If it's a correctable error, it is outputted as a warning.
71Otherwise, it is printed as an error. So users could choose different 71Otherwise, it is printed as an error. So users could choose different
72log level to filter out correctable error messages. 72log level to filter out correctable error messages.
73 73
diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting
index 371814a36719..83c1df2fc758 100644
--- a/Documentation/arm/Booting
+++ b/Documentation/arm/Booting
@@ -58,13 +58,18 @@ serial format options as described in
58-------------------------- 58--------------------------
59 59
60Existing boot loaders: OPTIONAL 60Existing boot loaders: OPTIONAL
61New boot loaders: MANDATORY 61New boot loaders: MANDATORY except for DT-only platforms
62 62
63The boot loader should detect the machine type its running on by some 63The boot loader should detect the machine type its running on by some
64method. Whether this is a hard coded value or some algorithm that 64method. Whether this is a hard coded value or some algorithm that
65looks at the connected hardware is beyond the scope of this document. 65looks at the connected hardware is beyond the scope of this document.
66The boot loader must ultimately be able to provide a MACH_TYPE_xxx 66The boot loader must ultimately be able to provide a MACH_TYPE_xxx
67value to the kernel. (see linux/arch/arm/tools/mach-types). 67value to the kernel. (see linux/arch/arm/tools/mach-types). This
68should be passed to the kernel in register r1.
69
70For DT-only platforms, the machine type will be determined by device
71tree. set the machine type to all ones (~0). This is not strictly
72necessary, but assures that it will not match any existing types.
68 73
694. Setup boot data 744. Setup boot data
70------------------ 75------------------
diff --git a/Documentation/arm/README b/Documentation/arm/README
index aea34095cdcf..9d1e5b2c92e6 100644
--- a/Documentation/arm/README
+++ b/Documentation/arm/README
@@ -185,13 +185,20 @@ Kernel entry (head.S)
185 board devices are used, or the device is setup, and provides that 185 board devices are used, or the device is setup, and provides that
186 machine specific "personality." 186 machine specific "personality."
187 187
188 This fine-grained machine specific selection is controlled by the machine 188 For platforms that support device tree (DT), the machine selection is
189 type ID, which acts both as a run-time and a compile-time code selection 189 controlled at runtime by passing the device tree blob to the kernel. At
190 method. 190 compile-time, support for the machine type must be selected. This allows for
191 a single multiplatform kernel build to be used for several machine types.
191 192
192 You can register a new machine via the web site at: 193 For platforms that do not use device tree, this machine selection is
194 controlled by the machine type ID, which acts both as a run-time and a
195 compile-time code selection method. You can register a new machine via the
196 web site at:
193 197
194 <http://www.arm.linux.org.uk/developer/machines/> 198 <http://www.arm.linux.org.uk/developer/machines/>
195 199
200 Note: Please do not register a machine type for DT-only platforms. If your
201 platform is DT-only, you do not need a registered machine type.
202
196--- 203---
197Russell King (15/03/2004) 204Russell King (15/03/2004)
diff --git a/Documentation/blackfin/Makefile b/Documentation/blackfin/Makefile
index 03f78059d6f5..6782c58fbc29 100644
--- a/Documentation/blackfin/Makefile
+++ b/Documentation/blackfin/Makefile
@@ -1,5 +1,5 @@
1ifneq ($(CONFIG_BLACKFIN),) 1ifneq ($(CONFIG_BLACKFIN),)
2ifneq ($(CONFIG_BFIN_GPTIMERS,) 2ifneq ($(CONFIG_BFIN_GPTIMERS),)
3obj-m := gptimers-example.o 3obj-m := gptimers-example.o
4endif 4endif
5endif 5endif
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index 5aabc08de811..fd12c0d835fd 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -48,8 +48,7 @@ Description of Contents:
48 - Highmem I/O support 48 - Highmem I/O support
49 - I/O scheduler modularization 49 - I/O scheduler modularization
50 1.2 Tuning based on high level requirements/capabilities 50 1.2 Tuning based on high level requirements/capabilities
51 1.2.1 I/O Barriers 51 1.2.1 Request Priority/Latency
52 1.2.2 Request Priority/Latency
53 1.3 Direct access/bypass to lower layers for diagnostics and special 52 1.3 Direct access/bypass to lower layers for diagnostics and special
54 device operations 53 device operations
55 1.3.1 Pre-built commands 54 1.3.1 Pre-built commands
@@ -255,29 +254,12 @@ some control over i/o ordering.
255What kind of support exists at the generic block layer for this ? 254What kind of support exists at the generic block layer for this ?
256 255
257The flags and rw fields in the bio structure can be used for some tuning 256The flags and rw fields in the bio structure can be used for some tuning
258from above e.g indicating that an i/o is just a readahead request, or for 257from above e.g indicating that an i/o is just a readahead request, or priority
259marking barrier requests (discussed next), or priority settings (currently 258settings (currently unused). As far as user applications are concerned they
260unused). As far as user applications are concerned they would need an 259would need an additional mechanism either via open flags or ioctls, or some
261additional mechanism either via open flags or ioctls, or some other upper 260other upper level mechanism to communicate such settings to block.
262level mechanism to communicate such settings to block. 261
263 2621.2.1 Request Priority/Latency
2641.2.1 I/O Barriers
265
266There is a way to enforce strict ordering for i/os through barriers.
267All requests before a barrier point must be serviced before the barrier
268request and any other requests arriving after the barrier will not be
269serviced until after the barrier has completed. This is useful for higher
270level control on write ordering, e.g flushing a log of committed updates
271to disk before the corresponding updates themselves.
272
273A flag in the bio structure, BIO_BARRIER is used to identify a barrier i/o.
274The generic i/o scheduler would make sure that it places the barrier request and
275all other requests coming after it after all the previous requests in the
276queue. Barriers may be implemented in different ways depending on the
277driver. For more details regarding I/O barriers, please read barrier.txt
278in this directory.
279
2801.2.2 Request Priority/Latency
281 263
282Todo/Under discussion: 264Todo/Under discussion:
283Arjan's proposed request priority scheme allows higher levels some broad 265Arjan's proposed request priority scheme allows higher levels some broad
@@ -906,8 +888,8 @@ queue and specific I/O schedulers. Unless stated otherwise, elevator is used
906to refer to both parts and I/O scheduler to specific I/O schedulers. 888to refer to both parts and I/O scheduler to specific I/O schedulers.
907 889
908Block layer implements generic dispatch queue in block/*.c. 890Block layer implements generic dispatch queue in block/*.c.
909The generic dispatch queue is responsible for properly ordering barrier 891The generic dispatch queue is responsible for requeueing, handling non-fs
910requests, requeueing, handling non-fs requests and all other subtleties. 892requests and all other subtleties.
911 893
912Specific I/O schedulers are responsible for ordering normal filesystem 894Specific I/O schedulers are responsible for ordering normal filesystem
913requests. They can also choose to delay certain requests to improve 895requests. They can also choose to delay certain requests to improve
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt
index a22df3ad35ff..f456b4315e86 100644
--- a/Documentation/cgroups/memory.txt
+++ b/Documentation/cgroups/memory.txt
@@ -275,11 +275,6 @@ When oom event notifier is registered, event will be delivered.
275 275
2762.7 Kernel Memory Extension (CONFIG_MEMCG_KMEM) 2762.7 Kernel Memory Extension (CONFIG_MEMCG_KMEM)
277 277
278WARNING: Current implementation lacks reclaim support. That means allocation
279 attempts will fail when close to the limit even if there are plenty of
280 kmem available for reclaim. That makes this option unusable in real
281 life so DO NOT SELECT IT unless for development purposes.
282
283With the Kernel memory extension, the Memory Controller is able to limit 278With the Kernel memory extension, the Memory Controller is able to limit
284the amount of kernel memory used by the system. Kernel memory is fundamentally 279the amount of kernel memory used by the system. Kernel memory is fundamentally
285different than user memory, since it can't be swapped out, which makes it 280different than user memory, since it can't be swapped out, which makes it
@@ -345,6 +340,9 @@ set:
345 In this case, the admin could set up K so that the sum of all groups is 340 In this case, the admin could set up K so that the sum of all groups is
346 never greater than the total memory, and freely set U at the cost of his 341 never greater than the total memory, and freely set U at the cost of his
347 QoS. 342 QoS.
343 WARNING: In the current implementation, memory reclaim will NOT be
344 triggered for a cgroup when it hits K while staying below U, which makes
345 this setup impractical.
348 346
349 U != 0, K >= U: 347 U != 0, K >= U:
350 Since kmem charges will also be fed to the user counter and reclaim will be 348 Since kmem charges will also be fed to the user counter and reclaim will be
diff --git a/Documentation/email-clients.txt b/Documentation/email-clients.txt
index eede6088f978..c7d49b885559 100644
--- a/Documentation/email-clients.txt
+++ b/Documentation/email-clients.txt
@@ -211,7 +211,7 @@ Thunderbird (GUI)
211Thunderbird is an Outlook clone that likes to mangle text, but there are ways 211Thunderbird is an Outlook clone that likes to mangle text, but there are ways
212to coerce it into behaving. 212to coerce it into behaving.
213 213
214- Allows use of an external editor: 214- Allow use of an external editor:
215 The easiest thing to do with Thunderbird and patches is to use an 215 The easiest thing to do with Thunderbird and patches is to use an
216 "external editor" extension and then just use your favorite $EDITOR 216 "external editor" extension and then just use your favorite $EDITOR
217 for reading/merging patches into the body text. To do this, download 217 for reading/merging patches into the body text. To do this, download
@@ -219,6 +219,15 @@ to coerce it into behaving.
219 View->Toolbars->Customize... and finally just click on it when in the 219 View->Toolbars->Customize... and finally just click on it when in the
220 Compose dialog. 220 Compose dialog.
221 221
222 Please note that "external editor" requires that your editor must not
223 fork, or in other words, the editor must not return before closing.
224 You may have to pass additional flags or change the settings of your
225 editor. Most notably if you are using gvim then you must pass the -f
226 option to gvim by putting "/usr/bin/gvim -f" (if the binary is in
227 /usr/bin) to the text editor field in "external editor" settings. If you
228 are using some other editor then please read its manual to find out how
229 to do this.
230
222To beat some sense out of the internal editor, do this: 231To beat some sense out of the internal editor, do this:
223 232
224- Edit your Thunderbird config settings so that it won't use format=flowed. 233- Edit your Thunderbird config settings so that it won't use format=flowed.
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index 8e36c7e3c345..c3b6b301d8b0 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -1260,9 +1260,9 @@ Various pieces of information about kernel activity are available in the
1260since the system first booted. For a quick look, simply cat the file: 1260since the system first booted. For a quick look, simply cat the file:
1261 1261
1262 > cat /proc/stat 1262 > cat /proc/stat
1263 cpu 2255 34 2290 22625563 6290 127 456 0 0 1263 cpu 2255 34 2290 22625563 6290 127 456 0 0 0
1264 cpu0 1132 34 1441 11311718 3675 127 438 0 0 1264 cpu0 1132 34 1441 11311718 3675 127 438 0 0 0
1265 cpu1 1123 0 849 11313845 2614 0 18 0 0 1265 cpu1 1123 0 849 11313845 2614 0 18 0 0 0
1266 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...] 1266 intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
1267 ctxt 1990473 1267 ctxt 1990473
1268 btime 1062191376 1268 btime 1062191376
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt
index 8b35f51fe7b6..b80606de545a 100644
--- a/Documentation/gpio/board.txt
+++ b/Documentation/gpio/board.txt
@@ -50,10 +50,43 @@ gpiod_is_active_low(power) will be true).
50 50
51ACPI 51ACPI
52---- 52----
53ACPI does not support function names for GPIOs. Therefore, only the "idx" 53ACPI also supports function names for GPIOs in a similar fashion to DT.
54argument of gpiod_get_index() is useful to discriminate between GPIOs assigned 54The above DT example can be converted to an equivalent ACPI description
55to a device. The "con_id" argument can still be set for debugging purposes (it 55with the help of _DSD (Device Specific Data), introduced in ACPI 5.1:
56will appear under error messages as well as debug and sysfs nodes). 56
57 Device (FOO) {
58 Name (_CRS, ResourceTemplate () {
59 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
60 "\\_SB.GPI0") {15} // red
61 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
62 "\\_SB.GPI0") {16} // green
63 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
64 "\\_SB.GPI0") {17} // blue
65 GpioIo (Exclusive, ..., IoRestrictionOutputOnly,
66 "\\_SB.GPI0") {1} // power
67 })
68
69 Name (_DSD, Package () {
70 ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
71 Package () {
72 Package () {
73 "led-gpios",
74 Package () {
75 ^FOO, 0, 0, 1,
76 ^FOO, 1, 0, 1,
77 ^FOO, 2, 0, 1,
78 }
79 },
80 Package () {
81 "power-gpios",
82 Package () {^FOO, 3, 0, 0},
83 },
84 }
85 })
86 }
87
88For more information about the ACPI GPIO bindings see
89Documentation/acpi/gpio-properties.txt.
57 90
58Platform Data 91Platform Data
59------------- 92-------------
diff --git a/Documentation/i2o/README b/Documentation/i2o/README
deleted file mode 100644
index ee91e2626ff0..000000000000
--- a/Documentation/i2o/README
+++ /dev/null
@@ -1,63 +0,0 @@
1
2 Linux I2O Support (c) Copyright 1999 Red Hat Software
3 and others.
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version
8 2 of the License, or (at your option) any later version.
9
10AUTHORS (so far)
11
12Alan Cox, Building Number Three Ltd.
13 Core code, SCSI and Block OSMs
14
15Steve Ralston, LSI Logic Corp.
16 Debugging SCSI and Block OSM
17
18Deepak Saxena, Intel Corp.
19 Various core/block extensions
20 /proc interface, bug fixes
21 Ioctl interfaces for control
22 Debugging LAN OSM
23
24Philip Rumpf
25 Fixed assorted dumb SMP locking bugs
26
27Juha Sievanen, University of Helsinki Finland
28 LAN OSM code
29 /proc interface to LAN class
30 Bug fixes
31 Core code extensions
32
33Auvo Häkkinen, University of Helsinki Finland
34 LAN OSM code
35 /Proc interface to LAN class
36 Bug fixes
37 Core code extensions
38
39Taneli Vähäkangas, University of Helsinki Finland
40 Fixes to i2o_config
41
42CREDITS
43
44 This work was made possible by
45
46Red Hat Software
47 Funding for the Building #3 part of the project
48
49Symbios Logic (Now LSI)
50 Host adapters, hints, known to work platforms when I hit
51 compatibility problems
52
53BoxHill Corporation
54 Loan of initial FibreChannel disk array used for development work.
55
56European Commission
57 Funding the work done by the University of Helsinki
58
59SysKonnect
60 Loan of FDDI and Gigabit Ethernet cards
61
62ASUSTeK
63 Loan of I2O motherboard
diff --git a/Documentation/i2o/ioctl b/Documentation/i2o/ioctl
deleted file mode 100644
index 27c3c5493116..000000000000
--- a/Documentation/i2o/ioctl
+++ /dev/null
@@ -1,394 +0,0 @@
1
2Linux I2O User Space Interface
3rev 0.3 - 04/20/99
4
5=============================================================================
6Originally written by Deepak Saxena(deepak@plexity.net)
7Currently maintained by Deepak Saxena(deepak@plexity.net)
8=============================================================================
9
10I. Introduction
11
12The Linux I2O subsystem provides a set of ioctl() commands that can be
13utilized by user space applications to communicate with IOPs and devices
14on individual IOPs. This document defines the specific ioctl() commands
15that are available to the user and provides examples of their uses.
16
17This document assumes the reader is familiar with or has access to the
18I2O specification as no I2O message parameters are outlined. For information
19on the specification, see http://www.i2osig.org
20
21This document and the I2O user space interface are currently maintained
22by Deepak Saxena. Please send all comments, errata, and bug fixes to
23deepak@csociety.purdue.edu
24
25II. IOP Access
26
27Access to the I2O subsystem is provided through the device file named
28/dev/i2o/ctl. This file is a character file with major number 10 and minor
29number 166. It can be created through the following command:
30
31 mknod /dev/i2o/ctl c 10 166
32
33III. Determining the IOP Count
34
35 SYNOPSIS
36
37 ioctl(fd, I2OGETIOPS, int *count);
38
39 u8 count[MAX_I2O_CONTROLLERS];
40
41 DESCRIPTION
42
43 This function returns the system's active IOP table. count should
44 point to a buffer containing MAX_I2O_CONTROLLERS entries. Upon
45 returning, each entry will contain a non-zero value if the given
46 IOP unit is active, and NULL if it is inactive or non-existent.
47
48 RETURN VALUE.
49
50 Returns 0 if no errors occur, and -1 otherwise. If an error occurs,
51 errno is set appropriately:
52
53 EFAULT Invalid user space pointer was passed
54
55IV. Getting Hardware Resource Table
56
57 SYNOPSIS
58
59 ioctl(fd, I2OHRTGET, struct i2o_cmd_hrt *hrt);
60
61 struct i2o_cmd_hrtlct
62 {
63 u32 iop; /* IOP unit number */
64 void *resbuf; /* Buffer for result */
65 u32 *reslen; /* Buffer length in bytes */
66 };
67
68 DESCRIPTION
69
70 This function returns the Hardware Resource Table of the IOP specified
71 by hrt->iop in the buffer pointed to by hrt->resbuf. The actual size of
72 the data is written into *(hrt->reslen).
73
74 RETURNS
75
76 This function returns 0 if no errors occur. If an error occurs, -1
77 is returned and errno is set appropriately:
78
79 EFAULT Invalid user space pointer was passed
80 ENXIO Invalid IOP number
81 ENOBUFS Buffer not large enough. If this occurs, the required
82 buffer length is written into *(hrt->reslen)
83
84V. Getting Logical Configuration Table
85
86 SYNOPSIS
87
88 ioctl(fd, I2OLCTGET, struct i2o_cmd_lct *lct);
89
90 struct i2o_cmd_hrtlct
91 {
92 u32 iop; /* IOP unit number */
93 void *resbuf; /* Buffer for result */
94 u32 *reslen; /* Buffer length in bytes */
95 };
96
97 DESCRIPTION
98
99 This function returns the Logical Configuration Table of the IOP specified
100 by lct->iop in the buffer pointed to by lct->resbuf. The actual size of
101 the data is written into *(lct->reslen).
102
103 RETURNS
104
105 This function returns 0 if no errors occur. If an error occurs, -1
106 is returned and errno is set appropriately:
107
108 EFAULT Invalid user space pointer was passed
109 ENXIO Invalid IOP number
110 ENOBUFS Buffer not large enough. If this occurs, the required
111 buffer length is written into *(lct->reslen)
112
113VI. Setting Parameters
114
115 SYNOPSIS
116
117 ioctl(fd, I2OPARMSET, struct i2o_parm_setget *ops);
118
119 struct i2o_cmd_psetget
120 {
121 u32 iop; /* IOP unit number */
122 u32 tid; /* Target device TID */
123 void *opbuf; /* Operation List buffer */
124 u32 oplen; /* Operation List buffer length in bytes */
125 void *resbuf; /* Result List buffer */
126 u32 *reslen; /* Result List buffer length in bytes */
127 };
128
129 DESCRIPTION
130
131 This function posts a UtilParamsSet message to the device identified
132 by ops->iop and ops->tid. The operation list for the message is
133 sent through the ops->opbuf buffer, and the result list is written
134 into the buffer pointed to by ops->resbuf. The number of bytes
135 written is placed into *(ops->reslen).
136
137 RETURNS
138
139 The return value is the size in bytes of the data written into
140 ops->resbuf if no errors occur. If an error occurs, -1 is returned
141 and errno is set appropriately:
142
143 EFAULT Invalid user space pointer was passed
144 ENXIO Invalid IOP number
145 ENOBUFS Buffer not large enough. If this occurs, the required
146 buffer length is written into *(ops->reslen)
147 ETIMEDOUT Timeout waiting for reply message
148 ENOMEM Kernel memory allocation error
149
150 A return value of 0 does not mean that the value was actually
151 changed properly on the IOP. The user should check the result
152 list to determine the specific status of the transaction.
153
154VII. Getting Parameters
155
156 SYNOPSIS
157
158 ioctl(fd, I2OPARMGET, struct i2o_parm_setget *ops);
159
160 struct i2o_parm_setget
161 {
162 u32 iop; /* IOP unit number */
163 u32 tid; /* Target device TID */
164 void *opbuf; /* Operation List buffer */
165 u32 oplen; /* Operation List buffer length in bytes */
166 void *resbuf; /* Result List buffer */
167 u32 *reslen; /* Result List buffer length in bytes */
168 };
169
170 DESCRIPTION
171
172 This function posts a UtilParamsGet message to the device identified
173 by ops->iop and ops->tid. The operation list for the message is
174 sent through the ops->opbuf buffer, and the result list is written
175 into the buffer pointed to by ops->resbuf. The actual size of data
176 written is placed into *(ops->reslen).
177
178 RETURNS
179
180 EFAULT Invalid user space pointer was passed
181 ENXIO Invalid IOP number
182 ENOBUFS Buffer not large enough. If this occurs, the required
183 buffer length is written into *(ops->reslen)
184 ETIMEDOUT Timeout waiting for reply message
185 ENOMEM Kernel memory allocation error
186
187 A return value of 0 does not mean that the value was actually
188 properly retrieved. The user should check the result list
189 to determine the specific status of the transaction.
190
191VIII. Downloading Software
192
193 SYNOPSIS
194
195 ioctl(fd, I2OSWDL, struct i2o_sw_xfer *sw);
196
197 struct i2o_sw_xfer
198 {
199 u32 iop; /* IOP unit number */
200 u8 flags; /* DownloadFlags field */
201 u8 sw_type; /* Software type */
202 u32 sw_id; /* Software ID */
203 void *buf; /* Pointer to software buffer */
204 u32 *swlen; /* Length of software buffer */
205 u32 *maxfrag; /* Number of fragments */
206 u32 *curfrag; /* Current fragment number */
207 };
208
209 DESCRIPTION
210
211 This function downloads a software fragment pointed by sw->buf
212 to the iop identified by sw->iop. The DownloadFlags, SwID, SwType
213 and SwSize fields of the ExecSwDownload message are filled in with
214 the values of sw->flags, sw->sw_id, sw->sw_type and *(sw->swlen).
215
216 The fragments _must_ be sent in order and be 8K in size. The last
217 fragment _may_ be shorter, however. The kernel will compute its
218 size based on information in the sw->swlen field.
219
220 Please note that SW transfers can take a long time.
221
222 RETURNS
223
224 This function returns 0 no errors occur. If an error occurs, -1
225 is returned and errno is set appropriately:
226
227 EFAULT Invalid user space pointer was passed
228 ENXIO Invalid IOP number
229 ETIMEDOUT Timeout waiting for reply message
230 ENOMEM Kernel memory allocation error
231
232IX. Uploading Software
233
234 SYNOPSIS
235
236 ioctl(fd, I2OSWUL, struct i2o_sw_xfer *sw);
237
238 struct i2o_sw_xfer
239 {
240 u32 iop; /* IOP unit number */
241 u8 flags; /* UploadFlags */
242 u8 sw_type; /* Software type */
243 u32 sw_id; /* Software ID */
244 void *buf; /* Pointer to software buffer */
245 u32 *swlen; /* Length of software buffer */
246 u32 *maxfrag; /* Number of fragments */
247 u32 *curfrag; /* Current fragment number */
248 };
249
250 DESCRIPTION
251
252 This function uploads a software fragment from the IOP identified
253 by sw->iop, sw->sw_type, sw->sw_id and optionally sw->swlen fields.
254 The UploadFlags, SwID, SwType and SwSize fields of the ExecSwUpload
255 message are filled in with the values of sw->flags, sw->sw_id,
256 sw->sw_type and *(sw->swlen).
257
258 The fragments _must_ be requested in order and be 8K in size. The
259 user is responsible for allocating memory pointed by sw->buf. The
260 last fragment _may_ be shorter.
261
262 Please note that SW transfers can take a long time.
263
264 RETURNS
265
266 This function returns 0 if no errors occur. If an error occurs, -1
267 is returned and errno is set appropriately:
268
269 EFAULT Invalid user space pointer was passed
270 ENXIO Invalid IOP number
271 ETIMEDOUT Timeout waiting for reply message
272 ENOMEM Kernel memory allocation error
273
274X. Removing Software
275
276 SYNOPSIS
277
278 ioctl(fd, I2OSWDEL, struct i2o_sw_xfer *sw);
279
280 struct i2o_sw_xfer
281 {
282 u32 iop; /* IOP unit number */
283 u8 flags; /* RemoveFlags */
284 u8 sw_type; /* Software type */
285 u32 sw_id; /* Software ID */
286 void *buf; /* Unused */
287 u32 *swlen; /* Length of the software data */
288 u32 *maxfrag; /* Unused */
289 u32 *curfrag; /* Unused */
290 };
291
292 DESCRIPTION
293
294 This function removes software from the IOP identified by sw->iop.
295 The RemoveFlags, SwID, SwType and SwSize fields of the ExecSwRemove message
296 are filled in with the values of sw->flags, sw->sw_id, sw->sw_type and
297 *(sw->swlen). Give zero in *(sw->len) if the value is unknown. IOP uses
298 *(sw->swlen) value to verify correct identication of the module to remove.
299 The actual size of the module is written into *(sw->swlen).
300
301 RETURNS
302
303 This function returns 0 if no errors occur. If an error occurs, -1
304 is returned and errno is set appropriately:
305
306 EFAULT Invalid user space pointer was passed
307 ENXIO Invalid IOP number
308 ETIMEDOUT Timeout waiting for reply message
309 ENOMEM Kernel memory allocation error
310
311X. Validating Configuration
312
313 SYNOPSIS
314
315 ioctl(fd, I2OVALIDATE, int *iop);
316 u32 iop;
317
318 DESCRIPTION
319
320 This function posts an ExecConfigValidate message to the controller
321 identified by iop. This message indicates that the current
322 configuration is accepted. The iop changes the status of suspect drivers
323 to valid and may delete old drivers from its store.
324
325 RETURNS
326
327 This function returns 0 if no erro occur. If an error occurs, -1 is
328 returned and errno is set appropriately:
329
330 ETIMEDOUT Timeout waiting for reply message
331 ENXIO Invalid IOP number
332
333XI. Configuration Dialog
334
335 SYNOPSIS
336
337 ioctl(fd, I2OHTML, struct i2o_html *htquery);
338 struct i2o_html
339 {
340 u32 iop; /* IOP unit number */
341 u32 tid; /* Target device ID */
342 u32 page; /* HTML page */
343 void *resbuf; /* Buffer for reply HTML page */
344 u32 *reslen; /* Length in bytes of reply buffer */
345 void *qbuf; /* Pointer to HTTP query string */
346 u32 qlen; /* Length in bytes of query string buffer */
347 };
348
349 DESCRIPTION
350
351 This function posts an UtilConfigDialog message to the device identified
352 by htquery->iop and htquery->tid. The requested HTML page number is
353 provided by the htquery->page field, and the resultant data is stored
354 in the buffer pointed to by htquery->resbuf. If there is an HTTP query
355 string that is to be sent to the device, it should be sent in the buffer
356 pointed to by htquery->qbuf. If there is no query string, this field
357 should be set to NULL. The actual size of the reply received is written
358 into *(htquery->reslen).
359
360 RETURNS
361
362 This function returns 0 if no error occur. If an error occurs, -1
363 is returned and errno is set appropriately:
364
365 EFAULT Invalid user space pointer was passed
366 ENXIO Invalid IOP number
367 ENOBUFS Buffer not large enough. If this occurs, the required
368 buffer length is written into *(ops->reslen)
369 ETIMEDOUT Timeout waiting for reply message
370 ENOMEM Kernel memory allocation error
371
372XII. Events
373
374 In the process of determining this. Current idea is to have use
375 the select() interface to allow user apps to periodically poll
376 the /dev/i2o/ctl device for events. When select() notifies the user
377 that an event is available, the user would call read() to retrieve
378 a list of all the events that are pending for the specific device.
379
380=============================================================================
381Revision History
382=============================================================================
383
384Rev 0.1 - 04/01/99
385- Initial revision
386
387Rev 0.2 - 04/06/99
388- Changed return values to match UNIX ioctl() standard. Only return values
389 are 0 and -1. All errors are reported through errno.
390- Added summary of proposed possible event interfaces
391
392Rev 0.3 - 04/20/99
393- Changed all ioctls() to use pointers to user data instead of actual data
394- Updated error values to match the code
diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
index 92ae734c00c3..b9d229fee6b9 100644
--- a/Documentation/input/alps.txt
+++ b/Documentation/input/alps.txt
@@ -58,7 +58,7 @@ To exit command mode, PSMOUSE_CMD_SETSTREAM (EA) is sent to the touchpad.
58While in command mode, register addresses can be set by first sending a 58While in command mode, register addresses can be set by first sending a
59specific command, either EC for v3 devices or F5 for v4 devices. Then the 59specific command, either EC for v3 devices or F5 for v4 devices. Then the
60address is sent one nibble at a time, where each nibble is encoded as a 60address is sent one nibble at a time, where each nibble is encoded as a
61command with optional data. This enoding differs slightly between the v3 and 61command with optional data. This encoding differs slightly between the v3 and
62v4 protocols. 62v4 protocols.
63 63
64Once an address has been set, the addressed register can be read by sending 64Once an address has been set, the addressed register can be read by sending
@@ -139,7 +139,7 @@ ALPS Absolute Mode - Protocol Version 3
139--------------------------------------- 139---------------------------------------
140 140
141ALPS protocol version 3 has three different packet formats. The first two are 141ALPS protocol version 3 has three different packet formats. The first two are
142associated with touchpad events, and the third is associatd with trackstick 142associated with touchpad events, and the third is associated with trackstick
143events. 143events.
144 144
145The first type is the touchpad position packet. 145The first type is the touchpad position packet.
diff --git a/Documentation/input/event-codes.txt b/Documentation/input/event-codes.txt
index 96705616f582..3f0f5ce3338b 100644
--- a/Documentation/input/event-codes.txt
+++ b/Documentation/input/event-codes.txt
@@ -229,7 +229,7 @@ such device to feedback.
229EV_PWR: 229EV_PWR:
230---------- 230----------
231EV_PWR events are a special type of event used specifically for power 231EV_PWR events are a special type of event used specifically for power
232mangement. Its usage is not well defined. To be addressed later. 232management. Its usage is not well defined. To be addressed later.
233 233
234Device properties: 234Device properties:
235================= 235=================
diff --git a/Documentation/input/gpio-tilt.txt b/Documentation/input/gpio-tilt.txt
index 06d60c3ff5e7..2cdfd9bcb1af 100644
--- a/Documentation/input/gpio-tilt.txt
+++ b/Documentation/input/gpio-tilt.txt
@@ -28,7 +28,7 @@ Example:
28-------- 28--------
29 29
30Example configuration for a single TS1003 tilt switch that rotates around 30Example configuration for a single TS1003 tilt switch that rotates around
31one axis in 4 steps and emitts the current tilt via two GPIOs. 31one axis in 4 steps and emits the current tilt via two GPIOs.
32 32
33static int sg060_tilt_enable(struct device *dev) { 33static int sg060_tilt_enable(struct device *dev) {
34 /* code to enable the sensors */ 34 /* code to enable the sensors */
diff --git a/Documentation/input/iforce-protocol.txt b/Documentation/input/iforce-protocol.txt
index 2d5fbfd6023e..66287151c54a 100644
--- a/Documentation/input/iforce-protocol.txt
+++ b/Documentation/input/iforce-protocol.txt
@@ -97,7 +97,7 @@ LEN= 0e
97*** Attack and fade *** 97*** Attack and fade ***
98OP= 02 98OP= 02
99LEN= 08 99LEN= 08
10000-01 Address where to store the parameteres 10000-01 Address where to store the parameters
10102-03 Duration of attack (little endian encoding, in ms) 10102-03 Duration of attack (little endian encoding, in ms)
10204 Level at end of attack. Signed byte. 10204 Level at end of attack. Signed byte.
10305-06 Duration of fade. 10305-06 Duration of fade.
diff --git a/Documentation/input/walkera0701.txt b/Documentation/input/walkera0701.txt
index 561385d38482..49e3ac60dcef 100644
--- a/Documentation/input/walkera0701.txt
+++ b/Documentation/input/walkera0701.txt
@@ -91,7 +91,7 @@ absolute binary value. (10 bits per channel). Next nibble is checksum for
91first ten nibbles. 91first ten nibbles.
92 92
93Next nibbles 12 .. 21 represents four channels (not all channels can be 93Next nibbles 12 .. 21 represents four channels (not all channels can be
94directly controlled from TX). Binary representations ar the same as in first 94directly controlled from TX). Binary representations are the same as in first
95four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is 95four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is
96checksum for nibbles 12..23. 96checksum for nibbles 12..23.
97 97
diff --git a/Documentation/input/yealink.txt b/Documentation/input/yealink.txt
index 5360e434486c..8277b76ec506 100644
--- a/Documentation/input/yealink.txt
+++ b/Documentation/input/yealink.txt
@@ -93,7 +93,7 @@ Format description:
93 Format specifier 93 Format specifier
94 '8' : Generic 7 segment digit with individual addressable segments 94 '8' : Generic 7 segment digit with individual addressable segments
95 95
96 Reduced capability 7 segm digit, when segments are hard wired together. 96 Reduced capability 7 segment digit, when segments are hard wired together.
97 '1' : 2 segments digit only able to produce a 1. 97 '1' : 2 segments digit only able to produce a 1.
98 'e' : Most significant day of the month digit, 98 'e' : Most significant day of the month digit,
99 able to produce at least 1 2 3. 99 able to produce at least 1 2 3.
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 11a76df2e1f1..5bc92d2f4716 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -928,6 +928,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
928 Enable debug messages at boot time. See 928 Enable debug messages at boot time. See
929 Documentation/dynamic-debug-howto.txt for details. 929 Documentation/dynamic-debug-howto.txt for details.
930 930
931 eagerfpu= [X86]
932 on enable eager fpu restore
933 off disable eager fpu restore
934 auto selects the default scheme, which automatically
935 enables eagerfpu restore for xsaveopt.
936
931 early_ioremap_debug [KNL] 937 early_ioremap_debug [KNL]
932 Enable debug messages in early_ioremap support. This 938 Enable debug messages in early_ioremap support. This
933 is useful for tracking down temporary early mappings 939 is useful for tracking down temporary early mappings
@@ -2344,12 +2350,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
2344 parameter, xsave area per process might occupy more 2350 parameter, xsave area per process might occupy more
2345 memory on xsaves enabled systems. 2351 memory on xsaves enabled systems.
2346 2352
2347 eagerfpu= [X86]
2348 on enable eager fpu restore
2349 off disable eager fpu restore
2350 auto selects the default scheme, which automatically
2351 enables eagerfpu restore for xsaveopt.
2352
2353 nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or 2353 nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or
2354 wfi(ARM) instruction doesn't work correctly and not to 2354 wfi(ARM) instruction doesn't work correctly and not to
2355 use it. This is also useful when using JTAG debugger. 2355 use it. This is also useful when using JTAG debugger.
diff --git a/Documentation/kmemcheck.txt b/Documentation/kmemcheck.txt
index a41bdebbe87b..80aae85d8da6 100644
--- a/Documentation/kmemcheck.txt
+++ b/Documentation/kmemcheck.txt
@@ -82,8 +82,8 @@ menu to even appear in "menuconfig". These are:
82 82
83 o CONFIG_DEBUG_PAGEALLOC=n 83 o CONFIG_DEBUG_PAGEALLOC=n
84 84
85 This option is located under "Kernel hacking" / "Debug page memory 85 This option is located under "Kernel hacking" / "Memory Debugging"
86 allocations". 86 / "Debug page memory allocations".
87 87
88In addition, I highly recommend turning on CONFIG_DEBUG_INFO=y. This is also 88In addition, I highly recommend turning on CONFIG_DEBUG_INFO=y. This is also
89located under "Kernel hacking". With this, you will be able to get line number 89located under "Kernel hacking". With this, you will be able to get line number
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt
index 1488b6525eb6..1f9b3e2b98ae 100644
--- a/Documentation/kprobes.txt
+++ b/Documentation/kprobes.txt
@@ -305,8 +305,8 @@ architectures:
3053. Configuring Kprobes 3053. Configuring Kprobes
306 306
307When configuring the kernel using make menuconfig/xconfig/oldconfig, 307When configuring the kernel using make menuconfig/xconfig/oldconfig,
308ensure that CONFIG_KPROBES is set to "y". Under "Instrumentation 308ensure that CONFIG_KPROBES is set to "y". Under "General setup", look
309Support", look for "Kprobes". 309for "Kprobes".
310 310
311So that you can load and unload Kprobes-based instrumentation modules, 311So that you can load and unload Kprobes-based instrumentation modules,
312make sure "Loadable module support" (CONFIG_MODULES) and "Module 312make sure "Loadable module support" (CONFIG_MODULES) and "Module
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 6974f1c2b4e1..f95746189b5d 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -1727,7 +1727,7 @@ There are some more advanced barrier functions:
1727 } 1727 }
1728 1728
1729 The dma_rmb() allows us guarantee the device has released ownership 1729 The dma_rmb() allows us guarantee the device has released ownership
1730 before we read the data from the descriptor, and he dma_wmb() allows 1730 before we read the data from the descriptor, and the dma_wmb() allows
1731 us to guarantee the data is written to the descriptor before the device 1731 us to guarantee the data is written to the descriptor before the device
1732 can see it now has ownership. The wmb() is needed to guarantee that the 1732 can see it now has ownership. The wmb() is needed to guarantee that the
1733 cache coherent memory writes have completed before attempting a write to 1733 cache coherent memory writes have completed before attempting a write to
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt
index ea03abfc97e9..ce2cfcf35c27 100644
--- a/Documentation/memory-hotplug.txt
+++ b/Documentation/memory-hotplug.txt
@@ -149,7 +149,7 @@ For example, assume 1GiB memory block size. A device for a memory starting at
149(0x100000000 / 1Gib = 4) 149(0x100000000 / 1Gib = 4)
150This device covers address range [0x100000000 ... 0x140000000) 150This device covers address range [0x100000000 ... 0x140000000)
151 151
152Under each memory block, you can see 4 files: 152Under each memory block, you can see 5 files:
153 153
154/sys/devices/system/memory/memoryXXX/phys_index 154/sys/devices/system/memory/memoryXXX/phys_index
155/sys/devices/system/memory/memoryXXX/phys_device 155/sys/devices/system/memory/memoryXXX/phys_device
@@ -359,38 +359,51 @@ Need more implementation yet....
359-------------------------------- 359--------------------------------
3608. Memory hotplug event notifier 3608. Memory hotplug event notifier
361-------------------------------- 361--------------------------------
362Memory hotplug has event notifier. There are 6 types of notification. 362Hotplugging events are sent to a notification queue.
363 363
364MEMORY_GOING_ONLINE 364There are six types of notification defined in include/linux/memory.h:
365
366MEM_GOING_ONLINE
365 Generated before new memory becomes available in order to be able to 367 Generated before new memory becomes available in order to be able to
366 prepare subsystems to handle memory. The page allocator is still unable 368 prepare subsystems to handle memory. The page allocator is still unable
367 to allocate from the new memory. 369 to allocate from the new memory.
368 370
369MEMORY_CANCEL_ONLINE 371MEM_CANCEL_ONLINE
370 Generated if MEMORY_GOING_ONLINE fails. 372 Generated if MEMORY_GOING_ONLINE fails.
371 373
372MEMORY_ONLINE 374MEM_ONLINE
373 Generated when memory has successfully brought online. The callback may 375 Generated when memory has successfully brought online. The callback may
374 allocate pages from the new memory. 376 allocate pages from the new memory.
375 377
376MEMORY_GOING_OFFLINE 378MEM_GOING_OFFLINE
377 Generated to begin the process of offlining memory. Allocations are no 379 Generated to begin the process of offlining memory. Allocations are no
378 longer possible from the memory but some of the memory to be offlined 380 longer possible from the memory but some of the memory to be offlined
379 is still in use. The callback can be used to free memory known to a 381 is still in use. The callback can be used to free memory known to a
380 subsystem from the indicated memory block. 382 subsystem from the indicated memory block.
381 383
382MEMORY_CANCEL_OFFLINE 384MEM_CANCEL_OFFLINE
383 Generated if MEMORY_GOING_OFFLINE fails. Memory is available again from 385 Generated if MEMORY_GOING_OFFLINE fails. Memory is available again from
384 the memory block that we attempted to offline. 386 the memory block that we attempted to offline.
385 387
386MEMORY_OFFLINE 388MEM_OFFLINE
387 Generated after offlining memory is complete. 389 Generated after offlining memory is complete.
388 390
389A callback routine can be registered by 391A callback routine can be registered by calling
392
390 hotplug_memory_notifier(callback_func, priority) 393 hotplug_memory_notifier(callback_func, priority)
391 394
392The second argument of callback function (action) is event types of above. 395Callback functions with higher values of priority are called before callback
393The third argument is passed by pointer of struct memory_notify. 396functions with lower values.
397
398A callback function must have the following prototype:
399
400 int callback_func(
401 struct notifier_block *self, unsigned long action, void *arg);
402
403The first argument of the callback function (self) is a pointer to the block
404of the notifier chain that points to the callback function itself.
405The second argument (action) is one of the event types described above.
406The third argument (arg) passes a pointer of struct memory_notify.
394 407
395struct memory_notify { 408struct memory_notify {
396 unsigned long start_pfn; 409 unsigned long start_pfn;
@@ -412,6 +425,18 @@ node loses all memory. If this is -1, then nodemask status is not changed.
412If status_changed_nid* >= 0, callback should create/discard structures for the 425If status_changed_nid* >= 0, callback should create/discard structures for the
413node if necessary. 426node if necessary.
414 427
428The callback routine shall return one of the values
429NOTIFY_DONE, NOTIFY_OK, NOTIFY_BAD, NOTIFY_STOP
430defined in include/linux/notifier.h
431
432NOTIFY_DONE and NOTIFY_OK have no effect on the further processing.
433
434NOTIFY_BAD is used as response to the MEM_GOING_ONLINE, MEM_GOING_OFFLINE,
435MEM_ONLINE, or MEM_OFFLINE action to cancel hotplugging. It stops
436further processing of the notification queue.
437
438NOTIFY_STOP stops further processing of the notification queue.
439
415-------------- 440--------------
4169. Future Work 4419. Future Work
417-------------- 442--------------
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt
index cb6a596072bb..2216eb187c21 100644
--- a/Documentation/printk-formats.txt
+++ b/Documentation/printk-formats.txt
@@ -228,7 +228,7 @@ UUID/GUID addresses:
228 lower ('l') or upper case ('L') hex characters - and big endian order 228 lower ('l') or upper case ('L') hex characters - and big endian order
229 in lower ('b') or upper case ('B') hex characters. 229 in lower ('b') or upper case ('B') hex characters.
230 230
231 Where no additional specifiers are used the default little endian 231 Where no additional specifiers are used the default big endian
232 order with lower case hex characters will be printed. 232 order with lower case hex characters will be printed.
233 233
234 Passed by reference. 234 Passed by reference.
@@ -273,6 +273,16 @@ struct clk:
273 273
274 Passed by reference. 274 Passed by reference.
275 275
276bitmap and its derivatives such as cpumask and nodemask:
277
278 %*pb 0779
279 %*pbl 0,3-6,8-10
280
281 For printing bitmap and its derivatives such as cpumask and nodemask,
282 %*pb output the bitmap with field width as the number of bits and %*pbl
283 output the bitmap as range list with field width as the number of bits.
284
285 Passed by reference.
276 286
277Thank you for your cooperation and attention. 287Thank you for your cooperation and attention.
278 288
diff --git a/Documentation/scheduler/completion.txt b/Documentation/scheduler/completion.txt
index f77651eca31e..2622bc7a188b 100644
--- a/Documentation/scheduler/completion.txt
+++ b/Documentation/scheduler/completion.txt
@@ -7,24 +7,24 @@ Introduction:
7------------- 7-------------
8 8
9If you have one or more threads of execution that must wait for some process 9If you have one or more threads of execution that must wait for some process
10to have reached a point or a specific state, completions can provide a race 10to have reached a point or a specific state, completions can provide a
11free solution to this problem. Semantically they are somewhat like a 11race-free solution to this problem. Semantically they are somewhat like a
12pthread_barriers and have similar use-cases. 12pthread_barrier and have similar use-cases.
13 13
14Completions are a code synchronization mechanism that is preferable to any 14Completions are a code synchronization mechanism which is preferable to any
15misuse of locks. Any time you think of using yield() or some quirky 15misuse of locks. Any time you think of using yield() or some quirky
16msleep(1); loop to allow something else to proceed, you probably want to 16msleep(1) loop to allow something else to proceed, you probably want to
17look into using one of the wait_for_completion*() calls instead. The 17look into using one of the wait_for_completion*() calls instead. The
18advantage of using completions is clear intent of the code but also more 18advantage of using completions is clear intent of the code, but also more
19efficient code as both threads can continue until the result is actually 19efficient code as both threads can continue until the result is actually
20needed. 20needed.
21 21
22Completions are built on top of the generic event infrastructure in Linux, 22Completions are built on top of the generic event infrastructure in Linux,
23with the event reduced to a simple flag appropriately called "done" in 23with the event reduced to a simple flag (appropriately called "done") in
24struct completion, that tells the waiting threads of execution if they 24struct completion that tells the waiting threads of execution if they
25can continue safely. 25can continue safely.
26 26
27As completions are scheduling related the code is found in 27As completions are scheduling related, the code is found in
28kernel/sched/completion.c - for details on completion design and 28kernel/sched/completion.c - for details on completion design and
29implementation see completions-design.txt 29implementation see completions-design.txt
30 30
@@ -32,9 +32,9 @@ implementation see completions-design.txt
32Usage: 32Usage:
33------ 33------
34 34
35There are three parts to the using completions, the initialization of the 35There are three parts to using completions, the initialization of the
36struct completion, the waiting part through a call to one of the variants of 36struct completion, the waiting part through a call to one of the variants of
37wait_for_completion() and the signaling side through a call to complete(), 37wait_for_completion() and the signaling side through a call to complete()
38or complete_all(). Further there are some helper functions for checking the 38or complete_all(). Further there are some helper functions for checking the
39state of completions. 39state of completions.
40 40
@@ -50,7 +50,7 @@ handling of completions is:
50providing the wait queue to place tasks on for waiting and the flag for 50providing the wait queue to place tasks on for waiting and the flag for
51indicating the state of affairs. 51indicating the state of affairs.
52 52
53Completions should be named to convey the intent of the waiter. A good 53Completions should be named to convey the intent of the waiter. A good
54example is: 54example is:
55 55
56 wait_for_completion(&early_console_added); 56 wait_for_completion(&early_console_added);
@@ -73,7 +73,7 @@ the default state to "not available", that is, "done" is set to 0.
73 73
74The re-initialization function, reinit_completion(), simply resets the 74The re-initialization function, reinit_completion(), simply resets the
75done element to "not available", thus again to 0, without touching the 75done element to "not available", thus again to 0, without touching the
76wait queue. Calling init_completion() on the same completions object is 76wait queue. Calling init_completion() twice on the same completion object is
77most likely a bug as it re-initializes the queue to an empty queue and 77most likely a bug as it re-initializes the queue to an empty queue and
78enqueued tasks could get "lost" - use reinit_completion() in that case. 78enqueued tasks could get "lost" - use reinit_completion() in that case.
79 79
@@ -87,10 +87,17 @@ initialization should always use:
87 DECLARE_COMPLETION_ONSTACK(setup_done) 87 DECLARE_COMPLETION_ONSTACK(setup_done)
88 88
89suitable for automatic/local variables on the stack and will make lockdep 89suitable for automatic/local variables on the stack and will make lockdep
90happy. Note also that one needs to making *sure* the completion passt to 90happy. Note also that one needs to make *sure* the completion passed to
91work threads remains in-scope, and no references remain to on-stack data 91work threads remains in-scope, and no references remain to on-stack data
92when the initiating function returns. 92when the initiating function returns.
93 93
94Using on-stack completions for code that calls any of the _timeout or
95_interruptible/_killable variants is not advisable as they will require
96additional synchronization to prevent the on-stack completion object in
97the timeout/signal cases from going out of scope. Consider using dynamically
98allocated completions when intending to use the _interruptible/_killable
99or _timeout variants of wait_for_completion().
100
94 101
95Waiting for completions: 102Waiting for completions:
96------------------------ 103------------------------
@@ -99,34 +106,38 @@ For a thread of execution to wait for some concurrent work to finish, it
99calls wait_for_completion() on the initialized completion structure. 106calls wait_for_completion() on the initialized completion structure.
100A typical usage scenario is: 107A typical usage scenario is:
101 108
102 structure completion setup_done; 109 struct completion setup_done;
103 init_completion(&setup_done); 110 init_completion(&setup_done);
104 initialze_work(...,&setup_done,...) 111 initialize_work(...,&setup_done,...)
105 112
106 /* run non-dependent code */ /* do setup */ 113 /* run non-dependent code */ /* do setup */
107 114
108 wait_for_completion(&seupt_done); complete(setup_done) 115 wait_for_completion(&setup_done); complete(setup_done)
109 116
110This is not implying any temporal order of wait_for_completion() and the 117This is not implying any temporal order on wait_for_completion() and the
111call to complete() - if the call to complete() happened before the call 118call to complete() - if the call to complete() happened before the call
112to wait_for_completion() then the waiting side simply will continue 119to wait_for_completion() then the waiting side simply will continue
113immediately as all dependencies are satisfied. 120immediately as all dependencies are satisfied if not it will block until
121completion is signaled by complete().
114 122
115Note that wait_for_completion() is calling spin_lock_irq/spin_unlock_irq 123Note that wait_for_completion() is calling spin_lock_irq()/spin_unlock_irq(),
116so it can only be called safely when you know that interrupts are enabled. 124so it can only be called safely when you know that interrupts are enabled.
117Calling it from hard-irq context will result in hard to detect spurious 125Calling it from hard-irq or irqs-off atomic contexts will result in
118enabling of interrupts. 126hard-to-detect spurious enabling of interrupts.
119 127
120wait_for_completion(): 128wait_for_completion():
121 129
122 void wait_for_completion(struct completion *done): 130 void wait_for_completion(struct completion *done):
123 131
124The default behavior is to wait without a timeout and mark the task as 132The default behavior is to wait without a timeout and to mark the task as
125uninterruptible. wait_for_completion() and its variants are only safe 133uninterruptible. wait_for_completion() and its variants are only safe
126in soft-interrupt or process context but not in hard-irq context. 134in process context (as they can sleep) but not in atomic context,
135interrupt context, with disabled irqs. or preemption is disabled - see also
136try_wait_for_completion() below for handling completion in atomic/interrupt
137context.
138
127As all variants of wait_for_completion() can (obviously) block for a long 139As all variants of wait_for_completion() can (obviously) block for a long
128time, you probably don't want to call this with held locks - see also 140time, you probably don't want to call this with held mutexes.
129try_wait_for_completion() below.
130 141
131 142
132Variants available: 143Variants available:
@@ -141,43 +152,44 @@ A common problem that occurs is to have unclean assignment of return types,
141so care should be taken with assigning return-values to variables of proper 152so care should be taken with assigning return-values to variables of proper
142type. Checking for the specific meaning of return values also has been found 153type. Checking for the specific meaning of return values also has been found
143to be quite inaccurate e.g. constructs like 154to be quite inaccurate e.g. constructs like
144if(!wait_for_completion_interruptible_timeout(...)) would execute the same 155if (!wait_for_completion_interruptible_timeout(...)) would execute the same
145code path for successful completion and for the interrupted case - which is 156code path for successful completion and for the interrupted case - which is
146probably not what you want. 157probably not what you want.
147 158
148 int wait_for_completion_interruptible(struct completion *done) 159 int wait_for_completion_interruptible(struct completion *done)
149 160
150marking the task TASK_INTERRUPTIBLE. If a signal was received while waiting. 161This function marks the task TASK_INTERRUPTIBLE. If a signal was received
151It will return -ERESTARTSYS and 0 otherwise. 162while waiting it will return -ERESTARTSYS; 0 otherwise.
152 163
153 unsigned long wait_for_completion_timeout(struct completion *done, 164 unsigned long wait_for_completion_timeout(struct completion *done,
154 unsigned long timeout) 165 unsigned long timeout)
155 166
156The task is marked as TASK_UNINTERRUPTIBLE and will wait at most timeout 167The task is marked as TASK_UNINTERRUPTIBLE and will wait at most 'timeout'
157(in jiffies). If timeout occurs it return 0 else the remaining time in 168(in jiffies). If timeout occurs it returns 0 else the remaining time in
158jiffies (but at least 1). Timeouts are preferably passed by msecs_to_jiffies() 169jiffies (but at least 1). Timeouts are preferably calculated with
159or usecs_to_jiffies(). If the returned timeout value is deliberately ignored 170msecs_to_jiffies() or usecs_to_jiffies(). If the returned timeout value is
160a comment should probably explain why (e.g. see drivers/mfd/wm8350-core.c 171deliberately ignored a comment should probably explain why (e.g. see
161wm8350_read_auxadc()) 172drivers/mfd/wm8350-core.c wm8350_read_auxadc())
162 173
163 long wait_for_completion_interruptible_timeout( 174 long wait_for_completion_interruptible_timeout(
164 struct completion *done, unsigned long timeout) 175 struct completion *done, unsigned long timeout)
165 176
166passing a timeout in jiffies and marking the task as TASK_INTERRUPTIBLE. If a 177This function passes a timeout in jiffies and marks the task as
167signal was received it will return -ERESTARTSYS, 0 if completion timed-out and 178TASK_INTERRUPTIBLE. If a signal was received it will return -ERESTARTSYS;
168the remaining time in jiffies if completion occurred. 179otherwise it returns 0 if the completion timed out or the remaining time in
180jiffies if completion occurred.
169 181
170Further variants include _killable which passes TASK_KILLABLE as the 182Further variants include _killable which uses TASK_KILLABLE as the
171designated tasks state and will return a -ERESTARTSYS if interrupted or 183designated tasks state and will return -ERESTARTSYS if it is interrupted or
172else 0 if completions was achieved as well as a _timeout variant. 184else 0 if completion was achieved. There is a _timeout variant as well:
173 185
174 long wait_for_completion_killable(struct completion *done) 186 long wait_for_completion_killable(struct completion *done)
175 long wait_for_completion_killable_timeout(struct completion *done, 187 long wait_for_completion_killable_timeout(struct completion *done,
176 unsigned long timeout) 188 unsigned long timeout)
177 189
178The _io variants wait_for_completion_io behave the same as the non-_io 190The _io variants wait_for_completion_io() behave the same as the non-_io
179variants, except for accounting waiting time as waiting on IO, which has 191variants, except for accounting waiting time as waiting on IO, which has
180an impact on how scheduling is calculated. 192an impact on how the task is accounted in scheduling stats.
181 193
182 void wait_for_completion_io(struct completion *done) 194 void wait_for_completion_io(struct completion *done)
183 unsigned long wait_for_completion_io_timeout(struct completion *done 195 unsigned long wait_for_completion_io_timeout(struct completion *done
@@ -187,13 +199,13 @@ an impact on how scheduling is calculated.
187Signaling completions: 199Signaling completions:
188---------------------- 200----------------------
189 201
190A thread of execution that wants to signal that the conditions for 202A thread that wants to signal that the conditions for continuation have been
191continuation have been achieved calls complete() to signal exactly one 203achieved calls complete() to signal exactly one of the waiters that it can
192of the waiters that it can continue. 204continue.
193 205
194 void complete(struct completion *done) 206 void complete(struct completion *done)
195 207
196or calls complete_all to signal all current and future waiters. 208or calls complete_all() to signal all current and future waiters.
197 209
198 void complete_all(struct completion *done) 210 void complete_all(struct completion *done)
199 211
@@ -205,32 +217,32 @@ wakeup order is the same in which they were enqueued (FIFO order).
205If complete() is called multiple times then this will allow for that number 217If complete() is called multiple times then this will allow for that number
206of waiters to continue - each call to complete() will simply increment the 218of waiters to continue - each call to complete() will simply increment the
207done element. Calling complete_all() multiple times is a bug though. Both 219done element. Calling complete_all() multiple times is a bug though. Both
208complete() and complete_all() can be called in hard-irq context safely. 220complete() and complete_all() can be called in hard-irq/atomic context safely.
209 221
210There only can be one thread calling complete() or complete_all() on a 222There only can be one thread calling complete() or complete_all() on a
211particular struct completions at any time - serialized through the wait 223particular struct completion at any time - serialized through the wait
212queue spinlock. Any such concurrent calls to complete() or complete_all() 224queue spinlock. Any such concurrent calls to complete() or complete_all()
213probably are a design bug. 225probably are a design bug.
214 226
215Signaling completion from hard-irq context is fine as it will appropriately 227Signaling completion from hard-irq context is fine as it will appropriately
216lock with spin_lock_irqsave/spin_unlock_irqrestore. 228lock with spin_lock_irqsave/spin_unlock_irqrestore and it will never sleep.
217 229
218 230
219try_wait_for_completion()/completion_done(): 231try_wait_for_completion()/completion_done():
220-------------------------------------------- 232--------------------------------------------
221 233
222The try_wait_for_completion will not put the thread on the wait queue but 234The try_wait_for_completion() function will not put the thread on the wait
223rather returns false if it would need to enqueue (block) the thread, else it 235queue but rather returns false if it would need to enqueue (block) the thread,
224consumes any posted completions and returns true. 236else it consumes one posted completion and returns true.
225 237
226 bool try_wait_for_completion(struct completion *done) 238 bool try_wait_for_completion(struct completion *done)
227 239
228Finally to check state of a completions without changing it in any way is 240Finally, to check the state of a completion without changing it in any way,
229provided by completion_done() returning false if there are any posted 241call completion_done(), which returns false if there are no posted
230completion that was not yet consumed by waiters implying that there are 242completions that were not yet consumed by waiters (implying that there are
231waiters and true otherwise; 243waiters) and true otherwise;
232 244
233 bool completion_done(struct completion *done) 245 bool completion_done(struct completion *done)
234 246
235Both try_wait_for_completion() and completion_done() are safe to be called in 247Both try_wait_for_completion() and completion_done() are safe to be called in
236hard-irq context. 248hard-irq or atomic context.
diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
index 6fbd55ef6b45..6bfbc172cdb9 100644
--- a/Documentation/vm/pagemap.txt
+++ b/Documentation/vm/pagemap.txt
@@ -131,7 +131,8 @@ Short descriptions to the page flags:
13113. SWAPCACHE page is mapped to swap space, ie. has an associated swap entry 13113. SWAPCACHE page is mapped to swap space, ie. has an associated swap entry
13214. SWAPBACKED page is backed by swap/RAM 13214. SWAPBACKED page is backed by swap/RAM
133 133
134The page-types tool in this directory can be used to query the above flags. 134The page-types tool in the tools/vm directory can be used to query the
135above flags.
135 136
136Using pagemap to do something useful: 137Using pagemap to do something useful:
137 138
diff --git a/Documentation/vm/transhuge.txt b/Documentation/vm/transhuge.txt
index 6b31cfbe2a9a..8143b9e8373d 100644
--- a/Documentation/vm/transhuge.txt
+++ b/Documentation/vm/transhuge.txt
@@ -159,6 +159,17 @@ for each pass:
159 159
160/sys/kernel/mm/transparent_hugepage/khugepaged/full_scans 160/sys/kernel/mm/transparent_hugepage/khugepaged/full_scans
161 161
162max_ptes_none specifies how many extra small pages (that are
163not already mapped) can be allocated when collapsing a group
164of small pages into one large page.
165
166/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none
167
168A higher value leads to use additional memory for programs.
169A lower value leads to gain less thp performance. Value of
170max_ptes_none can waste cpu time very little, you can
171ignore it.
172
162== Boot parameter == 173== Boot parameter ==
163 174
164You can change the sysfs boot time defaults of Transparent Hugepage 175You can change the sysfs boot time defaults of Transparent Hugepage
diff --git a/Documentation/zh_CN/arm64/booting.txt b/Documentation/zh_CN/arm64/booting.txt
index 6f6d956ac1c9..7cd36af11e71 100644
--- a/Documentation/zh_CN/arm64/booting.txt
+++ b/Documentation/zh_CN/arm64/booting.txt
@@ -15,6 +15,8 @@ Documentation/arm64/booting.txt 的中文翻译
15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
16译存在问题,请联系中文版维护者。 16译存在问题,请联系中文版维护者。
17 17
18本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
19
18英文版维护者: Will Deacon <will.deacon@arm.com> 20英文版维护者: Will Deacon <will.deacon@arm.com>
19中文版维护者: 傅炜 Fu Wei <wefu@redhat.com> 21中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
20中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com> 22中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
@@ -88,22 +90,44 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
88 90
89 u32 code0; /* 可执行代码 */ 91 u32 code0; /* 可执行代码 */
90 u32 code1; /* 可执行代码 */ 92 u32 code1; /* 可执行代码 */
91 u64 text_offset; /* 映像装载偏移 */ 93 u64 text_offset; /* 映像装载偏移,小端模式 */
92 u64 res0 = 0; /* */ 94 u64 image_size; /* 映像实大小, 小端模式 */
93 u64 res1 = 0; /* */ 95 u64 flags; /* 内核旗标, 小模式 *
94 u64 res2 = 0; /* 保留 */ 96 u64 res2 = 0; /* 保留 */
95 u64 res3 = 0; /* 保留 */ 97 u64 res3 = 0; /* 保留 */
96 u64 res4 = 0; /* 保留 */ 98 u64 res4 = 0; /* 保留 */
97 u32 magic = 0x644d5241; /* 魔数, 小端, "ARM\x64" */ 99 u32 magic = 0x644d5241; /* 魔数, 小端, "ARM\x64" */
98 u32 res5 = 0; /* 保留 */ 100 u32 res5; /* 保留 (用于 PE COFF 偏移) */
99 101
100 102
101映像头注释: 103映像头注释:
102 104
105- 自 v3.17 起,除非另有说明,所有域都是小端模式。
106
103- code0/code1 负责跳转到 stext. 107- code0/code1 负责跳转到 stext.
104 108
105映像必须位于系统 RAM 起始处的特定偏移(当前是 0x80000)。系统 RAM 109- 当通过 EFI 启动时, 最初 code0/code1 被跳过。
106的起始地址必须是以 2MB 对齐的。 110 res5 是到 PE 文件头的偏移,而 PE 文件头含有 EFI 的启动入口点 (efi_stub_entry)。
111 当 stub 代码完成了它的使命,它会跳转到 code0 继续正常的启动流程。
112
113- v3.17 之前,未明确指定 text_offset 的字节序。此时,image_size 为零,
114 且 text_offset 依照内核字节序为 0x80000。
115 当 image_size 非零,text_offset 为小端模式且是有效值,应被引导加载程序使用。
116 当 image_size 为零,text_offset 可假定为 0x80000。
117
118- flags 域 (v3.17 引入) 为 64 位小端模式,其编码如下:
119 位 0: 内核字节序。 1 表示大端模式,0 表示小端模式。
120 位 1-63: 保留。
121
122- 当 image_size 为零时,引导装载程序应该试图在内核映像末尾之后尽可能多地保留空闲内存
123 供内核直接使用。对内存空间的需求量因所选定的内核特性而异, 且无实际限制。
124
125内核映像必须被放置在靠近可用系统内存起始的 2MB 对齐为基址的 text_offset 字节处,并从那里被调用。
126当前,对 Linux 来说在此基址以下的内存是无法使用的,因此强烈建议将系统内存的起始作为这个基址。
127从映像起始地址算起,最少必须为内核释放出 image_size 字节的空间。
128
129任何提供给内核的内存(甚至在 2MB 对齐的基地址之前),若未从内核中标记为保留
130(如在设备树(dtb)的 memreserve 区域),都将被认为对内核是可用。
107 131
108在跳转入内核前,必须符合以下状态: 132在跳转入内核前,必须符合以下状态:
109 133
@@ -124,8 +148,12 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
124- 高速缓存、MMU 148- 高速缓存、MMU
125 MMU 必须关闭。 149 MMU 必须关闭。
126 指令缓存开启或关闭都可以。 150 指令缓存开启或关闭都可以。
127 数据缓存必须关闭且无效。 151 已载入的内核映像的相应内存区必须被清理,以达到缓存一致性点(PoC)。
128 外部高速缓存(如果存在)必须配置并禁用。 152 当存在系统缓存或其他使能缓存的一致性主控器时,通常需使用虚拟地址维护其缓存,而非 set/way 操作。
153 遵从通过虚拟地址操作维护构架缓存的系统缓存必须被配置,并可以被使能。
154 而不通过虚拟地址操作维护构架缓存的系统缓存(不推荐),必须被配置且禁用。
155
156 *译者注:对于 PoC 以及缓存相关内容,请参考 ARMv8 构架参考手册 ARM DDI 0487A
129 157
130- 架构计时器 158- 架构计时器
131 CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU 159 CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU
@@ -141,6 +169,14 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
141 在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件 169 在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件
142 在一个更高的异常级别下初始化,以防止在 未知 状态下运行。 170 在一个更高的异常级别下初始化,以防止在 未知 状态下运行。
143 171
172 对于拥有 GICv3 中断控制器的系统:
173 - 若当前在 EL3 :
174 ICC_SRE_EL3.Enable (位 3) 必须初始化为 0b1。
175 ICC_SRE_EL3.SRE (位 0) 必须初始化为 0b1。
176 - 若内核运行在 EL1:
177 ICC_SRE_EL2.Enable (位 3) 必须初始化为 0b1。
178 ICC_SRE_EL2.SRE (位 0) 必须初始化为 0b1。
179
144以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的 180以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的
145必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。 181必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。
146 182
@@ -170,7 +206,7 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
170 ARM DEN 0022A:用于 ARM 上的电源状态协调接口系统软件)中描述的 206 ARM DEN 0022A:用于 ARM 上的电源状态协调接口系统软件)中描述的
171 CPU_ON 调用来将 CPU 带入内核。 207 CPU_ON 调用来将 CPU 带入内核。
172 208
173 *译者注:文档翻译时,此文档更新 ARM DEN 0022B 209 *译者注: ARM DEN 0022A 已更新 ARM DEN 0022C
174 210
175 设备树必须包含一个 ‘psci’ 节点,请参考以下文档: 211 设备树必须包含一个 ‘psci’ 节点,请参考以下文档:
176 Documentation/devicetree/bindings/arm/psci.txt 212 Documentation/devicetree/bindings/arm/psci.txt
diff --git a/Documentation/zh_CN/arm64/legacy_instructions.txt b/Documentation/zh_CN/arm64/legacy_instructions.txt
new file mode 100644
index 000000000000..68362a1ab717
--- /dev/null
+++ b/Documentation/zh_CN/arm64/legacy_instructions.txt
@@ -0,0 +1,72 @@
1Chinese translated version of Documentation/arm64/legacy_instructions.txt
2
3If you have any comment or update to the content, please contact the
4original document maintainer directly. However, if you have a problem
5communicating in English you can also ask the Chinese maintainer for
6help. Contact the Chinese maintainer if this translation is outdated
7or if there is a problem with the translation.
8
9Maintainer: Punit Agrawal <punit.agrawal@arm.com>
10 Suzuki K. Poulose <suzuki.poulose@arm.com>
11Chinese maintainer: Fu Wei <wefu@redhat.com>
12---------------------------------------------------------------------
13Documentation/arm64/legacy_instructions.txt 的中文翻译
14
15如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
16交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
17译存在问题,请联系中文版维护者。
18
19本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
20
21英文版维护者: Punit Agrawal <punit.agrawal@arm.com>
22 Suzuki K. Poulose <suzuki.poulose@arm.com>
23中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
24中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
25中文版校译者: 傅炜 Fu Wei <wefu@redhat.com>
26
27以下为正文
28---------------------------------------------------------------------
29Linux 内核在 arm64 上的移植提供了一个基础框架,以支持构架中正在被淘汰或已废弃指令的模拟执行。
30这个基础框架的代码使用未定义指令钩子(hooks)来支持模拟。如果指令存在,它也允许在硬件中启用该指令。
31
32模拟模式可通过写 sysctl 节点(/proc/sys/abi)来控制。
33不同的执行方式及 sysctl 节点的相应值,解释如下:
34
35* Undef(未定义)
36 值: 0
37 产生未定义指令终止异常。它是那些构架中已废弃的指令,如 SWP,的默认处理方式。
38
39* Emulate(模拟)
40 值: 1
41 使用软件模拟方式。为解决软件迁移问题,这种模拟指令模式的使用是被跟踪的,并会发出速率限制警告。
42 它是那些构架中正在被淘汰的指令,如 CP15 barriers(隔离指令),的默认处理方式。
43
44* Hardware Execution(硬件执行)
45 值: 2
46 虽然标记为正在被淘汰,但一些实现可能提供硬件执行这些指令的使能/禁用操作。
47 使用硬件执行一般会有更好的性能,但将无法收集运行时对正被淘汰指令的使用统计数据。
48
49默认执行模式依赖于指令在构架中状态。正在被淘汰的指令应该以模拟(Emulate)作为默认模式,
50而已废弃的指令必须默认使用未定义(Undef)模式
51
52注意:指令模拟可能无法应对所有情况。更多详情请参考单独的指令注释。
53
54受支持的遗留指令
55-------------
56* SWP{B}
57节点: /proc/sys/abi/swp
58状态: 已废弃
59默认执行方式: Undef (0)
60
61* CP15 Barriers
62节点: /proc/sys/abi/cp15_barrier
63状态: 正被淘汰,不推荐使用
64默认执行方式: Emulate (1)
65
66* SETEND
67节点: /proc/sys/abi/setend
68状态: 正被淘汰,不推荐使用
69默认执行方式: Emulate (1)*
70注:为了使能这个特性,系统中的所有 CPU 必须在 EL0 支持混合字节序。
71如果一个新的 CPU (不支持混合字节序) 在使能这个特性后被热插入系统,
72在应用中可能会出现不可预期的结果。
diff --git a/Documentation/zh_CN/arm64/memory.txt b/Documentation/zh_CN/arm64/memory.txt
index a782704c1cb5..19b3a52d5d94 100644
--- a/Documentation/zh_CN/arm64/memory.txt
+++ b/Documentation/zh_CN/arm64/memory.txt
@@ -15,6 +15,8 @@ Documentation/arm64/memory.txt 的中文翻译
15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 15交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
16译存在问题,请联系中文版维护者。 16译存在问题,请联系中文版维护者。
17 17
18本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
19
18英文版维护者: Catalin Marinas <catalin.marinas@arm.com> 20英文版维护者: Catalin Marinas <catalin.marinas@arm.com>
19中文版维护者: 傅炜 Fu Wei <wefu@redhat.com> 21中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
20中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com> 22中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
@@ -26,69 +28,53 @@ Documentation/arm64/memory.txt 的中文翻译
26 =========================== 28 ===========================
27 29
28作者: Catalin Marinas <catalin.marinas@arm.com> 30作者: Catalin Marinas <catalin.marinas@arm.com>
29日期: 2012 年 02 月 20 日
30 31
31本文档描述 AArch64 Linux 内核所使用的虚拟内存布局。此构架可以实现 32本文档描述 AArch64 Linux 内核所使用的虚拟内存布局。此构架可以实现
32页大小为 4KB 的 4 级转换表和页大小为 64KB 的 3 级转换表。 33页大小为 4KB 的 4 级转换表和页大小为 64KB 的 3 级转换表。
33 34
34AArch64 Linux 使用页大小为 4KB 3 级转换表配置,对于用户和内核 35AArch64 Linux 使用 3 4 级转换表,其大小为 4KB,对于用户和内核
35都有 39-bit (512GB) 的虚拟地址空间。对于页大小为 64KB的配置,仅 36分别都有 39-bit (512GB) 或 48-bit (256TB) 的虚拟地址空间。
36使用 2 级转换表,但内存布局相同。 37页大小为 64KB的配,仅用 2 级转换表,有 42-bit (4TB) 的虚拟地址空间,但内存布局相同。
37 38
38用户地址空间的 63:39 位为 0,而内核地址空间的相应位为 1。TTBRx 的 39用户地址空间的 63:48 位为 0,而内核地址空间的相应位为 1。TTBRx 的
39选择由虚拟地址的 63 位给出。swapper_pg_dir 仅包含内核(全局)映射, 40选择由虚拟地址的 63 位给出。swapper_pg_dir 仅包含内核(全局)映射,
40而用户 pgd 仅包含用户(非全局)映射。swapper_pgd_dir 地址被写入 41而用户 pgd 仅包含用户(非全局)映射。swapper_pg_dir 地址被写入
41TTBR1 中,且从不写入 TTBR0。 42TTBR1 中,且从不写入 TTBR0。
42 43
43 44
44AArch64 Linux 在页大小为 4KB 时的内存布局: 45AArch64 Linux 在页大小为 4KB,并使用 3 级转的内存布局:
45 46
46起始地址 结束地址 大小 用途 47起始地址 结束地址 大小 用途
47----------------------------------------------------------------------- 48-----------------------------------------------------------------------
480000000000000000 0000007fffffffff 512GB 用户空间 490000000000000000 0000007fffffffff 512GB 用户空间
50ffffff8000000000 ffffffffffffffff 512GB 内核空间
49 51
50ffffff8000000000 ffffffbbfffeffff ~240GB vmalloc
51
52ffffffbbffff0000 ffffffbbffffffff 64KB [防护页]
53
54ffffffbc00000000 ffffffbdffffffff 8GB vmemmap
55
56ffffffbe00000000 ffffffbffbbfffff ~8GB [防护页,未来用于 vmmemap]
57 52
58ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk 53AArch64 Linux 在页大小为 4KB,并使用 4 换表时的存布局:
59 54
60ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O 空间 55起始地址 结束地址 大小 用途
61 56-----------------------------------------------------------------------
62ffffffbffbe10000 ffffffbcffffffff ~2MB [防护页] 570000000000000000 0000ffffffffffff 256TB 用户空间
63 58ffff000000000000 ffffffffffffffff 256TB 内核空间
64ffffffbffc000000 ffffffbfffffffff 64MB 模块
65
66ffffffc000000000 ffffffffffffffff 256GB 内核逻辑内存映射
67 59
68 60
69AArch64 Linux 在页大小为 64KB 时的内存布局: 61AArch64 Linux 在页大小为 64KB,并使用 2 级转的内存布局:
70 62
71起始地址 结束地址 大小 用途 63起始地址 结束地址 大小 用途
72----------------------------------------------------------------------- 64-----------------------------------------------------------------------
730000000000000000 000003ffffffffff 4TB 用户空间 650000000000000000 000003ffffffffff 4TB 用户空间
66fffffc0000000000 ffffffffffffffff 4TB 内核空间
74 67
75fffffc0000000000 fffffdfbfffeffff ~2TB vmalloc
76
77fffffdfbffff0000 fffffdfbffffffff 64KB [防护页]
78
79fffffdfc00000000 fffffdfdffffffff 8GB vmemmap
80
81fffffdfe00000000 fffffdfffbbfffff ~8GB [防护页,未来用于 vmmemap]
82 68
83fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk 69AArch64 Linux 在页大小为 64KB,并使用 3 换表时的存布局:
84 70
85fffffdfffbe00000 fffffdfffbe0ffff 64KB PCI I/O 空间 71起始地址 结束地址 大小 用途
86 72-----------------------------------------------------------------------
87fffffdfffbe10000 fffffdfffbffffff ~2MB [防护页] 730000000000000000 0000ffffffffffff 256TB 用户空间
74ffff000000000000 ffffffffffffffff 256TB 内核空间
88 75
89fffffdfffc000000 fffffdffffffffff 64MB 模块
90 76
91fffffe0000000000 ffffffffffffffff 2TB 内核内存 77更详细的内核内存布局,请参动信息。
92 78
93 79
944KB 页大小的转换表查找: 804KB 页大小的转换表查找:
@@ -102,7 +88,7 @@ fffffe0000000000 ffffffffffffffff 2TB 内核逻辑内存映射
102 | | | | +-> [20:12] L3 索引 88 | | | | +-> [20:12] L3 索引
103 | | | +-----------> [29:21] L2 索引 89 | | | +-----------> [29:21] L2 索引
104 | | +---------------------> [38:30] L1 索引 90 | | +---------------------> [38:30] L1 索引
105 | +-------------------------------> [47:39] L0 索引 (未使用) 91 | +-------------------------------> [47:39] L0 索引
106 +-------------------------------------------------> [63] TTBR0/1 92 +-------------------------------------------------> [63] TTBR0/1
107 93
108 94
@@ -115,10 +101,11 @@ fffffe0000000000 ffffffffffffffff 2TB 内核逻辑内存映射
115 | | | | v 101 | | | | v
116 | | | | [15:0] 页内偏移 102 | | | | [15:0] 页内偏移
117 | | | +----------> [28:16] L3 索引 103 | | | +----------> [28:16] L3 索引
118 | | +--------------------------> [41:29] L2 索引 (仅使用 38:29 ) 104 | | +--------------------------> [41:29] L2 索引
119 | +-------------------------------> [47:42] L1 索引 (未使用) 105 | +-------------------------------> [47:42] L1 索引
120 +-------------------------------------------------> [63] TTBR0/1 106 +-------------------------------------------------> [63] TTBR0/1
121 107
108
122当使用 KVM 时, 管理程序(hypervisor)在 EL2 中通过相对内核虚拟地址的 109当使用 KVM 时, 管理程序(hypervisor)在 EL2 中通过相对内核虚拟地址的
123一个固定偏移来映射内核页(内核虚拟地址的高 24 位设为零): 110一个固定偏移来映射内核页(内核虚拟地址的高 24 位设为零):
124 111
diff --git a/MAINTAINERS b/MAINTAINERS
index 27029d24c5bc..dcd43465eae1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3291,7 +3291,9 @@ S: Maintained
3291F: Documentation/ 3291F: Documentation/
3292X: Documentation/ABI/ 3292X: Documentation/ABI/
3293X: Documentation/devicetree/ 3293X: Documentation/devicetree/
3294X: Documentation/[a-z][a-z]_[A-Z][A-Z]/ 3294X: Documentation/acpi
3295X: Documentation/power
3296X: Documentation/spi
3295T: git git://git.lwn.net/linux-2.6.git docs-next 3297T: git git://git.lwn.net/linux-2.6.git docs-next
3296 3298
3297DOUBLETALK DRIVER 3299DOUBLETALK DRIVER
diff --git a/README b/README
index a24ec89ba442..69c68fb4a109 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
1 Linux kernel release 3.x <http://kernel.org/> 1 Linux kernel release 4.x <http://kernel.org/>
2 2
3These are the release notes for Linux version 3. Read them carefully, 3These are the release notes for Linux version 4. Read them carefully,
4as they tell you what this is all about, explain how to install the 4as they tell you what this is all about, explain how to install the
5kernel, and what to do if something goes wrong. 5kernel, and what to do if something goes wrong.
6 6
@@ -62,11 +62,7 @@ INSTALLING the kernel source:
62 directory where you have permissions (eg. your home directory) and 62 directory where you have permissions (eg. your home directory) and
63 unpack it: 63 unpack it:
64 64
65 gzip -cd linux-3.X.tar.gz | tar xvf - 65 xz -cd linux-4.X.tar.xz | tar xvf -
66
67 or
68
69 bzip2 -dc linux-3.X.tar.bz2 | tar xvf -
70 66
71 Replace "X" with the version number of the latest kernel. 67 Replace "X" with the version number of the latest kernel.
72 68
@@ -75,16 +71,12 @@ INSTALLING the kernel source:
75 files. They should match the library, and not get messed up by 71 files. They should match the library, and not get messed up by
76 whatever the kernel-du-jour happens to be. 72 whatever the kernel-du-jour happens to be.
77 73
78 - You can also upgrade between 3.x releases by patching. Patches are 74 - You can also upgrade between 4.x releases by patching. Patches are
79 distributed in the traditional gzip and the newer bzip2 format. To 75 distributed in the xz format. To install by patching, get all the
80 install by patching, get all the newer patch files, enter the 76 newer patch files, enter the top level directory of the kernel source
81 top level directory of the kernel source (linux-3.X) and execute: 77 (linux-4.X) and execute:
82
83 gzip -cd ../patch-3.x.gz | patch -p1
84
85 or
86 78
87 bzip2 -dc ../patch-3.x.bz2 | patch -p1 79 xz -cd ../patch-4.x.xz | patch -p1
88 80
89 Replace "x" for all versions bigger than the version "X" of your current 81 Replace "x" for all versions bigger than the version "X" of your current
90 source tree, _in_order_, and you should be ok. You may want to remove 82 source tree, _in_order_, and you should be ok. You may want to remove
@@ -92,13 +84,13 @@ INSTALLING the kernel source:
92 that there are no failed patches (some-file-name# or some-file-name.rej). 84 that there are no failed patches (some-file-name# or some-file-name.rej).
93 If there are, either you or I have made a mistake. 85 If there are, either you or I have made a mistake.
94 86
95 Unlike patches for the 3.x kernels, patches for the 3.x.y kernels 87 Unlike patches for the 4.x kernels, patches for the 4.x.y kernels
96 (also known as the -stable kernels) are not incremental but instead apply 88 (also known as the -stable kernels) are not incremental but instead apply
97 directly to the base 3.x kernel. For example, if your base kernel is 3.0 89 directly to the base 4.x kernel. For example, if your base kernel is 4.0
98 and you want to apply the 3.0.3 patch, you must not first apply the 3.0.1 90 and you want to apply the 4.0.3 patch, you must not first apply the 4.0.1
99 and 3.0.2 patches. Similarly, if you are running kernel version 3.0.2 and 91 and 4.0.2 patches. Similarly, if you are running kernel version 4.0.2 and
100 want to jump to 3.0.3, you must first reverse the 3.0.2 patch (that is, 92 want to jump to 4.0.3, you must first reverse the 4.0.2 patch (that is,
101 patch -R) _before_ applying the 3.0.3 patch. You can read more on this in 93 patch -R) _before_ applying the 4.0.3 patch. You can read more on this in
102 Documentation/applying-patches.txt 94 Documentation/applying-patches.txt
103 95
104 Alternatively, the script patch-kernel can be used to automate this 96 Alternatively, the script patch-kernel can be used to automate this
@@ -120,7 +112,7 @@ INSTALLING the kernel source:
120 112
121SOFTWARE REQUIREMENTS 113SOFTWARE REQUIREMENTS
122 114
123 Compiling and running the 3.x kernels requires up-to-date 115 Compiling and running the 4.x kernels requires up-to-date
124 versions of various software packages. Consult 116 versions of various software packages. Consult
125 Documentation/Changes for the minimum version numbers required 117 Documentation/Changes for the minimum version numbers required
126 and how to get updates for these packages. Beware that using 118 and how to get updates for these packages. Beware that using
@@ -137,12 +129,12 @@ BUILD directory for the kernel:
137 place for the output files (including .config). 129 place for the output files (including .config).
138 Example: 130 Example:
139 131
140 kernel source code: /usr/src/linux-3.X 132 kernel source code: /usr/src/linux-4.X
141 build directory: /home/name/build/kernel 133 build directory: /home/name/build/kernel
142 134
143 To configure and build the kernel, use: 135 To configure and build the kernel, use:
144 136
145 cd /usr/src/linux-3.X 137 cd /usr/src/linux-4.X
146 make O=/home/name/build/kernel menuconfig 138 make O=/home/name/build/kernel menuconfig
147 make O=/home/name/build/kernel 139 make O=/home/name/build/kernel
148 sudo make O=/home/name/build/kernel modules_install install 140 sudo make O=/home/name/build/kernel modules_install install
diff --git a/include/linux/hsi/hsi.h b/include/linux/hsi/hsi.h
index 3ec06300d535..5dd60c2e120f 100644
--- a/include/linux/hsi/hsi.h
+++ b/include/linux/hsi/hsi.h
@@ -135,9 +135,9 @@ static inline int hsi_register_board_info(struct hsi_board_info const *info,
135 * @device: Driver model representation of the device 135 * @device: Driver model representation of the device
136 * @tx_cfg: HSI TX configuration 136 * @tx_cfg: HSI TX configuration
137 * @rx_cfg: HSI RX configuration 137 * @rx_cfg: HSI RX configuration
138 * e_handler: Callback for handling port events (RX Wake High/Low) 138 * @e_handler: Callback for handling port events (RX Wake High/Low)
139 * pclaimed: Keeps tracks if the clients claimed its associated HSI port 139 * @pclaimed: Keeps tracks if the clients claimed its associated HSI port
140 * nb: Notifier block for port events 140 * @nb: Notifier block for port events
141 */ 141 */
142struct hsi_client { 142struct hsi_client {
143 struct device device; 143 struct device device;
diff --git a/init/Kconfig b/init/Kconfig
index 3b9df1aa35db..dc24dec60232 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1047,12 +1047,6 @@ config MEMCG_KMEM
1047 the kmem extension can use it to guarantee that no group of processes 1047 the kmem extension can use it to guarantee that no group of processes
1048 will ever exhaust kernel resources alone. 1048 will ever exhaust kernel resources alone.
1049 1049
1050 WARNING: Current implementation lacks reclaim support. That means
1051 allocation attempts will fail when close to the limit even if there
1052 are plenty of kmem available for reclaim. That makes this option
1053 unusable in real life so DO NOT SELECT IT unless for development
1054 purposes.
1055
1056config CGROUP_HUGETLB 1050config CGROUP_HUGETLB
1057 bool "HugeTLB Resource Controller for Control Groups" 1051 bool "HugeTLB Resource Controller for Control Groups"
1058 depends on HUGETLB_PAGE 1052 depends on HUGETLB_PAGE