diff options
Diffstat (limited to 'Documentation')
26 files changed, 1017 insertions, 57 deletions
diff --git a/Documentation/ABI/testing/sysfs-class-bdi b/Documentation/ABI/testing/sysfs-class-bdi new file mode 100644 index 000000000000..5ac1e01bbd48 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-bdi | |||
@@ -0,0 +1,46 @@ | |||
1 | What: /sys/class/bdi/<bdi>/ | ||
2 | Date: January 2008 | ||
3 | Contact: Peter Zijlstra <a.p.zijlstra@chello.nl> | ||
4 | Description: | ||
5 | |||
6 | Provide a place in sysfs for the backing_dev_info object. This allows | ||
7 | setting and retrieving various BDI specific variables. | ||
8 | |||
9 | The <bdi> identifier can be either of the following: | ||
10 | |||
11 | MAJOR:MINOR | ||
12 | |||
13 | Device number for block devices, or value of st_dev on | ||
14 | non-block filesystems which provide their own BDI, such as NFS | ||
15 | and FUSE. | ||
16 | |||
17 | default | ||
18 | |||
19 | The default backing dev, used for non-block device backed | ||
20 | filesystems which do not provide their own BDI. | ||
21 | |||
22 | Files under /sys/class/bdi/<bdi>/ | ||
23 | --------------------------------- | ||
24 | |||
25 | read_ahead_kb (read-write) | ||
26 | |||
27 | Size of the read-ahead window in kilobytes | ||
28 | |||
29 | min_ratio (read-write) | ||
30 | |||
31 | Under normal circumstances each device is given a part of the | ||
32 | total write-back cache that relates to its current average | ||
33 | writeout speed in relation to the other devices. | ||
34 | |||
35 | The 'min_ratio' parameter allows assigning a minimum | ||
36 | percentage of the write-back cache to a particular device. | ||
37 | For example, this is useful for providing a minimum QoS. | ||
38 | |||
39 | max_ratio (read-write) | ||
40 | |||
41 | Allows limiting a particular device to use not more than the | ||
42 | given percentage of the write-back cache. This is useful in | ||
43 | situations where we want to avoid one device taking all or | ||
44 | most of the write-back cache. For example in case of an NFS | ||
45 | mount that is prone to get stuck, or a FUSE mount which cannot | ||
46 | be trusted to play fair. | ||
diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt index b939ebb62871..80d150458c80 100644 --- a/Documentation/DMA-API.txt +++ b/Documentation/DMA-API.txt | |||
@@ -145,7 +145,7 @@ Part Ic - DMA addressing limitations | |||
145 | int | 145 | int |
146 | dma_supported(struct device *dev, u64 mask) | 146 | dma_supported(struct device *dev, u64 mask) |
147 | int | 147 | int |
148 | pci_dma_supported(struct device *dev, u64 mask) | 148 | pci_dma_supported(struct pci_dev *hwdev, u64 mask) |
149 | 149 | ||
150 | Checks to see if the device can support DMA to the memory described by | 150 | Checks to see if the device can support DMA to the memory described by |
151 | mask. | 151 | mask. |
@@ -189,7 +189,7 @@ dma_addr_t | |||
189 | dma_map_single(struct device *dev, void *cpu_addr, size_t size, | 189 | dma_map_single(struct device *dev, void *cpu_addr, size_t size, |
190 | enum dma_data_direction direction) | 190 | enum dma_data_direction direction) |
191 | dma_addr_t | 191 | dma_addr_t |
192 | pci_map_single(struct device *dev, void *cpu_addr, size_t size, | 192 | pci_map_single(struct pci_dev *hwdev, void *cpu_addr, size_t size, |
193 | int direction) | 193 | int direction) |
194 | 194 | ||
195 | Maps a piece of processor virtual memory so it can be accessed by the | 195 | Maps a piece of processor virtual memory so it can be accessed by the |
@@ -395,6 +395,71 @@ Notes: You must do this: | |||
395 | 395 | ||
396 | See also dma_map_single(). | 396 | See also dma_map_single(). |
397 | 397 | ||
398 | dma_addr_t | ||
399 | dma_map_single_attrs(struct device *dev, void *cpu_addr, size_t size, | ||
400 | enum dma_data_direction dir, | ||
401 | struct dma_attrs *attrs) | ||
402 | |||
403 | void | ||
404 | dma_unmap_single_attrs(struct device *dev, dma_addr_t dma_addr, | ||
405 | size_t size, enum dma_data_direction dir, | ||
406 | struct dma_attrs *attrs) | ||
407 | |||
408 | int | ||
409 | dma_map_sg_attrs(struct device *dev, struct scatterlist *sgl, | ||
410 | int nents, enum dma_data_direction dir, | ||
411 | struct dma_attrs *attrs) | ||
412 | |||
413 | void | ||
414 | dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sgl, | ||
415 | int nents, enum dma_data_direction dir, | ||
416 | struct dma_attrs *attrs) | ||
417 | |||
418 | The four functions above are just like the counterpart functions | ||
419 | without the _attrs suffixes, except that they pass an optional | ||
420 | struct dma_attrs*. | ||
421 | |||
422 | struct dma_attrs encapsulates a set of "dma attributes". For the | ||
423 | definition of struct dma_attrs see linux/dma-attrs.h. | ||
424 | |||
425 | The interpretation of dma attributes is architecture-specific, and | ||
426 | each attribute should be documented in Documentation/DMA-attributes.txt. | ||
427 | |||
428 | If struct dma_attrs* is NULL, the semantics of each of these | ||
429 | functions is identical to those of the corresponding function | ||
430 | without the _attrs suffix. As a result dma_map_single_attrs() | ||
431 | can generally replace dma_map_single(), etc. | ||
432 | |||
433 | As an example of the use of the *_attrs functions, here's how | ||
434 | you could pass an attribute DMA_ATTR_FOO when mapping memory | ||
435 | for DMA: | ||
436 | |||
437 | #include <linux/dma-attrs.h> | ||
438 | /* DMA_ATTR_FOO should be defined in linux/dma-attrs.h and | ||
439 | * documented in Documentation/DMA-attributes.txt */ | ||
440 | ... | ||
441 | |||
442 | DEFINE_DMA_ATTRS(attrs); | ||
443 | dma_set_attr(DMA_ATTR_FOO, &attrs); | ||
444 | .... | ||
445 | n = dma_map_sg_attrs(dev, sg, nents, DMA_TO_DEVICE, &attr); | ||
446 | .... | ||
447 | |||
448 | Architectures that care about DMA_ATTR_FOO would check for its | ||
449 | presence in their implementations of the mapping and unmapping | ||
450 | routines, e.g.: | ||
451 | |||
452 | void whizco_dma_map_sg_attrs(struct device *dev, dma_addr_t dma_addr, | ||
453 | size_t size, enum dma_data_direction dir, | ||
454 | struct dma_attrs *attrs) | ||
455 | { | ||
456 | .... | ||
457 | int foo = dma_get_attr(DMA_ATTR_FOO, attrs); | ||
458 | .... | ||
459 | if (foo) | ||
460 | /* twizzle the frobnozzle */ | ||
461 | .... | ||
462 | |||
398 | 463 | ||
399 | Part II - Advanced dma_ usage | 464 | Part II - Advanced dma_ usage |
400 | ----------------------------- | 465 | ----------------------------- |
diff --git a/Documentation/DMA-attributes.txt b/Documentation/DMA-attributes.txt new file mode 100644 index 000000000000..6d772f84b477 --- /dev/null +++ b/Documentation/DMA-attributes.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | DMA attributes | ||
2 | ============== | ||
3 | |||
4 | This document describes the semantics of the DMA attributes that are | ||
5 | defined in linux/dma-attrs.h. | ||
6 | |||
7 | DMA_ATTR_WRITE_BARRIER | ||
8 | ---------------------- | ||
9 | |||
10 | DMA_ATTR_WRITE_BARRIER is a (write) barrier attribute for DMA. DMA | ||
11 | to a memory region with the DMA_ATTR_WRITE_BARRIER attribute forces | ||
12 | all pending DMA writes to complete, and thus provides a mechanism to | ||
13 | strictly order DMA from a device across all intervening busses and | ||
14 | bridges. This barrier is not specific to a particular type of | ||
15 | interconnect, it applies to the system as a whole, and so its | ||
16 | implementation must account for the idiosyncracies of the system all | ||
17 | the way from the DMA device to memory. | ||
18 | |||
19 | As an example of a situation where DMA_ATTR_WRITE_BARRIER would be | ||
20 | useful, suppose that a device does a DMA write to indicate that data is | ||
21 | ready and available in memory. The DMA of the "completion indication" | ||
22 | could race with data DMA. Mapping the memory used for completion | ||
23 | indications with DMA_ATTR_WRITE_BARRIER would prevent the race. | ||
24 | |||
diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt index d84f89dbf921..b463ecd0c7ce 100644 --- a/Documentation/DMA-mapping.txt +++ b/Documentation/DMA-mapping.txt | |||
@@ -315,11 +315,11 @@ you should do: | |||
315 | 315 | ||
316 | dma_addr_t dma_handle; | 316 | dma_addr_t dma_handle; |
317 | 317 | ||
318 | cpu_addr = pci_alloc_consistent(dev, size, &dma_handle); | 318 | cpu_addr = pci_alloc_consistent(pdev, size, &dma_handle); |
319 | 319 | ||
320 | where dev is a struct pci_dev *. You should pass NULL for PCI like buses | 320 | where pdev is a struct pci_dev *. This may be called in interrupt context. |
321 | where devices don't have struct pci_dev (like ISA, EISA). This may be | 321 | You should use dma_alloc_coherent (see DMA-API.txt) for buses |
322 | called in interrupt context. | 322 | where devices don't have struct pci_dev (like ISA, EISA). |
323 | 323 | ||
324 | This argument is needed because the DMA translations may be bus | 324 | This argument is needed because the DMA translations may be bus |
325 | specific (and often is private to the bus which the device is attached | 325 | specific (and often is private to the bus which the device is attached |
@@ -332,7 +332,7 @@ __get_free_pages (but takes size instead of a page order). If your | |||
332 | driver needs regions sized smaller than a page, you may prefer using | 332 | driver needs regions sized smaller than a page, you may prefer using |
333 | the pci_pool interface, described below. | 333 | the pci_pool interface, described below. |
334 | 334 | ||
335 | The consistent DMA mapping interfaces, for non-NULL dev, will by | 335 | The consistent DMA mapping interfaces, for non-NULL pdev, will by |
336 | default return a DMA address which is SAC (Single Address Cycle) | 336 | default return a DMA address which is SAC (Single Address Cycle) |
337 | addressable. Even if the device indicates (via PCI dma mask) that it | 337 | addressable. Even if the device indicates (via PCI dma mask) that it |
338 | may address the upper 32-bits and thus perform DAC cycles, consistent | 338 | may address the upper 32-bits and thus perform DAC cycles, consistent |
@@ -354,9 +354,9 @@ buffer you receive will not cross a 64K boundary. | |||
354 | 354 | ||
355 | To unmap and free such a DMA region, you call: | 355 | To unmap and free such a DMA region, you call: |
356 | 356 | ||
357 | pci_free_consistent(dev, size, cpu_addr, dma_handle); | 357 | pci_free_consistent(pdev, size, cpu_addr, dma_handle); |
358 | 358 | ||
359 | where dev, size are the same as in the above call and cpu_addr and | 359 | where pdev, size are the same as in the above call and cpu_addr and |
360 | dma_handle are the values pci_alloc_consistent returned to you. | 360 | dma_handle are the values pci_alloc_consistent returned to you. |
361 | This function may not be called in interrupt context. | 361 | This function may not be called in interrupt context. |
362 | 362 | ||
@@ -371,9 +371,9 @@ Create a pci_pool like this: | |||
371 | 371 | ||
372 | struct pci_pool *pool; | 372 | struct pci_pool *pool; |
373 | 373 | ||
374 | pool = pci_pool_create(name, dev, size, align, alloc); | 374 | pool = pci_pool_create(name, pdev, size, align, alloc); |
375 | 375 | ||
376 | The "name" is for diagnostics (like a kmem_cache name); dev and size | 376 | The "name" is for diagnostics (like a kmem_cache name); pdev and size |
377 | are as above. The device's hardware alignment requirement for this | 377 | are as above. The device's hardware alignment requirement for this |
378 | type of data is "align" (which is expressed in bytes, and must be a | 378 | type of data is "align" (which is expressed in bytes, and must be a |
379 | power of two). If your device has no boundary crossing restrictions, | 379 | power of two). If your device has no boundary crossing restrictions, |
@@ -472,11 +472,11 @@ To map a single region, you do: | |||
472 | void *addr = buffer->ptr; | 472 | void *addr = buffer->ptr; |
473 | size_t size = buffer->len; | 473 | size_t size = buffer->len; |
474 | 474 | ||
475 | dma_handle = pci_map_single(dev, addr, size, direction); | 475 | dma_handle = pci_map_single(pdev, addr, size, direction); |
476 | 476 | ||
477 | and to unmap it: | 477 | and to unmap it: |
478 | 478 | ||
479 | pci_unmap_single(dev, dma_handle, size, direction); | 479 | pci_unmap_single(pdev, dma_handle, size, direction); |
480 | 480 | ||
481 | You should call pci_unmap_single when the DMA activity is finished, e.g. | 481 | You should call pci_unmap_single when the DMA activity is finished, e.g. |
482 | from the interrupt which told you that the DMA transfer is done. | 482 | from the interrupt which told you that the DMA transfer is done. |
@@ -493,17 +493,17 @@ Specifically: | |||
493 | unsigned long offset = buffer->offset; | 493 | unsigned long offset = buffer->offset; |
494 | size_t size = buffer->len; | 494 | size_t size = buffer->len; |
495 | 495 | ||
496 | dma_handle = pci_map_page(dev, page, offset, size, direction); | 496 | dma_handle = pci_map_page(pdev, page, offset, size, direction); |
497 | 497 | ||
498 | ... | 498 | ... |
499 | 499 | ||
500 | pci_unmap_page(dev, dma_handle, size, direction); | 500 | pci_unmap_page(pdev, dma_handle, size, direction); |
501 | 501 | ||
502 | Here, "offset" means byte offset within the given page. | 502 | Here, "offset" means byte offset within the given page. |
503 | 503 | ||
504 | With scatterlists, you map a region gathered from several regions by: | 504 | With scatterlists, you map a region gathered from several regions by: |
505 | 505 | ||
506 | int i, count = pci_map_sg(dev, sglist, nents, direction); | 506 | int i, count = pci_map_sg(pdev, sglist, nents, direction); |
507 | struct scatterlist *sg; | 507 | struct scatterlist *sg; |
508 | 508 | ||
509 | for_each_sg(sglist, sg, count, i) { | 509 | for_each_sg(sglist, sg, count, i) { |
@@ -527,7 +527,7 @@ accessed sg->address and sg->length as shown above. | |||
527 | 527 | ||
528 | To unmap a scatterlist, just call: | 528 | To unmap a scatterlist, just call: |
529 | 529 | ||
530 | pci_unmap_sg(dev, sglist, nents, direction); | 530 | pci_unmap_sg(pdev, sglist, nents, direction); |
531 | 531 | ||
532 | Again, make sure DMA activity has already finished. | 532 | Again, make sure DMA activity has already finished. |
533 | 533 | ||
@@ -550,11 +550,11 @@ correct copy of the DMA buffer. | |||
550 | So, firstly, just map it with pci_map_{single,sg}, and after each DMA | 550 | So, firstly, just map it with pci_map_{single,sg}, and after each DMA |
551 | transfer call either: | 551 | transfer call either: |
552 | 552 | ||
553 | pci_dma_sync_single_for_cpu(dev, dma_handle, size, direction); | 553 | pci_dma_sync_single_for_cpu(pdev, dma_handle, size, direction); |
554 | 554 | ||
555 | or: | 555 | or: |
556 | 556 | ||
557 | pci_dma_sync_sg_for_cpu(dev, sglist, nents, direction); | 557 | pci_dma_sync_sg_for_cpu(pdev, sglist, nents, direction); |
558 | 558 | ||
559 | as appropriate. | 559 | as appropriate. |
560 | 560 | ||
@@ -562,7 +562,7 @@ Then, if you wish to let the device get at the DMA area again, | |||
562 | finish accessing the data with the cpu, and then before actually | 562 | finish accessing the data with the cpu, and then before actually |
563 | giving the buffer to the hardware call either: | 563 | giving the buffer to the hardware call either: |
564 | 564 | ||
565 | pci_dma_sync_single_for_device(dev, dma_handle, size, direction); | 565 | pci_dma_sync_single_for_device(pdev, dma_handle, size, direction); |
566 | 566 | ||
567 | or: | 567 | or: |
568 | 568 | ||
@@ -739,7 +739,7 @@ failure can be determined by: | |||
739 | 739 | ||
740 | dma_addr_t dma_handle; | 740 | dma_addr_t dma_handle; |
741 | 741 | ||
742 | dma_handle = pci_map_single(dev, addr, size, direction); | 742 | dma_handle = pci_map_single(pdev, addr, size, direction); |
743 | if (pci_dma_mapping_error(dma_handle)) { | 743 | if (pci_dma_mapping_error(dma_handle)) { |
744 | /* | 744 | /* |
745 | * reduce current DMA mapping usage, | 745 | * reduce current DMA mapping usage, |
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 83966e94cc32..0eb0d027eb32 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -12,7 +12,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ | |||
12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ | 12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ |
13 | gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ | 13 | gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ |
14 | genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ | 14 | genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ |
15 | mac80211.xml | 15 | mac80211.xml debugobjects.xml |
16 | 16 | ||
17 | ### | 17 | ### |
18 | # The build process is as follows (targets): | 18 | # The build process is as follows (targets): |
diff --git a/Documentation/DocBook/debugobjects.tmpl b/Documentation/DocBook/debugobjects.tmpl new file mode 100644 index 000000000000..7f5f218015fe --- /dev/null +++ b/Documentation/DocBook/debugobjects.tmpl | |||
@@ -0,0 +1,391 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||
4 | |||
5 | <book id="debug-objects-guide"> | ||
6 | <bookinfo> | ||
7 | <title>Debug objects life time</title> | ||
8 | |||
9 | <authorgroup> | ||
10 | <author> | ||
11 | <firstname>Thomas</firstname> | ||
12 | <surname>Gleixner</surname> | ||
13 | <affiliation> | ||
14 | <address> | ||
15 | <email>tglx@linutronix.de</email> | ||
16 | </address> | ||
17 | </affiliation> | ||
18 | </author> | ||
19 | </authorgroup> | ||
20 | |||
21 | <copyright> | ||
22 | <year>2008</year> | ||
23 | <holder>Thomas Gleixner</holder> | ||
24 | </copyright> | ||
25 | |||
26 | <legalnotice> | ||
27 | <para> | ||
28 | This documentation is free software; you can redistribute | ||
29 | it and/or modify it under the terms of the GNU General Public | ||
30 | License version 2 as published by the Free Software Foundation. | ||
31 | </para> | ||
32 | |||
33 | <para> | ||
34 | This program is distributed in the hope that it will be | ||
35 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
36 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
37 | See the GNU General Public License for more details. | ||
38 | </para> | ||
39 | |||
40 | <para> | ||
41 | You should have received a copy of the GNU General Public | ||
42 | License along with this program; if not, write to the Free | ||
43 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
44 | MA 02111-1307 USA | ||
45 | </para> | ||
46 | |||
47 | <para> | ||
48 | For more details see the file COPYING in the source | ||
49 | distribution of Linux. | ||
50 | </para> | ||
51 | </legalnotice> | ||
52 | </bookinfo> | ||
53 | |||
54 | <toc></toc> | ||
55 | |||
56 | <chapter id="intro"> | ||
57 | <title>Introduction</title> | ||
58 | <para> | ||
59 | debugobjects is a generic infrastructure to track the life time | ||
60 | of kernel objects and validate the operations on those. | ||
61 | </para> | ||
62 | <para> | ||
63 | debugobjects is useful to check for the following error patterns: | ||
64 | <itemizedlist> | ||
65 | <listitem><para>Activation of uninitialized objects</para></listitem> | ||
66 | <listitem><para>Initialization of active objects</para></listitem> | ||
67 | <listitem><para>Usage of freed/destroyed objects</para></listitem> | ||
68 | </itemizedlist> | ||
69 | </para> | ||
70 | <para> | ||
71 | debugobjects is not changing the data structure of the real | ||
72 | object so it can be compiled in with a minimal runtime impact | ||
73 | and enabled on demand with a kernel command line option. | ||
74 | </para> | ||
75 | </chapter> | ||
76 | |||
77 | <chapter id="howto"> | ||
78 | <title>Howto use debugobjects</title> | ||
79 | <para> | ||
80 | A kernel subsystem needs to provide a data structure which | ||
81 | describes the object type and add calls into the debug code at | ||
82 | appropriate places. The data structure to describe the object | ||
83 | type needs at minimum the name of the object type. Optional | ||
84 | functions can and should be provided to fixup detected problems | ||
85 | so the kernel can continue to work and the debug information can | ||
86 | be retrieved from a live system instead of hard core debugging | ||
87 | with serial consoles and stack trace transcripts from the | ||
88 | monitor. | ||
89 | </para> | ||
90 | <para> | ||
91 | The debug calls provided by debugobjects are: | ||
92 | <itemizedlist> | ||
93 | <listitem><para>debug_object_init</para></listitem> | ||
94 | <listitem><para>debug_object_init_on_stack</para></listitem> | ||
95 | <listitem><para>debug_object_activate</para></listitem> | ||
96 | <listitem><para>debug_object_deactivate</para></listitem> | ||
97 | <listitem><para>debug_object_destroy</para></listitem> | ||
98 | <listitem><para>debug_object_free</para></listitem> | ||
99 | </itemizedlist> | ||
100 | Each of these functions takes the address of the real object and | ||
101 | a pointer to the object type specific debug description | ||
102 | structure. | ||
103 | </para> | ||
104 | <para> | ||
105 | Each detected error is reported in the statistics and a limited | ||
106 | number of errors are printk'ed including a full stack trace. | ||
107 | </para> | ||
108 | <para> | ||
109 | The statistics are available via debugfs/debug_objects/stats. | ||
110 | They provide information about the number of warnings and the | ||
111 | number of successful fixups along with information about the | ||
112 | usage of the internal tracking objects and the state of the | ||
113 | internal tracking objects pool. | ||
114 | </para> | ||
115 | </chapter> | ||
116 | <chapter id="debugfunctions"> | ||
117 | <title>Debug functions</title> | ||
118 | <sect1 id="prototypes"> | ||
119 | <title>Debug object function reference</title> | ||
120 | !Elib/debugobjects.c | ||
121 | </sect1> | ||
122 | <sect1 id="debug_object_init"> | ||
123 | <title>debug_object_init</title> | ||
124 | <para> | ||
125 | This function is called whenever the initialization function | ||
126 | of a real object is called. | ||
127 | </para> | ||
128 | <para> | ||
129 | When the real object is already tracked by debugobjects it is | ||
130 | checked, whether the object can be initialized. Initializing | ||
131 | is not allowed for active and destroyed objects. When | ||
132 | debugobjects detects an error, then it calls the fixup_init | ||
133 | function of the object type description structure if provided | ||
134 | by the caller. The fixup function can correct the problem | ||
135 | before the real initialization of the object happens. E.g. it | ||
136 | can deactivate an active object in order to prevent damage to | ||
137 | the subsystem. | ||
138 | </para> | ||
139 | <para> | ||
140 | When the real object is not yet tracked by debugobjects, | ||
141 | debugobjects allocates a tracker object for the real object | ||
142 | and sets the tracker object state to ODEBUG_STATE_INIT. It | ||
143 | verifies that the object is not on the callers stack. If it is | ||
144 | on the callers stack then a limited number of warnings | ||
145 | including a full stack trace is printk'ed. The calling code | ||
146 | must use debug_object_init_on_stack() and remove the object | ||
147 | before leaving the function which allocated it. See next | ||
148 | section. | ||
149 | </para> | ||
150 | </sect1> | ||
151 | |||
152 | <sect1 id="debug_object_init_on_stack"> | ||
153 | <title>debug_object_init_on_stack</title> | ||
154 | <para> | ||
155 | This function is called whenever the initialization function | ||
156 | of a real object which resides on the stack is called. | ||
157 | </para> | ||
158 | <para> | ||
159 | When the real object is already tracked by debugobjects it is | ||
160 | checked, whether the object can be initialized. Initializing | ||
161 | is not allowed for active and destroyed objects. When | ||
162 | debugobjects detects an error, then it calls the fixup_init | ||
163 | function of the object type description structure if provided | ||
164 | by the caller. The fixup function can correct the problem | ||
165 | before the real initialization of the object happens. E.g. it | ||
166 | can deactivate an active object in order to prevent damage to | ||
167 | the subsystem. | ||
168 | </para> | ||
169 | <para> | ||
170 | When the real object is not yet tracked by debugobjects | ||
171 | debugobjects allocates a tracker object for the real object | ||
172 | and sets the tracker object state to ODEBUG_STATE_INIT. It | ||
173 | verifies that the object is on the callers stack. | ||
174 | </para> | ||
175 | <para> | ||
176 | An object which is on the stack must be removed from the | ||
177 | tracker by calling debug_object_free() before the function | ||
178 | which allocates the object returns. Otherwise we keep track of | ||
179 | stale objects. | ||
180 | </para> | ||
181 | </sect1> | ||
182 | |||
183 | <sect1 id="debug_object_activate"> | ||
184 | <title>debug_object_activate</title> | ||
185 | <para> | ||
186 | This function is called whenever the activation function of a | ||
187 | real object is called. | ||
188 | </para> | ||
189 | <para> | ||
190 | When the real object is already tracked by debugobjects it is | ||
191 | checked, whether the object can be activated. Activating is | ||
192 | not allowed for active and destroyed objects. When | ||
193 | debugobjects detects an error, then it calls the | ||
194 | fixup_activate function of the object type description | ||
195 | structure if provided by the caller. The fixup function can | ||
196 | correct the problem before the real activation of the object | ||
197 | happens. E.g. it can deactivate an active object in order to | ||
198 | prevent damage to the subsystem. | ||
199 | </para> | ||
200 | <para> | ||
201 | When the real object is not yet tracked by debugobjects then | ||
202 | the fixup_activate function is called if available. This is | ||
203 | necessary to allow the legitimate activation of statically | ||
204 | allocated and initialized objects. The fixup function checks | ||
205 | whether the object is valid and calls the debug_objects_init() | ||
206 | function to initialize the tracking of this object. | ||
207 | </para> | ||
208 | <para> | ||
209 | When the activation is legitimate, then the state of the | ||
210 | associated tracker object is set to ODEBUG_STATE_ACTIVE. | ||
211 | </para> | ||
212 | </sect1> | ||
213 | |||
214 | <sect1 id="debug_object_deactivate"> | ||
215 | <title>debug_object_deactivate</title> | ||
216 | <para> | ||
217 | This function is called whenever the deactivation function of | ||
218 | a real object is called. | ||
219 | </para> | ||
220 | <para> | ||
221 | When the real object is tracked by debugobjects it is checked, | ||
222 | whether the object can be deactivated. Deactivating is not | ||
223 | allowed for untracked or destroyed objects. | ||
224 | </para> | ||
225 | <para> | ||
226 | When the deactivation is legitimate, then the state of the | ||
227 | associated tracker object is set to ODEBUG_STATE_INACTIVE. | ||
228 | </para> | ||
229 | </sect1> | ||
230 | |||
231 | <sect1 id="debug_object_destroy"> | ||
232 | <title>debug_object_destroy</title> | ||
233 | <para> | ||
234 | This function is called to mark an object destroyed. This is | ||
235 | useful to prevent the usage of invalid objects, which are | ||
236 | still available in memory: either statically allocated objects | ||
237 | or objects which are freed later. | ||
238 | </para> | ||
239 | <para> | ||
240 | When the real object is tracked by debugobjects it is checked, | ||
241 | whether the object can be destroyed. Destruction is not | ||
242 | allowed for active and destroyed objects. When debugobjects | ||
243 | detects an error, then it calls the fixup_destroy function of | ||
244 | the object type description structure if provided by the | ||
245 | caller. The fixup function can correct the problem before the | ||
246 | real destruction of the object happens. E.g. it can deactivate | ||
247 | an active object in order to prevent damage to the subsystem. | ||
248 | </para> | ||
249 | <para> | ||
250 | When the destruction is legitimate, then the state of the | ||
251 | associated tracker object is set to ODEBUG_STATE_DESTROYED. | ||
252 | </para> | ||
253 | </sect1> | ||
254 | |||
255 | <sect1 id="debug_object_free"> | ||
256 | <title>debug_object_free</title> | ||
257 | <para> | ||
258 | This function is called before an object is freed. | ||
259 | </para> | ||
260 | <para> | ||
261 | When the real object is tracked by debugobjects it is checked, | ||
262 | whether the object can be freed. Free is not allowed for | ||
263 | active objects. When debugobjects detects an error, then it | ||
264 | calls the fixup_free function of the object type description | ||
265 | structure if provided by the caller. The fixup function can | ||
266 | correct the problem before the real free of the object | ||
267 | happens. E.g. it can deactivate an active object in order to | ||
268 | prevent damage to the subsystem. | ||
269 | </para> | ||
270 | <para> | ||
271 | Note that debug_object_free removes the object from the | ||
272 | tracker. Later usage of the object is detected by the other | ||
273 | debug checks. | ||
274 | </para> | ||
275 | </sect1> | ||
276 | </chapter> | ||
277 | <chapter id="fixupfunctions"> | ||
278 | <title>Fixup functions</title> | ||
279 | <sect1 id="debug_obj_descr"> | ||
280 | <title>Debug object type description structure</title> | ||
281 | !Iinclude/linux/debugobjects.h | ||
282 | </sect1> | ||
283 | <sect1 id="fixup_init"> | ||
284 | <title>fixup_init</title> | ||
285 | <para> | ||
286 | This function is called from the debug code whenever a problem | ||
287 | in debug_object_init is detected. The function takes the | ||
288 | address of the object and the state which is currently | ||
289 | recorded in the tracker. | ||
290 | </para> | ||
291 | <para> | ||
292 | Called from debug_object_init when the object state is: | ||
293 | <itemizedlist> | ||
294 | <listitem><para>ODEBUG_STATE_ACTIVE</para></listitem> | ||
295 | </itemizedlist> | ||
296 | </para> | ||
297 | <para> | ||
298 | The function returns 1 when the fixup was successful, | ||
299 | otherwise 0. The return value is used to update the | ||
300 | statistics. | ||
301 | </para> | ||
302 | <para> | ||
303 | Note, that the function needs to call the debug_object_init() | ||
304 | function again, after the damage has been repaired in order to | ||
305 | keep the state consistent. | ||
306 | </para> | ||
307 | </sect1> | ||
308 | |||
309 | <sect1 id="fixup_activate"> | ||
310 | <title>fixup_activate</title> | ||
311 | <para> | ||
312 | This function is called from the debug code whenever a problem | ||
313 | in debug_object_activate is detected. | ||
314 | </para> | ||
315 | <para> | ||
316 | Called from debug_object_activate when the object state is: | ||
317 | <itemizedlist> | ||
318 | <listitem><para>ODEBUG_STATE_NOTAVAILABLE</para></listitem> | ||
319 | <listitem><para>ODEBUG_STATE_ACTIVE</para></listitem> | ||
320 | </itemizedlist> | ||
321 | </para> | ||
322 | <para> | ||
323 | The function returns 1 when the fixup was successful, | ||
324 | otherwise 0. The return value is used to update the | ||
325 | statistics. | ||
326 | </para> | ||
327 | <para> | ||
328 | Note that the function needs to call the debug_object_activate() | ||
329 | function again after the damage has been repaired in order to | ||
330 | keep the state consistent. | ||
331 | </para> | ||
332 | <para> | ||
333 | The activation of statically initialized objects is a special | ||
334 | case. When debug_object_activate() has no tracked object for | ||
335 | this object address then fixup_activate() is called with | ||
336 | object state ODEBUG_STATE_NOTAVAILABLE. The fixup function | ||
337 | needs to check whether this is a legitimate case of a | ||
338 | statically initialized object or not. In case it is it calls | ||
339 | debug_object_init() and debug_object_activate() to make the | ||
340 | object known to the tracker and marked active. In this case | ||
341 | the function should return 0 because this is not a real fixup. | ||
342 | </para> | ||
343 | </sect1> | ||
344 | |||
345 | <sect1 id="fixup_destroy"> | ||
346 | <title>fixup_destroy</title> | ||
347 | <para> | ||
348 | This function is called from the debug code whenever a problem | ||
349 | in debug_object_destroy is detected. | ||
350 | </para> | ||
351 | <para> | ||
352 | Called from debug_object_destroy when the object state is: | ||
353 | <itemizedlist> | ||
354 | <listitem><para>ODEBUG_STATE_ACTIVE</para></listitem> | ||
355 | </itemizedlist> | ||
356 | </para> | ||
357 | <para> | ||
358 | The function returns 1 when the fixup was successful, | ||
359 | otherwise 0. The return value is used to update the | ||
360 | statistics. | ||
361 | </para> | ||
362 | </sect1> | ||
363 | <sect1 id="fixup_free"> | ||
364 | <title>fixup_free</title> | ||
365 | <para> | ||
366 | This function is called from the debug code whenever a problem | ||
367 | in debug_object_free is detected. Further it can be called | ||
368 | from the debug checks in kfree/vfree, when an active object is | ||
369 | detected from the debug_check_no_obj_freed() sanity checks. | ||
370 | </para> | ||
371 | <para> | ||
372 | Called from debug_object_free() or debug_check_no_obj_freed() | ||
373 | when the object state is: | ||
374 | <itemizedlist> | ||
375 | <listitem><para>ODEBUG_STATE_ACTIVE</para></listitem> | ||
376 | </itemizedlist> | ||
377 | </para> | ||
378 | <para> | ||
379 | The function returns 1 when the fixup was successful, | ||
380 | otherwise 0. The return value is used to update the | ||
381 | statistics. | ||
382 | </para> | ||
383 | </sect1> | ||
384 | </chapter> | ||
385 | <chapter id="bugs"> | ||
386 | <title>Known Bugs And Assumptions</title> | ||
387 | <para> | ||
388 | None (knock on wood). | ||
389 | </para> | ||
390 | </chapter> | ||
391 | </book> | ||
diff --git a/Documentation/DocBook/rapidio.tmpl b/Documentation/DocBook/rapidio.tmpl index b9e143e28c64..54eb26b57372 100644 --- a/Documentation/DocBook/rapidio.tmpl +++ b/Documentation/DocBook/rapidio.tmpl | |||
@@ -133,7 +133,6 @@ | |||
133 | !Idrivers/rapidio/rio-sysfs.c | 133 | !Idrivers/rapidio/rio-sysfs.c |
134 | </sect1> | 134 | </sect1> |
135 | <sect1 id="PPC32_support"><title>PPC32 support</title> | 135 | <sect1 id="PPC32_support"><title>PPC32 support</title> |
136 | !Iarch/powerpc/kernel/rio.c | ||
137 | !Earch/powerpc/sysdev/fsl_rio.c | 136 | !Earch/powerpc/sysdev/fsl_rio.c |
138 | !Iarch/powerpc/sysdev/fsl_rio.c | 137 | !Iarch/powerpc/sysdev/fsl_rio.c |
139 | </sect1> | 138 | </sect1> |
diff --git a/Documentation/braille-console.txt b/Documentation/braille-console.txt new file mode 100644 index 000000000000..000b0fbdc105 --- /dev/null +++ b/Documentation/braille-console.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | Linux Braille Console | ||
2 | |||
3 | To get early boot messages on a braille device (before userspace screen | ||
4 | readers can start), you first need to compile the support for the usual serial | ||
5 | console (see serial-console.txt), and for braille device (in Device Drivers - | ||
6 | Accessibility). | ||
7 | |||
8 | Then you need to specify a console=brl, option on the kernel command line, the | ||
9 | format is: | ||
10 | |||
11 | console=brl,serial_options... | ||
12 | |||
13 | where serial_options... are the same as described in serial-console.txt | ||
14 | |||
15 | So for instance you can use console=brl,ttyS0 if the braille device is connected | ||
16 | to the first serial port, and console=brl,ttyS0,115200 to override the baud rate | ||
17 | to 115200, etc. | ||
18 | |||
19 | By default, the braille device will just show the last kernel message (console | ||
20 | mode). To review previous messages, press the Insert key to switch to the VT | ||
21 | review mode. In review mode, the arrow keys permit to browse in the VT content, | ||
22 | page up/down keys go at the top/bottom of the screen, and the home key goes back | ||
23 | to the cursor, hence providing very basic screen reviewing facility. | ||
24 | |||
25 | Sound feedback can be obtained by adding the braille_console.sound=1 kernel | ||
26 | parameter. | ||
27 | |||
28 | For simplicity, only one braille console can be enabled, other uses of | ||
29 | console=brl,... will be discarded. Also note that it does not interfere with | ||
30 | the console selection mecanism described in serial-console.txt | ||
31 | |||
32 | For now, only the VisioBraille device is supported. | ||
33 | |||
34 | Samuel Thibault <samuel.thibault@ens-lyon.org> | ||
diff --git a/Documentation/cgroups.txt b/Documentation/cgroups.txt index 31d12e21ff8a..c298a6690e0d 100644 --- a/Documentation/cgroups.txt +++ b/Documentation/cgroups.txt | |||
@@ -500,8 +500,7 @@ post-attachment activity that requires memory allocations or blocking. | |||
500 | 500 | ||
501 | void fork(struct cgroup_subsy *ss, struct task_struct *task) | 501 | void fork(struct cgroup_subsy *ss, struct task_struct *task) |
502 | 502 | ||
503 | Called when a task is forked into a cgroup. Also called during | 503 | Called when a task is forked into a cgroup. |
504 | registration for all existing tasks. | ||
505 | 504 | ||
506 | void exit(struct cgroup_subsys *ss, struct task_struct *task) | 505 | void exit(struct cgroup_subsys *ss, struct task_struct *task) |
507 | 506 | ||
diff --git a/Documentation/controllers/devices.txt b/Documentation/controllers/devices.txt new file mode 100644 index 000000000000..4dcea42432c2 --- /dev/null +++ b/Documentation/controllers/devices.txt | |||
@@ -0,0 +1,48 @@ | |||
1 | Device Whitelist Controller | ||
2 | |||
3 | 1. Description: | ||
4 | |||
5 | Implement a cgroup to track and enforce open and mknod restrictions | ||
6 | on device files. A device cgroup associates a device access | ||
7 | whitelist with each cgroup. A whitelist entry has 4 fields. | ||
8 | 'type' is a (all), c (char), or b (block). 'all' means it applies | ||
9 | to all types and all major and minor numbers. Major and minor are | ||
10 | either an integer or * for all. Access is a composition of r | ||
11 | (read), w (write), and m (mknod). | ||
12 | |||
13 | The root device cgroup starts with rwm to 'all'. A child device | ||
14 | cgroup gets a copy of the parent. Administrators can then remove | ||
15 | devices from the whitelist or add new entries. A child cgroup can | ||
16 | never receive a device access which is denied its parent. However | ||
17 | when a device access is removed from a parent it will not also be | ||
18 | removed from the child(ren). | ||
19 | |||
20 | 2. User Interface | ||
21 | |||
22 | An entry is added using devices.allow, and removed using | ||
23 | devices.deny. For instance | ||
24 | |||
25 | echo 'c 1:3 mr' > /cgroups/1/devices.allow | ||
26 | |||
27 | allows cgroup 1 to read and mknod the device usually known as | ||
28 | /dev/null. Doing | ||
29 | |||
30 | echo a > /cgroups/1/devices.deny | ||
31 | |||
32 | will remove the default 'a *:* mrw' entry. | ||
33 | |||
34 | 3. Security | ||
35 | |||
36 | Any task can move itself between cgroups. This clearly won't | ||
37 | suffice, but we can decide the best way to adequately restrict | ||
38 | movement as people get some experience with this. We may just want | ||
39 | to require CAP_SYS_ADMIN, which at least is a separate bit from | ||
40 | CAP_MKNOD. We may want to just refuse moving to a cgroup which | ||
41 | isn't a descendent of the current one. Or we may want to use | ||
42 | CAP_MAC_ADMIN, since we really are trying to lock down root. | ||
43 | |||
44 | CAP_SYS_ADMIN is needed to modify the whitelist or move another | ||
45 | task to a new cgroup. (Again we'll probably want to change that). | ||
46 | |||
47 | A cgroup may not be granted more permissions than the cgroup's | ||
48 | parent has. | ||
diff --git a/Documentation/controllers/resource_counter.txt b/Documentation/controllers/resource_counter.txt new file mode 100644 index 000000000000..f196ac1d7d25 --- /dev/null +++ b/Documentation/controllers/resource_counter.txt | |||
@@ -0,0 +1,181 @@ | |||
1 | |||
2 | The Resource Counter | ||
3 | |||
4 | The resource counter, declared at include/linux/res_counter.h, | ||
5 | is supposed to facilitate the resource management by controllers | ||
6 | by providing common stuff for accounting. | ||
7 | |||
8 | This "stuff" includes the res_counter structure and routines | ||
9 | to work with it. | ||
10 | |||
11 | |||
12 | |||
13 | 1. Crucial parts of the res_counter structure | ||
14 | |||
15 | a. unsigned long long usage | ||
16 | |||
17 | The usage value shows the amount of a resource that is consumed | ||
18 | by a group at a given time. The units of measurement should be | ||
19 | determined by the controller that uses this counter. E.g. it can | ||
20 | be bytes, items or any other unit the controller operates on. | ||
21 | |||
22 | b. unsigned long long max_usage | ||
23 | |||
24 | The maximal value of the usage over time. | ||
25 | |||
26 | This value is useful when gathering statistical information about | ||
27 | the particular group, as it shows the actual resource requirements | ||
28 | for a particular group, not just some usage snapshot. | ||
29 | |||
30 | c. unsigned long long limit | ||
31 | |||
32 | The maximal allowed amount of resource to consume by the group. In | ||
33 | case the group requests for more resources, so that the usage value | ||
34 | would exceed the limit, the resource allocation is rejected (see | ||
35 | the next section). | ||
36 | |||
37 | d. unsigned long long failcnt | ||
38 | |||
39 | The failcnt stands for "failures counter". This is the number of | ||
40 | resource allocation attempts that failed. | ||
41 | |||
42 | c. spinlock_t lock | ||
43 | |||
44 | Protects changes of the above values. | ||
45 | |||
46 | |||
47 | |||
48 | 2. Basic accounting routines | ||
49 | |||
50 | a. void res_counter_init(struct res_counter *rc) | ||
51 | |||
52 | Initializes the resource counter. As usual, should be the first | ||
53 | routine called for a new counter. | ||
54 | |||
55 | b. int res_counter_charge[_locked] | ||
56 | (struct res_counter *rc, unsigned long val) | ||
57 | |||
58 | When a resource is about to be allocated it has to be accounted | ||
59 | with the appropriate resource counter (controller should determine | ||
60 | which one to use on its own). This operation is called "charging". | ||
61 | |||
62 | This is not very important which operation - resource allocation | ||
63 | or charging - is performed first, but | ||
64 | * if the allocation is performed first, this may create a | ||
65 | temporary resource over-usage by the time resource counter is | ||
66 | charged; | ||
67 | * if the charging is performed first, then it should be uncharged | ||
68 | on error path (if the one is called). | ||
69 | |||
70 | c. void res_counter_uncharge[_locked] | ||
71 | (struct res_counter *rc, unsigned long val) | ||
72 | |||
73 | When a resource is released (freed) it should be de-accounted | ||
74 | from the resource counter it was accounted to. This is called | ||
75 | "uncharging". | ||
76 | |||
77 | The _locked routines imply that the res_counter->lock is taken. | ||
78 | |||
79 | |||
80 | 2.1 Other accounting routines | ||
81 | |||
82 | There are more routines that may help you with common needs, like | ||
83 | checking whether the limit is reached or resetting the max_usage | ||
84 | value. They are all declared in include/linux/res_counter.h. | ||
85 | |||
86 | |||
87 | |||
88 | 3. Analyzing the resource counter registrations | ||
89 | |||
90 | a. If the failcnt value constantly grows, this means that the counter's | ||
91 | limit is too tight. Either the group is misbehaving and consumes too | ||
92 | many resources, or the configuration is not suitable for the group | ||
93 | and the limit should be increased. | ||
94 | |||
95 | b. The max_usage value can be used to quickly tune the group. One may | ||
96 | set the limits to maximal values and either load the container with | ||
97 | a common pattern or leave one for a while. After this the max_usage | ||
98 | value shows the amount of memory the container would require during | ||
99 | its common activity. | ||
100 | |||
101 | Setting the limit a bit above this value gives a pretty good | ||
102 | configuration that works in most of the cases. | ||
103 | |||
104 | c. If the max_usage is much less than the limit, but the failcnt value | ||
105 | is growing, then the group tries to allocate a big chunk of resource | ||
106 | at once. | ||
107 | |||
108 | d. If the max_usage is much less than the limit, but the failcnt value | ||
109 | is 0, then this group is given too high limit, that it does not | ||
110 | require. It is better to lower the limit a bit leaving more resource | ||
111 | for other groups. | ||
112 | |||
113 | |||
114 | |||
115 | 4. Communication with the control groups subsystem (cgroups) | ||
116 | |||
117 | All the resource controllers that are using cgroups and resource counters | ||
118 | should provide files (in the cgroup filesystem) to work with the resource | ||
119 | counter fields. They are recommended to adhere to the following rules: | ||
120 | |||
121 | a. File names | ||
122 | |||
123 | Field name File name | ||
124 | --------------------------------------------------- | ||
125 | usage usage_in_<unit_of_measurement> | ||
126 | max_usage max_usage_in_<unit_of_measurement> | ||
127 | limit limit_in_<unit_of_measurement> | ||
128 | failcnt failcnt | ||
129 | lock no file :) | ||
130 | |||
131 | b. Reading from file should show the corresponding field value in the | ||
132 | appropriate format. | ||
133 | |||
134 | c. Writing to file | ||
135 | |||
136 | Field Expected behavior | ||
137 | ---------------------------------- | ||
138 | usage prohibited | ||
139 | max_usage reset to usage | ||
140 | limit set the limit | ||
141 | failcnt reset to zero | ||
142 | |||
143 | |||
144 | |||
145 | 5. Usage example | ||
146 | |||
147 | a. Declare a task group (take a look at cgroups subsystem for this) and | ||
148 | fold a res_counter into it | ||
149 | |||
150 | struct my_group { | ||
151 | struct res_counter res; | ||
152 | |||
153 | <other fields> | ||
154 | } | ||
155 | |||
156 | b. Put hooks in resource allocation/release paths | ||
157 | |||
158 | int alloc_something(...) | ||
159 | { | ||
160 | if (res_counter_charge(res_counter_ptr, amount) < 0) | ||
161 | return -ENOMEM; | ||
162 | |||
163 | <allocate the resource and return to the caller> | ||
164 | } | ||
165 | |||
166 | void release_something(...) | ||
167 | { | ||
168 | res_counter_uncharge(res_counter_ptr, amount); | ||
169 | |||
170 | <release the resource> | ||
171 | } | ||
172 | |||
173 | In order to keep the usage value self-consistent, both the | ||
174 | "res_counter_ptr" and the "amount" in release_something() should be | ||
175 | the same as they were in the alloc_something() when the releasing | ||
176 | resource was allocated. | ||
177 | |||
178 | c. Provide the way to read res_counter values and set them (the cgroups | ||
179 | still can help with it). | ||
180 | |||
181 | c. Compile and run :) | ||
diff --git a/Documentation/cpu-freq/user-guide.txt b/Documentation/cpu-freq/user-guide.txt index af3b925ece08..6c442d8426b5 100644 --- a/Documentation/cpu-freq/user-guide.txt +++ b/Documentation/cpu-freq/user-guide.txt | |||
@@ -154,6 +154,11 @@ scaling_governor, and by "echoing" the name of another | |||
154 | that some governors won't load - they only | 154 | that some governors won't load - they only |
155 | work on some specific architectures or | 155 | work on some specific architectures or |
156 | processors. | 156 | processors. |
157 | |||
158 | cpuinfo_cur_freq : Current speed of the CPU, in KHz. | ||
159 | |||
160 | scaling_available_frequencies : List of available frequencies, in KHz. | ||
161 | |||
157 | scaling_min_freq and | 162 | scaling_min_freq and |
158 | scaling_max_freq show the current "policy limits" (in | 163 | scaling_max_freq show the current "policy limits" (in |
159 | kHz). By echoing new values into these | 164 | kHz). By echoing new values into these |
@@ -162,6 +167,15 @@ scaling_max_freq show the current "policy limits" (in | |||
162 | first set scaling_max_freq, then | 167 | first set scaling_max_freq, then |
163 | scaling_min_freq. | 168 | scaling_min_freq. |
164 | 169 | ||
170 | affected_cpus : List of CPUs that require software coordination | ||
171 | of frequency. | ||
172 | |||
173 | related_cpus : List of CPUs that need some sort of frequency | ||
174 | coordination, whether software or hardware. | ||
175 | |||
176 | scaling_driver : Hardware driver for cpufreq. | ||
177 | |||
178 | scaling_cur_freq : Current frequency of the CPU, in KHz. | ||
165 | 179 | ||
166 | If you have selected the "userspace" governor which allows you to | 180 | If you have selected the "userspace" governor which allows you to |
167 | set the CPU operating frequency to a specific value, you can read out | 181 | set the CPU operating frequency to a specific value, you can read out |
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt index aa854b9b18cd..fb7b361e6eea 100644 --- a/Documentation/cpusets.txt +++ b/Documentation/cpusets.txt | |||
@@ -171,6 +171,7 @@ files describing that cpuset: | |||
171 | - memory_migrate flag: if set, move pages to cpusets nodes | 171 | - memory_migrate flag: if set, move pages to cpusets nodes |
172 | - cpu_exclusive flag: is cpu placement exclusive? | 172 | - cpu_exclusive flag: is cpu placement exclusive? |
173 | - mem_exclusive flag: is memory placement exclusive? | 173 | - mem_exclusive flag: is memory placement exclusive? |
174 | - mem_hardwall flag: is memory allocation hardwalled | ||
174 | - memory_pressure: measure of how much paging pressure in cpuset | 175 | - memory_pressure: measure of how much paging pressure in cpuset |
175 | 176 | ||
176 | In addition, the root cpuset only has the following file: | 177 | In addition, the root cpuset only has the following file: |
@@ -222,17 +223,18 @@ If a cpuset is cpu or mem exclusive, no other cpuset, other than | |||
222 | a direct ancestor or descendent, may share any of the same CPUs or | 223 | a direct ancestor or descendent, may share any of the same CPUs or |
223 | Memory Nodes. | 224 | Memory Nodes. |
224 | 225 | ||
225 | A cpuset that is mem_exclusive restricts kernel allocations for | 226 | A cpuset that is mem_exclusive *or* mem_hardwall is "hardwalled", |
226 | page, buffer and other data commonly shared by the kernel across | 227 | i.e. it restricts kernel allocations for page, buffer and other data |
227 | multiple users. All cpusets, whether mem_exclusive or not, restrict | 228 | commonly shared by the kernel across multiple users. All cpusets, |
228 | allocations of memory for user space. This enables configuring a | 229 | whether hardwalled or not, restrict allocations of memory for user |
229 | system so that several independent jobs can share common kernel data, | 230 | space. This enables configuring a system so that several independent |
230 | such as file system pages, while isolating each jobs user allocation in | 231 | jobs can share common kernel data, such as file system pages, while |
231 | its own cpuset. To do this, construct a large mem_exclusive cpuset to | 232 | isolating each job's user allocation in its own cpuset. To do this, |
232 | hold all the jobs, and construct child, non-mem_exclusive cpusets for | 233 | construct a large mem_exclusive cpuset to hold all the jobs, and |
233 | each individual job. Only a small amount of typical kernel memory, | 234 | construct child, non-mem_exclusive cpusets for each individual job. |
234 | such as requests from interrupt handlers, is allowed to be taken | 235 | Only a small amount of typical kernel memory, such as requests from |
235 | outside even a mem_exclusive cpuset. | 236 | interrupt handlers, is allowed to be taken outside even a |
237 | mem_exclusive cpuset. | ||
236 | 238 | ||
237 | 239 | ||
238 | 1.5 What is memory_pressure ? | 240 | 1.5 What is memory_pressure ? |
@@ -707,7 +709,7 @@ Now you want to do something with this cpuset. | |||
707 | 709 | ||
708 | In this directory you can find several files: | 710 | In this directory you can find several files: |
709 | # ls | 711 | # ls |
710 | cpus cpu_exclusive mems mem_exclusive tasks | 712 | cpus cpu_exclusive mems mem_exclusive mem_hardwall tasks |
711 | 713 | ||
712 | Reading them will give you information about the state of this cpuset: | 714 | Reading them will give you information about the state of this cpuset: |
713 | the CPUs and Memory Nodes it can use, the processes that are using | 715 | the CPUs and Memory Nodes it can use, the processes that are using |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 599fe55bf297..3c35d452b1a9 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -138,6 +138,24 @@ Who: Kay Sievers <kay.sievers@suse.de> | |||
138 | 138 | ||
139 | --------------------------- | 139 | --------------------------- |
140 | 140 | ||
141 | What: find_task_by_pid | ||
142 | When: 2.6.26 | ||
143 | Why: With pid namespaces, calling this funciton will return the | ||
144 | wrong task when called from inside a namespace. | ||
145 | |||
146 | The best way to save a task pid and find a task by this | ||
147 | pid later, is to find this task's struct pid pointer (or get | ||
148 | it directly from the task) and call pid_task() later. | ||
149 | |||
150 | If someone really needs to get a task by its pid_t, then | ||
151 | he most likely needs the find_task_by_vpid() to get the | ||
152 | task from the same namespace as the current task is in, but | ||
153 | this may be not so in general. | ||
154 | |||
155 | Who: Pavel Emelyanov <xemul@openvz.org> | ||
156 | |||
157 | --------------------------- | ||
158 | |||
141 | What: ACPI procfs interface | 159 | What: ACPI procfs interface |
142 | When: July 2008 | 160 | When: July 2008 |
143 | Why: ACPI sysfs conversion should be finished by January 2008. | 161 | Why: ACPI sysfs conversion should be finished by January 2008. |
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 2a99116edc47..dbc3c6a3650f 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -463,11 +463,17 @@ SwapTotal: 0 kB | |||
463 | SwapFree: 0 kB | 463 | SwapFree: 0 kB |
464 | Dirty: 968 kB | 464 | Dirty: 968 kB |
465 | Writeback: 0 kB | 465 | Writeback: 0 kB |
466 | AnonPages: 861800 kB | ||
466 | Mapped: 280372 kB | 467 | Mapped: 280372 kB |
467 | Slab: 684068 kB | 468 | Slab: 284364 kB |
469 | SReclaimable: 159856 kB | ||
470 | SUnreclaim: 124508 kB | ||
471 | PageTables: 24448 kB | ||
472 | NFS_Unstable: 0 kB | ||
473 | Bounce: 0 kB | ||
474 | WritebackTmp: 0 kB | ||
468 | CommitLimit: 7669796 kB | 475 | CommitLimit: 7669796 kB |
469 | Committed_AS: 100056 kB | 476 | Committed_AS: 100056 kB |
470 | PageTables: 24448 kB | ||
471 | VmallocTotal: 112216 kB | 477 | VmallocTotal: 112216 kB |
472 | VmallocUsed: 428 kB | 478 | VmallocUsed: 428 kB |
473 | VmallocChunk: 111088 kB | 479 | VmallocChunk: 111088 kB |
@@ -503,8 +509,17 @@ VmallocChunk: 111088 kB | |||
503 | on the disk | 509 | on the disk |
504 | Dirty: Memory which is waiting to get written back to the disk | 510 | Dirty: Memory which is waiting to get written back to the disk |
505 | Writeback: Memory which is actively being written back to the disk | 511 | Writeback: Memory which is actively being written back to the disk |
512 | AnonPages: Non-file backed pages mapped into userspace page tables | ||
506 | Mapped: files which have been mmaped, such as libraries | 513 | Mapped: files which have been mmaped, such as libraries |
507 | Slab: in-kernel data structures cache | 514 | Slab: in-kernel data structures cache |
515 | SReclaimable: Part of Slab, that might be reclaimed, such as caches | ||
516 | SUnreclaim: Part of Slab, that cannot be reclaimed on memory pressure | ||
517 | PageTables: amount of memory dedicated to the lowest level of page | ||
518 | tables. | ||
519 | NFS_Unstable: NFS pages sent to the server, but not yet committed to stable | ||
520 | storage | ||
521 | Bounce: Memory used for block device "bounce buffers" | ||
522 | WritebackTmp: Memory used by FUSE for temporary writeback buffers | ||
508 | CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'), | 523 | CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'), |
509 | this is the total amount of memory currently available to | 524 | this is the total amount of memory currently available to |
510 | be allocated on the system. This limit is only adhered to | 525 | be allocated on the system. This limit is only adhered to |
@@ -531,8 +546,6 @@ Committed_AS: The amount of memory presently allocated on the system. | |||
531 | above) will not be permitted. This is useful if one needs | 546 | above) will not be permitted. This is useful if one needs |
532 | to guarantee that processes will not fail due to lack of | 547 | to guarantee that processes will not fail due to lack of |
533 | memory once that memory has been successfully allocated. | 548 | memory once that memory has been successfully allocated. |
534 | PageTables: amount of memory dedicated to the lowest level of page | ||
535 | tables. | ||
536 | VmallocTotal: total size of vmalloc memory area | 549 | VmallocTotal: total size of vmalloc memory area |
537 | VmallocUsed: amount of vmalloc area which is used | 550 | VmallocUsed: amount of vmalloc area which is used |
538 | VmallocChunk: largest contigious block of vmalloc area which is free | 551 | VmallocChunk: largest contigious block of vmalloc area which is free |
diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients index bfb0a5520817..ee75cbace28d 100644 --- a/Documentation/i2c/writing-clients +++ b/Documentation/i2c/writing-clients | |||
@@ -164,7 +164,8 @@ I2C device drivers using this binding model work just like any other | |||
164 | kind of driver in Linux: they provide a probe() method to bind to | 164 | kind of driver in Linux: they provide a probe() method to bind to |
165 | those devices, and a remove() method to unbind. | 165 | those devices, and a remove() method to unbind. |
166 | 166 | ||
167 | static int foo_probe(struct i2c_client *client); | 167 | static int foo_probe(struct i2c_client *client, |
168 | const struct i2c_device_id *id); | ||
168 | static int foo_remove(struct i2c_client *client); | 169 | static int foo_remove(struct i2c_client *client); |
169 | 170 | ||
170 | Remember that the i2c_driver does not create those client handles. The | 171 | Remember that the i2c_driver does not create those client handles. The |
diff --git a/Documentation/i386/boot.txt b/Documentation/i386/boot.txt index 0fac3465f2e3..95ad15c3b01f 100644 --- a/Documentation/i386/boot.txt +++ b/Documentation/i386/boot.txt | |||
@@ -40,9 +40,17 @@ Protocol 2.05: (Kernel 2.6.20) Make protected mode kernel relocatable. | |||
40 | Introduce relocatable_kernel and kernel_alignment fields. | 40 | Introduce relocatable_kernel and kernel_alignment fields. |
41 | 41 | ||
42 | Protocol 2.06: (Kernel 2.6.22) Added a field that contains the size of | 42 | Protocol 2.06: (Kernel 2.6.22) Added a field that contains the size of |
43 | the boot command line | 43 | the boot command line. |
44 | 44 | ||
45 | Protocol 2.09: (kernel 2.6.26) Added a field of 64-bit physical | 45 | Protocol 2.07: (Kernel 2.6.24) Added paravirtualised boot protocol. |
46 | Introduced hardware_subarch and hardware_subarch_data | ||
47 | and KEEP_SEGMENTS flag in load_flags. | ||
48 | |||
49 | Protocol 2.08: (Kernel 2.6.26) Added crc32 checksum and ELF format | ||
50 | payload. Introduced payload_offset and payload length | ||
51 | fields to aid in locating the payload. | ||
52 | |||
53 | Protocol 2.09: (Kernel 2.6.26) Added a field of 64-bit physical | ||
46 | pointer to single linked list of struct setup_data. | 54 | pointer to single linked list of struct setup_data. |
47 | 55 | ||
48 | **** MEMORY LAYOUT | 56 | **** MEMORY LAYOUT |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index e5f3d918316f..a3c35446e755 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -496,6 +496,11 @@ and is between 256 and 4096 characters. It is defined in the file | |||
496 | switching to the matching ttyS device later. The | 496 | switching to the matching ttyS device later. The |
497 | options are the same as for ttyS, above. | 497 | options are the same as for ttyS, above. |
498 | 498 | ||
499 | If the device connected to the port is not a TTY but a braille | ||
500 | device, prepend "brl," before the device type, for instance | ||
501 | console=brl,ttyS0 | ||
502 | For now, only VisioBraille is supported. | ||
503 | |||
499 | earlycon= [KNL] Output early console device and options. | 504 | earlycon= [KNL] Output early console device and options. |
500 | uart[8250],io,<addr>[,options] | 505 | uart[8250],io,<addr>[,options] |
501 | uart[8250],mmio,<addr>[,options] | 506 | uart[8250],mmio,<addr>[,options] |
@@ -556,6 +561,8 @@ and is between 256 and 4096 characters. It is defined in the file | |||
556 | 1 will print _a lot_ more information - normally | 561 | 1 will print _a lot_ more information - normally |
557 | only useful to kernel developers. | 562 | only useful to kernel developers. |
558 | 563 | ||
564 | debug_objects [KNL] Enable object debugging | ||
565 | |||
559 | decnet.addr= [HW,NET] | 566 | decnet.addr= [HW,NET] |
560 | Format: <area>[,<node>] | 567 | Format: <area>[,<node>] |
561 | See also Documentation/networking/decnet.txt. | 568 | See also Documentation/networking/decnet.txt. |
@@ -627,8 +634,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
627 | eata= [HW,SCSI] | 634 | eata= [HW,SCSI] |
628 | 635 | ||
629 | edd= [EDD] | 636 | edd= [EDD] |
630 | Format: {"of[f]" | "sk[ipmbr]"} | 637 | Format: {"off" | "on" | "skip[mbr]"} |
631 | See comment in arch/i386/boot/edd.S | ||
632 | 638 | ||
633 | eisa_irq_edge= [PARISC,HW] | 639 | eisa_irq_edge= [PARISC,HW] |
634 | See header of drivers/parisc/eisa.c. | 640 | See header of drivers/parisc/eisa.c. |
@@ -1389,6 +1395,13 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1389 | 1395 | ||
1390 | nr_uarts= [SERIAL] maximum number of UARTs to be registered. | 1396 | nr_uarts= [SERIAL] maximum number of UARTs to be registered. |
1391 | 1397 | ||
1398 | olpc_ec_timeout= [OLPC] ms delay when issuing EC commands | ||
1399 | Rather than timing out after 20 ms if an EC | ||
1400 | command is not properly ACKed, override the length | ||
1401 | of the timeout. We have interrupts disabled while | ||
1402 | waiting for the ACK, so if this is set too high | ||
1403 | interrupts *may* be lost! | ||
1404 | |||
1392 | opl3= [HW,OSS] | 1405 | opl3= [HW,OSS] |
1393 | Format: <io> | 1406 | Format: <io> |
1394 | 1407 | ||
diff --git a/Documentation/keys-request-key.txt b/Documentation/keys-request-key.txt index 266955d23ee6..09b55e461740 100644 --- a/Documentation/keys-request-key.txt +++ b/Documentation/keys-request-key.txt | |||
@@ -11,26 +11,29 @@ request_key*(): | |||
11 | 11 | ||
12 | struct key *request_key(const struct key_type *type, | 12 | struct key *request_key(const struct key_type *type, |
13 | const char *description, | 13 | const char *description, |
14 | const char *callout_string); | 14 | const char *callout_info); |
15 | 15 | ||
16 | or: | 16 | or: |
17 | 17 | ||
18 | struct key *request_key_with_auxdata(const struct key_type *type, | 18 | struct key *request_key_with_auxdata(const struct key_type *type, |
19 | const char *description, | 19 | const char *description, |
20 | const char *callout_string, | 20 | const char *callout_info, |
21 | size_t callout_len, | ||
21 | void *aux); | 22 | void *aux); |
22 | 23 | ||
23 | or: | 24 | or: |
24 | 25 | ||
25 | struct key *request_key_async(const struct key_type *type, | 26 | struct key *request_key_async(const struct key_type *type, |
26 | const char *description, | 27 | const char *description, |
27 | const char *callout_string); | 28 | const char *callout_info, |
29 | size_t callout_len); | ||
28 | 30 | ||
29 | or: | 31 | or: |
30 | 32 | ||
31 | struct key *request_key_async_with_auxdata(const struct key_type *type, | 33 | struct key *request_key_async_with_auxdata(const struct key_type *type, |
32 | const char *description, | 34 | const char *description, |
33 | const char *callout_string, | 35 | const char *callout_info, |
36 | size_t callout_len, | ||
34 | void *aux); | 37 | void *aux); |
35 | 38 | ||
36 | Or by userspace invoking the request_key system call: | 39 | Or by userspace invoking the request_key system call: |
diff --git a/Documentation/keys.txt b/Documentation/keys.txt index 51652d39e61c..d5c7a57d1700 100644 --- a/Documentation/keys.txt +++ b/Documentation/keys.txt | |||
@@ -170,7 +170,8 @@ The key service provides a number of features besides keys: | |||
170 | amount of description and payload space that can be consumed. | 170 | amount of description and payload space that can be consumed. |
171 | 171 | ||
172 | The user can view information on this and other statistics through procfs | 172 | The user can view information on this and other statistics through procfs |
173 | files. | 173 | files. The root user may also alter the quota limits through sysctl files |
174 | (see the section "New procfs files"). | ||
174 | 175 | ||
175 | Process-specific and thread-specific keyrings are not counted towards a | 176 | Process-specific and thread-specific keyrings are not counted towards a |
176 | user's quota. | 177 | user's quota. |
@@ -329,6 +330,27 @@ about the status of the key service: | |||
329 | <bytes>/<max> Key size quota | 330 | <bytes>/<max> Key size quota |
330 | 331 | ||
331 | 332 | ||
333 | Four new sysctl files have been added also for the purpose of controlling the | ||
334 | quota limits on keys: | ||
335 | |||
336 | (*) /proc/sys/kernel/keys/root_maxkeys | ||
337 | /proc/sys/kernel/keys/root_maxbytes | ||
338 | |||
339 | These files hold the maximum number of keys that root may have and the | ||
340 | maximum total number of bytes of data that root may have stored in those | ||
341 | keys. | ||
342 | |||
343 | (*) /proc/sys/kernel/keys/maxkeys | ||
344 | /proc/sys/kernel/keys/maxbytes | ||
345 | |||
346 | These files hold the maximum number of keys that each non-root user may | ||
347 | have and the maximum total number of bytes of data that each of those | ||
348 | users may have stored in their keys. | ||
349 | |||
350 | Root may alter these by writing each new limit as a decimal number string to | ||
351 | the appropriate file. | ||
352 | |||
353 | |||
332 | =============================== | 354 | =============================== |
333 | USERSPACE SYSTEM CALL INTERFACE | 355 | USERSPACE SYSTEM CALL INTERFACE |
334 | =============================== | 356 | =============================== |
@@ -711,6 +733,27 @@ The keyctl syscall functions are: | |||
711 | The assumed authoritative key is inherited across fork and exec. | 733 | The assumed authoritative key is inherited across fork and exec. |
712 | 734 | ||
713 | 735 | ||
736 | (*) Get the LSM security context attached to a key. | ||
737 | |||
738 | long keyctl(KEYCTL_GET_SECURITY, key_serial_t key, char *buffer, | ||
739 | size_t buflen) | ||
740 | |||
741 | This function returns a string that represents the LSM security context | ||
742 | attached to a key in the buffer provided. | ||
743 | |||
744 | Unless there's an error, it always returns the amount of data it could | ||
745 | produce, even if that's too big for the buffer, but it won't copy more | ||
746 | than requested to userspace. If the buffer pointer is NULL then no copy | ||
747 | will take place. | ||
748 | |||
749 | A NUL character is included at the end of the string if the buffer is | ||
750 | sufficiently big. This is included in the returned count. If no LSM is | ||
751 | in force then an empty string will be returned. | ||
752 | |||
753 | A process must have view permission on the key for this function to be | ||
754 | successful. | ||
755 | |||
756 | |||
714 | =============== | 757 | =============== |
715 | KERNEL SERVICES | 758 | KERNEL SERVICES |
716 | =============== | 759 | =============== |
@@ -771,7 +814,7 @@ payload contents" for more information. | |||
771 | 814 | ||
772 | struct key *request_key(const struct key_type *type, | 815 | struct key *request_key(const struct key_type *type, |
773 | const char *description, | 816 | const char *description, |
774 | const char *callout_string); | 817 | const char *callout_info); |
775 | 818 | ||
776 | This is used to request a key or keyring with a description that matches | 819 | This is used to request a key or keyring with a description that matches |
777 | the description specified according to the key type's match function. This | 820 | the description specified according to the key type's match function. This |
@@ -793,24 +836,28 @@ payload contents" for more information. | |||
793 | 836 | ||
794 | struct key *request_key_with_auxdata(const struct key_type *type, | 837 | struct key *request_key_with_auxdata(const struct key_type *type, |
795 | const char *description, | 838 | const char *description, |
796 | const char *callout_string, | 839 | const void *callout_info, |
840 | size_t callout_len, | ||
797 | void *aux); | 841 | void *aux); |
798 | 842 | ||
799 | This is identical to request_key(), except that the auxiliary data is | 843 | This is identical to request_key(), except that the auxiliary data is |
800 | passed to the key_type->request_key() op if it exists. | 844 | passed to the key_type->request_key() op if it exists, and the callout_info |
845 | is a blob of length callout_len, if given (the length may be 0). | ||
801 | 846 | ||
802 | 847 | ||
803 | (*) A key can be requested asynchronously by calling one of: | 848 | (*) A key can be requested asynchronously by calling one of: |
804 | 849 | ||
805 | struct key *request_key_async(const struct key_type *type, | 850 | struct key *request_key_async(const struct key_type *type, |
806 | const char *description, | 851 | const char *description, |
807 | const char *callout_string); | 852 | const void *callout_info, |
853 | size_t callout_len); | ||
808 | 854 | ||
809 | or: | 855 | or: |
810 | 856 | ||
811 | struct key *request_key_async_with_auxdata(const struct key_type *type, | 857 | struct key *request_key_async_with_auxdata(const struct key_type *type, |
812 | const char *description, | 858 | const char *description, |
813 | const char *callout_string, | 859 | const char *callout_info, |
860 | size_t callout_len, | ||
814 | void *aux); | 861 | void *aux); |
815 | 862 | ||
816 | which are asynchronous equivalents of request_key() and | 863 | which are asynchronous equivalents of request_key() and |
diff --git a/Documentation/oops-tracing.txt b/Documentation/oops-tracing.txt index 7f60dfe642ca..b152e81da592 100644 --- a/Documentation/oops-tracing.txt +++ b/Documentation/oops-tracing.txt | |||
@@ -253,6 +253,10 @@ characters, each representing a particular tainted value. | |||
253 | 253 | ||
254 | 8: 'D' if the kernel has died recently, i.e. there was an OOPS or BUG. | 254 | 8: 'D' if the kernel has died recently, i.e. there was an OOPS or BUG. |
255 | 255 | ||
256 | 9: 'A' if the ACPI table has been overridden. | ||
257 | |||
258 | 10: 'W' if a warning has previously been issued by the kernel. | ||
259 | |||
256 | The primary reason for the 'Tainted: ' string is to tell kernel | 260 | The primary reason for the 'Tainted: ' string is to tell kernel |
257 | debuggers if this is a clean kernel or if anything unusual has | 261 | debuggers if this is a clean kernel or if anything unusual has |
258 | occurred. Tainting is permanent: even if an offending module is | 262 | occurred. Tainting is permanent: even if an offending module is |
diff --git a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt index 5e03610e186f..cda7a7dffa6d 100644 --- a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt +++ b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt | |||
@@ -186,6 +186,12 @@ Recommended soc5200 child nodes; populate as needed for your board | |||
186 | name device_type compatible Description | 186 | name device_type compatible Description |
187 | ---- ----------- ---------- ----------- | 187 | ---- ----------- ---------- ----------- |
188 | gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers | 188 | gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers |
189 | gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose | ||
190 | timers in GPIO mode | ||
191 | gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio | ||
192 | controller | ||
193 | gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio | ||
194 | controller | ||
189 | rtc@<addr> rtc mpc5200-rtc Real time clock | 195 | rtc@<addr> rtc mpc5200-rtc Real time clock |
190 | mscan@<addr> mscan mpc5200-mscan CAN bus controller | 196 | mscan@<addr> mscan mpc5200-mscan CAN bus controller |
191 | pci@<addr> pci mpc5200-pci PCI bridge | 197 | pci@<addr> pci mpc5200-pci PCI bridge |
@@ -225,6 +231,12 @@ PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in | |||
225 | i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the | 231 | i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the |
226 | compatible field. | 232 | compatible field. |
227 | 233 | ||
234 | 7) GPIO controller nodes | ||
235 | Each GPIO controller node should have the empty property gpio-controller and | ||
236 | #gpio-cells set to 2. First cell is the GPIO number which is interpreted | ||
237 | according to the bit numbers in the GPIO control registers. The second cell | ||
238 | is for flags which is currently unsused. | ||
239 | |||
228 | IV - Extra Notes | 240 | IV - Extra Notes |
229 | ================ | 241 | ================ |
230 | 242 | ||
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index fd4c32a031c9..0bbee38acd26 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -795,6 +795,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
795 | lg-lw LG LW20/LW25 laptop | 795 | lg-lw LG LW20/LW25 laptop |
796 | tcl TCL S700 | 796 | tcl TCL S700 |
797 | clevo Clevo laptops (m520G, m665n) | 797 | clevo Clevo laptops (m520G, m665n) |
798 | medion Medion Rim 2150 | ||
798 | test for testing/debugging purpose, almost all controls can be | 799 | test for testing/debugging purpose, almost all controls can be |
799 | adjusted. Appearing only when compiled with | 800 | adjusted. Appearing only when compiled with |
800 | $CONFIG_SND_DEBUG=y | 801 | $CONFIG_SND_DEBUG=y |
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt index 10c8f6922ef4..5ce0952aa065 100644 --- a/Documentation/sysrq.txt +++ b/Documentation/sysrq.txt | |||
@@ -85,6 +85,8 @@ On all - write a character to /proc/sysrq-trigger. e.g.: | |||
85 | 'k' - Secure Access Key (SAK) Kills all programs on the current virtual | 85 | 'k' - Secure Access Key (SAK) Kills all programs on the current virtual |
86 | console. NOTE: See important comments below in SAK section. | 86 | console. NOTE: See important comments below in SAK section. |
87 | 87 | ||
88 | 'l' - Shows a stack backtrace for all active CPUs. | ||
89 | |||
88 | 'm' - Will dump current memory info to your console. | 90 | 'm' - Will dump current memory info to your console. |
89 | 91 | ||
90 | 'n' - Used to make RT tasks nice-able | 92 | 'n' - Used to make RT tasks nice-able |
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index 44d84dd15ad6..67937df1e974 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -128,7 +128,7 @@ | |||
128 | 127 -> Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM [0000:5071,0000:507B,5ace:5070,5ace:5090] | 128 | 127 -> Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM [0000:5071,0000:507B,5ace:5070,5ace:5090] |
129 | 128 -> Beholder BeholdTV Columbus TVFM [0000:5201] | 129 | 128 -> Beholder BeholdTV Columbus TVFM [0000:5201] |
130 | 129 -> Beholder BeholdTV 607 / BeholdTV 609 [5ace:6070,5ace:6071,5ace:6072,5ace:6073,5ace:6090,5ace:6091,5ace:6092,5ace:6093] | 130 | 129 -> Beholder BeholdTV 607 / BeholdTV 609 [5ace:6070,5ace:6071,5ace:6072,5ace:6073,5ace:6090,5ace:6091,5ace:6092,5ace:6093] |
131 | 130 -> Beholder BeholdTV M6 / BeholdTV M6 Extra [5ace:6190,5ace:6193] | 131 | 130 -> Beholder BeholdTV M6 / BeholdTV M6 Extra [5ace:6190,5ace:6193,5ace:6191] |
132 | 131 -> Twinhan Hybrid DTV-DVB 3056 PCI [1822:0022] | 132 | 131 -> Twinhan Hybrid DTV-DVB 3056 PCI [1822:0022] |
133 | 132 -> Genius TVGO AM11MCE | 133 | 132 -> Genius TVGO AM11MCE |
134 | 133 -> NXP Snake DVB-S reference design | 134 | 133 -> NXP Snake DVB-S reference design |
@@ -140,3 +140,4 @@ | |||
140 | 139 -> Compro VideoMate T750 [185b:c900] | 140 | 139 -> Compro VideoMate T750 [185b:c900] |
141 | 140 -> Avermedia DVB-S Pro A700 [1461:a7a1] | 141 | 140 -> Avermedia DVB-S Pro A700 [1461:a7a1] |
142 | 141 -> Avermedia DVB-S Hybrid+FM A700 [1461:a7a2] | 142 | 141 -> Avermedia DVB-S Hybrid+FM A700 [1461:a7a2] |
143 | 142 -> Beholder BeholdTV H6 [5ace:6290] | ||
diff --git a/Documentation/video4linux/cx18.txt b/Documentation/video4linux/cx18.txt new file mode 100644 index 000000000000..077d56ec3f3d --- /dev/null +++ b/Documentation/video4linux/cx18.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | Some notes regarding the cx18 driver for the Conexant CX23418 MPEG | ||
2 | encoder chip: | ||
3 | |||
4 | 1) The only hardware currently supported is the Hauppauge HVR-1600. | ||
5 | |||
6 | 2) Some people have problems getting the i2c bus to work. Cause unknown. | ||
7 | The symptom is that the eeprom cannot be read and the card is | ||
8 | unusable. | ||
9 | |||
10 | 3) The audio from the analog tuner is mono only. Probably caused by | ||
11 | incorrect audio register information in the datasheet. We are | ||
12 | waiting for updated information from Conexant. | ||
13 | |||
14 | 4) VBI (raw or sliced) has not yet been implemented. | ||
15 | |||
16 | 5) MPEG indexing is not yet implemented. | ||
17 | |||
18 | 6) The driver is still a bit rough around the edges, this should | ||
19 | improve over time. | ||
20 | |||
21 | |||
22 | Firmware: | ||
23 | |||
24 | The firmware needs to be extracted from the Windows Hauppauge HVR-1600 | ||
25 | driver, available here: | ||
26 | |||
27 | http://hauppauge.lightpath.net/software/install_cd/hauppauge_cd_3.4d1.zip | ||
28 | |||
29 | Unzip, then copy the following files to the firmware directory | ||
30 | and rename them as follows: | ||
31 | |||
32 | Drivers/Driver18/hcw18apu.rom -> v4l-cx23418-apu.fw | ||
33 | Drivers/Driver18/hcw18enc.rom -> v4l-cx23418-cpu.fw | ||
34 | Drivers/Driver18/hcw18mlC.rom -> v4l-cx23418-dig.fw | ||