aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/testing/sysfs-block34
-rw-r--r--Documentation/ABI/testing/sysfs-bus-css35
-rw-r--r--Documentation/block/data-integrity.txt327
-rw-r--r--Documentation/ftrace.txt134
-rw-r--r--Documentation/ioctl-number.txt1
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt17
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl4
7 files changed, 484 insertions, 68 deletions
diff --git a/Documentation/ABI/testing/sysfs-block b/Documentation/ABI/testing/sysfs-block
index 4bd9ea539129..44f52a4f5903 100644
--- a/Documentation/ABI/testing/sysfs-block
+++ b/Documentation/ABI/testing/sysfs-block
@@ -26,3 +26,37 @@ Description:
26 I/O statistics of partition <part>. The format is the 26 I/O statistics of partition <part>. The format is the
27 same as the above-written /sys/block/<disk>/stat 27 same as the above-written /sys/block/<disk>/stat
28 format. 28 format.
29
30
31What: /sys/block/<disk>/integrity/format
32Date: June 2008
33Contact: Martin K. Petersen <martin.petersen@oracle.com>
34Description:
35 Metadata format for integrity capable block device.
36 E.g. T10-DIF-TYPE1-CRC.
37
38
39What: /sys/block/<disk>/integrity/read_verify
40Date: June 2008
41Contact: Martin K. Petersen <martin.petersen@oracle.com>
42Description:
43 Indicates whether the block layer should verify the
44 integrity of read requests serviced by devices that
45 support sending integrity metadata.
46
47
48What: /sys/block/<disk>/integrity/tag_size
49Date: June 2008
50Contact: Martin K. Petersen <martin.petersen@oracle.com>
51Description:
52 Number of bytes of integrity tag space available per
53 512 bytes of data.
54
55
56What: /sys/block/<disk>/integrity/write_generate
57Date: June 2008
58Contact: Martin K. Petersen <martin.petersen@oracle.com>
59Description:
60 Indicates whether the block layer should automatically
61 generate checksums for write requests bound for
62 devices that support receiving integrity metadata.
diff --git a/Documentation/ABI/testing/sysfs-bus-css b/Documentation/ABI/testing/sysfs-bus-css
new file mode 100644
index 000000000000..b585ec258a08
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-css
@@ -0,0 +1,35 @@
1What: /sys/bus/css/devices/.../type
2Date: March 2008
3Contact: Cornelia Huck <cornelia.huck@de.ibm.com>
4 linux-s390@vger.kernel.org
5Description: Contains the subchannel type, as reported by the hardware.
6 This attribute is present for all subchannel types.
7
8What: /sys/bus/css/devices/.../modalias
9Date: March 2008
10Contact: Cornelia Huck <cornelia.huck@de.ibm.com>
11 linux-s390@vger.kernel.org
12Description: Contains the module alias as reported with uevents.
13 It is of the format css:t<type> and present for all
14 subchannel types.
15
16What: /sys/bus/css/drivers/io_subchannel/.../chpids
17Date: December 2002
18Contact: Cornelia Huck <cornelia.huck@de.ibm.com>
19 linux-s390@vger.kernel.org
20Description: Contains the ids of the channel paths used by this
21 subchannel, as reported by the channel subsystem
22 during subchannel recognition.
23 Note: This is an I/O-subchannel specific attribute.
24Users: s390-tools, HAL
25
26What: /sys/bus/css/drivers/io_subchannel/.../pimpampom
27Date: December 2002
28Contact: Cornelia Huck <cornelia.huck@de.ibm.com>
29 linux-s390@vger.kernel.org
30Description: Contains the PIM/PAM/POM values, as reported by the
31 channel subsystem when last queried by the common I/O
32 layer (this implies that this attribute is not neccessarily
33 in sync with the values current in the channel subsystem).
34 Note: This is an I/O-subchannel specific attribute.
35Users: s390-tools, HAL
diff --git a/Documentation/block/data-integrity.txt b/Documentation/block/data-integrity.txt
new file mode 100644
index 000000000000..e9dc8d86adc7
--- /dev/null
+++ b/Documentation/block/data-integrity.txt
@@ -0,0 +1,327 @@
1----------------------------------------------------------------------
21. INTRODUCTION
3
4Modern filesystems feature checksumming of data and metadata to
5protect against data corruption. However, the detection of the
6corruption is done at read time which could potentially be months
7after the data was written. At that point the original data that the
8application tried to write is most likely lost.
9
10The solution is to ensure that the disk is actually storing what the
11application meant it to. Recent additions to both the SCSI family
12protocols (SBC Data Integrity Field, SCC protection proposal) as well
13as SATA/T13 (External Path Protection) try to remedy this by adding
14support for appending integrity metadata to an I/O. The integrity
15metadata (or protection information in SCSI terminology) includes a
16checksum for each sector as well as an incrementing counter that
17ensures the individual sectors are written in the right order. And
18for some protection schemes also that the I/O is written to the right
19place on disk.
20
21Current storage controllers and devices implement various protective
22measures, for instance checksumming and scrubbing. But these
23technologies are working in their own isolated domains or at best
24between adjacent nodes in the I/O path. The interesting thing about
25DIF and the other integrity extensions is that the protection format
26is well defined and every node in the I/O path can verify the
27integrity of the I/O and reject it if corruption is detected. This
28allows not only corruption prevention but also isolation of the point
29of failure.
30
31----------------------------------------------------------------------
322. THE DATA INTEGRITY EXTENSIONS
33
34As written, the protocol extensions only protect the path between
35controller and storage device. However, many controllers actually
36allow the operating system to interact with the integrity metadata
37(IMD). We have been working with several FC/SAS HBA vendors to enable
38the protection information to be transferred to and from their
39controllers.
40
41The SCSI Data Integrity Field works by appending 8 bytes of protection
42information to each sector. The data + integrity metadata is stored
43in 520 byte sectors on disk. Data + IMD are interleaved when
44transferred between the controller and target. The T13 proposal is
45similar.
46
47Because it is highly inconvenient for operating systems to deal with
48520 (and 4104) byte sectors, we approached several HBA vendors and
49encouraged them to allow separation of the data and integrity metadata
50scatter-gather lists.
51
52The controller will interleave the buffers on write and split them on
53read. This means that the Linux can DMA the data buffers to and from
54host memory without changes to the page cache.
55
56Also, the 16-bit CRC checksum mandated by both the SCSI and SATA specs
57is somewhat heavy to compute in software. Benchmarks found that
58calculating this checksum had a significant impact on system
59performance for a number of workloads. Some controllers allow a
60lighter-weight checksum to be used when interfacing with the operating
61system. Emulex, for instance, supports the TCP/IP checksum instead.
62The IP checksum received from the OS is converted to the 16-bit CRC
63when writing and vice versa. This allows the integrity metadata to be
64generated by Linux or the application at very low cost (comparable to
65software RAID5).
66
67The IP checksum is weaker than the CRC in terms of detecting bit
68errors. However, the strength is really in the separation of the data
69buffers and the integrity metadata. These two distinct buffers much
70match up for an I/O to complete.
71
72The separation of the data and integrity metadata buffers as well as
73the choice in checksums is referred to as the Data Integrity
74Extensions. As these extensions are outside the scope of the protocol
75bodies (T10, T13), Oracle and its partners are trying to standardize
76them within the Storage Networking Industry Association.
77
78----------------------------------------------------------------------
793. KERNEL CHANGES
80
81The data integrity framework in Linux enables protection information
82to be pinned to I/Os and sent to/received from controllers that
83support it.
84
85The advantage to the integrity extensions in SCSI and SATA is that
86they enable us to protect the entire path from application to storage
87device. However, at the same time this is also the biggest
88disadvantage. It means that the protection information must be in a
89format that can be understood by the disk.
90
91Generally Linux/POSIX applications are agnostic to the intricacies of
92the storage devices they are accessing. The virtual filesystem switch
93and the block layer make things like hardware sector size and
94transport protocols completely transparent to the application.
95
96However, this level of detail is required when preparing the
97protection information to send to a disk. Consequently, the very
98concept of an end-to-end protection scheme is a layering violation.
99It is completely unreasonable for an application to be aware whether
100it is accessing a SCSI or SATA disk.
101
102The data integrity support implemented in Linux attempts to hide this
103from the application. As far as the application (and to some extent
104the kernel) is concerned, the integrity metadata is opaque information
105that's attached to the I/O.
106
107The current implementation allows the block layer to automatically
108generate the protection information for any I/O. Eventually the
109intent is to move the integrity metadata calculation to userspace for
110user data. Metadata and other I/O that originates within the kernel
111will still use the automatic generation interface.
112
113Some storage devices allow each hardware sector to be tagged with a
11416-bit value. The owner of this tag space is the owner of the block
115device. I.e. the filesystem in most cases. The filesystem can use
116this extra space to tag sectors as they see fit. Because the tag
117space is limited, the block interface allows tagging bigger chunks by
118way of interleaving. This way, 8*16 bits of information can be
119attached to a typical 4KB filesystem block.
120
121This also means that applications such as fsck and mkfs will need
122access to manipulate the tags from user space. A passthrough
123interface for this is being worked on.
124
125
126----------------------------------------------------------------------
1274. BLOCK LAYER IMPLEMENTATION DETAILS
128
1294.1 BIO
130
131The data integrity patches add a new field to struct bio when
132CONFIG_BLK_DEV_INTEGRITY is enabled. bio->bi_integrity is a pointer
133to a struct bip which contains the bio integrity payload. Essentially
134a bip is a trimmed down struct bio which holds a bio_vec containing
135the integrity metadata and the required housekeeping information (bvec
136pool, vector count, etc.)
137
138A kernel subsystem can enable data integrity protection on a bio by
139calling bio_integrity_alloc(bio). This will allocate and attach the
140bip to the bio.
141
142Individual pages containing integrity metadata can subsequently be
143attached using bio_integrity_add_page().
144
145bio_free() will automatically free the bip.
146
147
1484.2 BLOCK DEVICE
149
150Because the format of the protection data is tied to the physical
151disk, each block device has been extended with a block integrity
152profile (struct blk_integrity). This optional profile is registered
153with the block layer using blk_integrity_register().
154
155The profile contains callback functions for generating and verifying
156the protection data, as well as getting and setting application tags.
157The profile also contains a few constants to aid in completing,
158merging and splitting the integrity metadata.
159
160Layered block devices will need to pick a profile that's appropriate
161for all subdevices. blk_integrity_compare() can help with that. DM
162and MD linear, RAID0 and RAID1 are currently supported. RAID4/5/6
163will require extra work due to the application tag.
164
165
166----------------------------------------------------------------------
1675.0 BLOCK LAYER INTEGRITY API
168
1695.1 NORMAL FILESYSTEM
170
171 The normal filesystem is unaware that the underlying block device
172 is capable of sending/receiving integrity metadata. The IMD will
173 be automatically generated by the block layer at submit_bio() time
174 in case of a WRITE. A READ request will cause the I/O integrity
175 to be verified upon completion.
176
177 IMD generation and verification can be toggled using the
178
179 /sys/block/<bdev>/integrity/write_generate
180
181 and
182
183 /sys/block/<bdev>/integrity/read_verify
184
185 flags.
186
187
1885.2 INTEGRITY-AWARE FILESYSTEM
189
190 A filesystem that is integrity-aware can prepare I/Os with IMD
191 attached. It can also use the application tag space if this is
192 supported by the block device.
193
194
195 int bdev_integrity_enabled(block_device, int rw);
196
197 bdev_integrity_enabled() will return 1 if the block device
198 supports integrity metadata transfer for the data direction
199 specified in 'rw'.
200
201 bdev_integrity_enabled() honors the write_generate and
202 read_verify flags in sysfs and will respond accordingly.
203
204
205 int bio_integrity_prep(bio);
206
207 To generate IMD for WRITE and to set up buffers for READ, the
208 filesystem must call bio_integrity_prep(bio).
209
210 Prior to calling this function, the bio data direction and start
211 sector must be set, and the bio should have all data pages
212 added. It is up to the caller to ensure that the bio does not
213 change while I/O is in progress.
214
215 bio_integrity_prep() should only be called if
216 bio_integrity_enabled() returned 1.
217
218
219 int bio_integrity_tag_size(bio);
220
221 If the filesystem wants to use the application tag space it will
222 first have to find out how much storage space is available.
223 Because tag space is generally limited (usually 2 bytes per
224 sector regardless of sector size), the integrity framework
225 supports interleaving the information between the sectors in an
226 I/O.
227
228 Filesystems can call bio_integrity_tag_size(bio) to find out how
229 many bytes of storage are available for that particular bio.
230
231 Another option is bdev_get_tag_size(block_device) which will
232 return the number of available bytes per hardware sector.
233
234
235 int bio_integrity_set_tag(bio, void *tag_buf, len);
236
237 After a successful return from bio_integrity_prep(),
238 bio_integrity_set_tag() can be used to attach an opaque tag
239 buffer to a bio. Obviously this only makes sense if the I/O is
240 a WRITE.
241
242
243 int bio_integrity_get_tag(bio, void *tag_buf, len);
244
245 Similarly, at READ I/O completion time the filesystem can
246 retrieve the tag buffer using bio_integrity_get_tag().
247
248
2496.3 PASSING EXISTING INTEGRITY METADATA
250
251 Filesystems that either generate their own integrity metadata or
252 are capable of transferring IMD from user space can use the
253 following calls:
254
255
256 struct bip * bio_integrity_alloc(bio, gfp_mask, nr_pages);
257
258 Allocates the bio integrity payload and hangs it off of the bio.
259 nr_pages indicate how many pages of protection data need to be
260 stored in the integrity bio_vec list (similar to bio_alloc()).
261
262 The integrity payload will be freed at bio_free() time.
263
264
265 int bio_integrity_add_page(bio, page, len, offset);
266
267 Attaches a page containing integrity metadata to an existing
268 bio. The bio must have an existing bip,
269 i.e. bio_integrity_alloc() must have been called. For a WRITE,
270 the integrity metadata in the pages must be in a format
271 understood by the target device with the notable exception that
272 the sector numbers will be remapped as the request traverses the
273 I/O stack. This implies that the pages added using this call
274 will be modified during I/O! The first reference tag in the
275 integrity metadata must have a value of bip->bip_sector.
276
277 Pages can be added using bio_integrity_add_page() as long as
278 there is room in the bip bio_vec array (nr_pages).
279
280 Upon completion of a READ operation, the attached pages will
281 contain the integrity metadata received from the storage device.
282 It is up to the receiver to process them and verify data
283 integrity upon completion.
284
285
2866.4 REGISTERING A BLOCK DEVICE AS CAPABLE OF EXCHANGING INTEGRITY
287 METADATA
288
289 To enable integrity exchange on a block device the gendisk must be
290 registered as capable:
291
292 int blk_integrity_register(gendisk, blk_integrity);
293
294 The blk_integrity struct is a template and should contain the
295 following:
296
297 static struct blk_integrity my_profile = {
298 .name = "STANDARDSBODY-TYPE-VARIANT-CSUM",
299 .generate_fn = my_generate_fn,
300 .verify_fn = my_verify_fn,
301 .get_tag_fn = my_get_tag_fn,
302 .set_tag_fn = my_set_tag_fn,
303 .tuple_size = sizeof(struct my_tuple_size),
304 .tag_size = <tag bytes per hw sector>,
305 };
306
307 'name' is a text string which will be visible in sysfs. This is
308 part of the userland API so chose it carefully and never change
309 it. The format is standards body-type-variant.
310 E.g. T10-DIF-TYPE1-IP or T13-EPP-0-CRC.
311
312 'generate_fn' generates appropriate integrity metadata (for WRITE).
313
314 'verify_fn' verifies that the data buffer matches the integrity
315 metadata.
316
317 'tuple_size' must be set to match the size of the integrity
318 metadata per sector. I.e. 8 for DIF and EPP.
319
320 'tag_size' must be set to identify how many bytes of tag space
321 are available per hardware sector. For DIF this is either 2 or
322 0 depending on the value of the Control Mode Page ATO bit.
323
324 See 6.2 for a description of get_tag_fn and set_tag_fn.
325
326----------------------------------------------------------------------
3272007-12-24 Martin K. Petersen <martin.petersen@oracle.com>
diff --git a/Documentation/ftrace.txt b/Documentation/ftrace.txt
index 13e4bf054c38..77d3faa1a611 100644
--- a/Documentation/ftrace.txt
+++ b/Documentation/ftrace.txt
@@ -2,8 +2,11 @@
2 ======================== 2 ========================
3 3
4Copyright 2008 Red Hat Inc. 4Copyright 2008 Red Hat Inc.
5Author: Steven Rostedt <srostedt@redhat.com> 5 Author: Steven Rostedt <srostedt@redhat.com>
6 License: The GNU Free Documentation License, Version 1.2
7Reviewers: Elias Oltmanns and Randy Dunlap
6 8
9Writen for: 2.6.26-rc8 linux-2.6-tip.git tip/tracing/ftrace branch
7 10
8Introduction 11Introduction
9------------ 12------------
@@ -46,7 +49,7 @@ of ftrace. Here is a list of some of the key files:
46 that is configured. 49 that is configured.
47 50
48 available_tracers : This holds the different types of tracers that 51 available_tracers : This holds the different types of tracers that
49 has been compiled into the kernel. The tracers 52 have been compiled into the kernel. The tracers
50 listed here can be configured by echoing in their 53 listed here can be configured by echoing in their
51 name into current_tracer. 54 name into current_tracer.
52 55
@@ -90,11 +93,13 @@ of ftrace. Here is a list of some of the key files:
90 trace_entries : This sets or displays the number of trace 93 trace_entries : This sets or displays the number of trace
91 entries each CPU buffer can hold. The tracer buffers 94 entries each CPU buffer can hold. The tracer buffers
92 are the same size for each CPU, so care must be 95 are the same size for each CPU, so care must be
93 taken when modifying the trace_entries. The number 96 taken when modifying the trace_entries. The trace
94 of actually entries will be the number given 97 buffers are allocated in pages (blocks of memory that
95 times the number of possible CPUS. The buffers 98 the kernel uses for allocation, usually 4 KB in size).
96 are saved as individual pages, and the actual entries 99 Since each entry is smaller than a page, if the last
97 will always be rounded up to entries per page. 100 allocated page has room for more entries than were
101 requested, the rest of the page is used to allocate
102 entries.
98 103
99 This can only be updated when the current_tracer 104 This can only be updated when the current_tracer
100 is set to "none". 105 is set to "none".
@@ -114,13 +119,13 @@ of ftrace. Here is a list of some of the key files:
114 in performance. This also has a side effect of 119 in performance. This also has a side effect of
115 enabling or disabling specific functions to be 120 enabling or disabling specific functions to be
116 traced. Echoing in names of functions into this 121 traced. Echoing in names of functions into this
117 file will limit the trace to only those files. 122 file will limit the trace to only these functions.
118 123
119 set_ftrace_notrace: This has the opposite effect that 124 set_ftrace_notrace: This has the opposite effect that
120 set_ftrace_filter has. Any function that is added 125 set_ftrace_filter has. Any function that is added
121 here will not be traced. If a function exists 126 here will not be traced. If a function exists
122 in both set_ftrace_filter and set_ftrace_notrace 127 in both set_ftrace_filter and set_ftrace_notrace,
123 the function will _not_ bet traced. 128 the function will _not_ be traced.
124 129
125 available_filter_functions : When a function is encountered the first 130 available_filter_functions : When a function is encountered the first
126 time by the dynamic tracer, it is recorded and 131 time by the dynamic tracer, it is recorded and
@@ -138,7 +143,7 @@ Here are the list of current tracers that can be configured.
138 143
139 ftrace - function tracer that uses mcount to trace all functions. 144 ftrace - function tracer that uses mcount to trace all functions.
140 It is possible to filter out which functions that are 145 It is possible to filter out which functions that are
141 traced when dynamic ftrace is configured in. 146 to be traced when dynamic ftrace is configured in.
142 147
143 sched_switch - traces the context switches between tasks. 148 sched_switch - traces the context switches between tasks.
144 149
@@ -297,13 +302,13 @@ explains which is which.
297 302
298The above is mostly meaningful for kernel developers. 303The above is mostly meaningful for kernel developers.
299 304
300 time: This differs from the trace output where as the trace output 305 time: This differs from the trace file output. The trace file output
301 contained a absolute timestamp. This timestamp is relative 306 included an absolute timestamp. The timestamp used by the
302 to the start of the first entry in the the trace. 307 latency_trace file is relative to the start of the trace.
303 308
304 delay: This is just to help catch your eye a bit better. And 309 delay: This is just to help catch your eye a bit better. And
305 needs to be fixed to be only relative to the same CPU. 310 needs to be fixed to be only relative to the same CPU.
306 The marks is determined by the difference between this 311 The marks are determined by the difference between this
307 current trace and the next trace. 312 current trace and the next trace.
308 '!' - greater than preempt_mark_thresh (default 100) 313 '!' - greater than preempt_mark_thresh (default 100)
309 '+' - greater than 1 microsecond 314 '+' - greater than 1 microsecond
@@ -322,13 +327,13 @@ output. To see what is available, simply cat the file:
322 print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \ 327 print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \
323 noblock nostacktrace nosched-tree 328 noblock nostacktrace nosched-tree
324 329
325To disable one of the options, echo in the option appended with "no". 330To disable one of the options, echo in the option prepended with "no".
326 331
327 echo noprint-parent > /debug/tracing/iter_ctrl 332 echo noprint-parent > /debug/tracing/iter_ctrl
328 333
329To enable an option, leave off the "no". 334To enable an option, leave off the "no".
330 335
331 echo sym-offest > /debug/tracing/iter_ctrl 336 echo sym-offset > /debug/tracing/iter_ctrl
332 337
333Here are the available options: 338Here are the available options:
334 339
@@ -344,7 +349,7 @@ Here are the available options:
344 349
345 sym-offset - Display not only the function name, but also the offset 350 sym-offset - Display not only the function name, but also the offset
346 in the function. For example, instead of seeing just 351 in the function. For example, instead of seeing just
347 "ktime_get" you will see "ktime_get+0xb/0x20" 352 "ktime_get", you will see "ktime_get+0xb/0x20".
348 353
349 sym-offset: 354 sym-offset:
350 bash-4000 [01] 1477.606694: simple_strtoul+0x6/0xa0 355 bash-4000 [01] 1477.606694: simple_strtoul+0x6/0xa0
@@ -364,7 +369,7 @@ Here are the available options:
364 user applications that can translate the raw numbers better than 369 user applications that can translate the raw numbers better than
365 having it done in the kernel. 370 having it done in the kernel.
366 371
367 hex - similar to raw, but the numbers will be in a hexadecimal format. 372 hex - Similar to raw, but the numbers will be in a hexadecimal format.
368 373
369 bin - This will print out the formats in raw binary. 374 bin - This will print out the formats in raw binary.
370 375
@@ -381,7 +386,7 @@ sched_switch
381------------ 386------------
382 387
383This tracer simply records schedule switches. Here's an example 388This tracer simply records schedule switches. Here's an example
384on how to implement it. 389of how to use it.
385 390
386 # echo sched_switch > /debug/tracing/current_tracer 391 # echo sched_switch > /debug/tracing/current_tracer
387 # echo 1 > /debug/tracing/tracing_enabled 392 # echo 1 > /debug/tracing/tracing_enabled
@@ -470,7 +475,7 @@ interrupt from triggering or the mouse interrupt from letting the
470kernel know of a new mouse event. The result is a latency with the 475kernel know of a new mouse event. The result is a latency with the
471reaction time. 476reaction time.
472 477
473The irqsoff tracer tracks the time interrupts are disabled and when 478The irqsoff tracer tracks the time interrupts are disabled to the time
474they are re-enabled. When a new maximum latency is hit, it saves off 479they are re-enabled. When a new maximum latency is hit, it saves off
475the trace so that it may be retrieved at a later time. Every time a 480the trace so that it may be retrieved at a later time. Every time a
476new maximum in reached, the old saved trace is discarded and the new 481new maximum in reached, the old saved trace is discarded and the new
@@ -519,7 +524,7 @@ The difference between the 6 and the displayed timestamp 7us is
519because the clock must have incremented between the time of recording 524because the clock must have incremented between the time of recording
520the max latency and recording the function that had that latency. 525the max latency and recording the function that had that latency.
521 526
522Note the above had ftrace_enabled not set. If we set the ftrace_enabled 527Note the above had ftrace_enabled not set. If we set the ftrace_enabled,
523we get a much larger output: 528we get a much larger output:
524 529
525# tracer: irqsoff 530# tracer: irqsoff
@@ -570,21 +575,21 @@ vim:ft=help
570 575
571 576
572Here we traced a 50 microsecond latency. But we also see all the 577Here we traced a 50 microsecond latency. But we also see all the
573functions that were called during that time. Note that enabling 578functions that were called during that time. Note that by enabling
574function tracing we endure an added overhead. This overhead may 579function tracing, we endure an added overhead. This overhead may
575extend the latency times. But never the less, this trace has provided 580extend the latency times. But nevertheless, this trace has provided
576some very helpful debugging. 581some very helpful debugging information.
577 582
578 583
579preemptoff 584preemptoff
580---------- 585----------
581 586
582When preemption is disabled we may be able to receive interrupts but 587When preemption is disabled, we may be able to receive interrupts but
583the task can not be preempted and a higher priority task must wait 588the task cannot be preempted and a higher priority task must wait
584for preemption to be enabled again before it can preempt a lower 589for preemption to be enabled again before it can preempt a lower
585priority task. 590priority task.
586 591
587The preemptoff tracer traces the places that disables preemption. 592The preemptoff tracer traces the places that disable preemption.
588Like the irqsoff, it records the maximum latency that preemption 593Like the irqsoff, it records the maximum latency that preemption
589was disabled. The control of preemptoff is much like the irqsoff. 594was disabled. The control of preemptoff is much like the irqsoff.
590 595
@@ -696,7 +701,7 @@ Notice that the __do_softirq when called doesn't have a preempt_count.
696It may seem that we missed a preempt enabled. What really happened 701It may seem that we missed a preempt enabled. What really happened
697is that the preempt count is held on the threads stack and we 702is that the preempt count is held on the threads stack and we
698switched to the softirq stack (4K stacks in effect). The code 703switched to the softirq stack (4K stacks in effect). The code
699does not copy the preempt count, but because interrupts are disabled 704does not copy the preempt count, but because interrupts are disabled,
700we don't need to worry about it. Having a tracer like this is good 705we don't need to worry about it. Having a tracer like this is good
701to let people know what really happens inside the kernel. 706to let people know what really happens inside the kernel.
702 707
@@ -732,7 +737,7 @@ To record this time, use the preemptirqsoff tracer.
732 737
733Again, using this trace is much like the irqsoff and preemptoff tracers. 738Again, using this trace is much like the irqsoff and preemptoff tracers.
734 739
735 # echo preemptoff > /debug/tracing/current_tracer 740 # echo preemptirqsoff > /debug/tracing/current_tracer
736 # echo 0 > /debug/tracing/tracing_max_latency 741 # echo 0 > /debug/tracing/tracing_max_latency
737 # echo 1 > /debug/tracing/tracing_enabled 742 # echo 1 > /debug/tracing/tracing_enabled
738 # ls -ltr 743 # ls -ltr
@@ -862,9 +867,9 @@ This is a very interesting trace. It started with the preemption of
862the ls task. We see that the task had the "need_resched" bit set 867the ls task. We see that the task had the "need_resched" bit set
863with the 'N' in the trace. Interrupts are disabled in the spin_lock 868with the 'N' in the trace. Interrupts are disabled in the spin_lock
864and the trace started. We see that a schedule took place to run 869and the trace started. We see that a schedule took place to run
865sshd. When the interrupts were enabled we took an interrupt. 870sshd. When the interrupts were enabled, we took an interrupt.
866On return of the interrupt the softirq ran. We took another interrupt 871On return from the interrupt handler, the softirq ran. We took another
867while running the softirq as we see with the capital 'H'. 872interrupt while running the softirq as we see with the capital 'H'.
868 873
869 874
870wakeup 875wakeup
@@ -876,9 +881,9 @@ time it executes. This is also known as "schedule latency".
876I stress the point that this is about RT tasks. It is also important 881I stress the point that this is about RT tasks. It is also important
877to know the scheduling latency of non-RT tasks, but the average 882to know the scheduling latency of non-RT tasks, but the average
878schedule latency is better for non-RT tasks. Tools like 883schedule latency is better for non-RT tasks. Tools like
879LatencyTop is more appropriate for such measurements. 884LatencyTop are more appropriate for such measurements.
880 885
881Real-Time environments is interested in the worst case latency. 886Real-Time environments are interested in the worst case latency.
882That is the longest latency it takes for something to happen, and 887That is the longest latency it takes for something to happen, and
883not the average. We can have a very fast scheduler that may only 888not the average. We can have a very fast scheduler that may only
884have a large latency once in a while, but that would not work well 889have a large latency once in a while, but that would not work well
@@ -889,8 +894,8 @@ tasks that are unpredictable will overwrite the worst case latency
889of RT tasks. 894of RT tasks.
890 895
891Since this tracer only deals with RT tasks, we will run this slightly 896Since this tracer only deals with RT tasks, we will run this slightly
892different than we did with the previous tracers. Instead of performing 897differently than we did with the previous tracers. Instead of performing
893an 'ls' we will run 'sleep 1' under 'chrt' which changes the 898an 'ls', we will run 'sleep 1' under 'chrt' which changes the
894priority of the task. 899priority of the task.
895 900
896 # echo wakeup > /debug/tracing/current_tracer 901 # echo wakeup > /debug/tracing/current_tracer
@@ -924,9 +929,9 @@ wakeup latency trace v1.1.5 on 2.6.26-rc8
924vim:ft=help 929vim:ft=help
925 930
926 931
927Running this on an idle system we see that it only took 4 microseconds 932Running this on an idle system, we see that it only took 4 microseconds
928to perform the task switch. Note, since the trace marker in the 933to perform the task switch. Note, since the trace marker in the
929schedule is before the actual "switch" we stop the tracing when 934schedule is before the actual "switch", we stop the tracing when
930the recorded task is about to schedule in. This may change if 935the recorded task is about to schedule in. This may change if
931we add a new marker at the end of the scheduler. 936we add a new marker at the end of the scheduler.
932 937
@@ -992,12 +997,15 @@ ksoftirq-7 1d..4 50us : schedule (__cond_resched)
992 997
993The interrupt went off while running ksoftirqd. This task runs at 998The interrupt went off while running ksoftirqd. This task runs at
994SCHED_OTHER. Why didn't we see the 'N' set early? This may be 999SCHED_OTHER. Why didn't we see the 'N' set early? This may be
995a harmless bug with x86_32 and 4K stacks. The need_reched() function 1000a harmless bug with x86_32 and 4K stacks. On x86_32 with 4K stacks
996that tests if we need to reschedule looks on the actual stack. 1001configured, the interrupt and softirq runs with their own stack.
997Where as the setting of the NEED_RESCHED bit happens on the 1002Some information is held on the top of the task's stack (need_resched
998task's stack. But because we are in a hard interrupt, the test 1003and preempt_count are both stored there). The setting of the NEED_RESCHED
999is with the interrupts stack which has that to be false. We don't 1004bit is done directly to the task's stack, but the reading of the
1000see the 'N' until we switch back to the task's stack. 1005NEED_RESCHED is done by looking at the current stack, which in this case
1006is the stack for the hard interrupt. This hides the fact that NEED_RESCHED
1007has been set. We don't see the 'N' until we switch back to the task's
1008assigned stack.
1001 1009
1002ftrace 1010ftrace
1003------ 1011------
@@ -1067,10 +1075,10 @@ this works is the mcount function call (placed at the start of
1067every kernel function, produced by the -pg switch in gcc), starts 1075every kernel function, produced by the -pg switch in gcc), starts
1068of pointing to a simple return. 1076of pointing to a simple return.
1069 1077
1070When dynamic ftrace is initialized, it calls kstop_machine to make it 1078When dynamic ftrace is initialized, it calls kstop_machine to make
1071act like a uniprocessor so that it can freely modify code without 1079the machine act like a uniprocessor so that it can freely modify code
1072worrying about other processors executing that same code. At 1080without worrying about other processors executing that same code. At
1073initialization, the mcount calls are change to call a "record_ip" 1081initialization, the mcount calls are changed to call a "record_ip"
1074function. After this, the first time a kernel function is called, 1082function. After this, the first time a kernel function is called,
1075it has the calling address saved in a hash table. 1083it has the calling address saved in a hash table.
1076 1084
@@ -1085,8 +1093,8 @@ traced, is that we can now selectively choose which functions we
1085want to trace and which ones we want the mcount calls to remain as 1093want to trace and which ones we want the mcount calls to remain as
1086nops. 1094nops.
1087 1095
1088Two files that contain to the enabling and disabling of recorded 1096Two files are used, one for enabling and one for disabling the tracing
1089functions are: 1097of recorded functions. They are:
1090 1098
1091 set_ftrace_filter 1099 set_ftrace_filter
1092 1100
@@ -1094,7 +1102,7 @@ and
1094 1102
1095 set_ftrace_notrace 1103 set_ftrace_notrace
1096 1104
1097A list of available functions that you can add to this files is listed 1105A list of available functions that you can add to these files is listed
1098in: 1106in:
1099 1107
1100 available_filter_functions 1108 available_filter_functions
@@ -1133,9 +1141,9 @@ sys_nanosleep
1133 1141
1134 1142
1135Perhaps this isn't enough. The filters also allow simple wild cards. 1143Perhaps this isn't enough. The filters also allow simple wild cards.
1136Only the following is currently available 1144Only the following are currently available
1137 1145
1138 <match>* - will match functions that begins with <match> 1146 <match>* - will match functions that begin with <match>
1139 *<match> - will match functions that end with <match> 1147 *<match> - will match functions that end with <match>
1140 *<match>* - will match functions that have <match> in it 1148 *<match>* - will match functions that have <match> in it
1141 1149
@@ -1187,7 +1195,7 @@ This is because the '>' and '>>' act just like they do in bash.
1187To rewrite the filters, use '>' 1195To rewrite the filters, use '>'
1188To append to the filters, use '>>' 1196To append to the filters, use '>>'
1189 1197
1190To clear out a filter so that all functions will be recorded again. 1198To clear out a filter so that all functions will be recorded again:
1191 1199
1192 # echo > /debug/tracing/set_ftrace_filter 1200 # echo > /debug/tracing/set_ftrace_filter
1193 # cat /debug/tracing/set_ftrace_filter 1201 # cat /debug/tracing/set_ftrace_filter
@@ -1246,8 +1254,8 @@ ftraced
1246 1254
1247As mentioned above, when dynamic ftrace is configured in, a kernel 1255As mentioned above, when dynamic ftrace is configured in, a kernel
1248thread wakes up once a second and checks to see if there are mcount 1256thread wakes up once a second and checks to see if there are mcount
1249calls that need to be converted into nops. If there is not, then 1257calls that need to be converted into nops. If there are not any, then
1250it simply goes back to sleep. But if there is, it will call 1258it simply goes back to sleep. But if there are some, it will call
1251kstop_machine to convert the calls to nops. 1259kstop_machine to convert the calls to nops.
1252 1260
1253There may be a case that you do not want this added latency. 1261There may be a case that you do not want this added latency.
@@ -1262,8 +1270,8 @@ mcount calls to nops. Remember that there's a large overhead
1262to calling mcount. Without this kernel thread, that overhead will 1270to calling mcount. Without this kernel thread, that overhead will
1263exist. 1271exist.
1264 1272
1265Any write to the ftraced_enabled file will cause the kstop_machine 1273If there are recorded calls to mcount, any write to the ftraced_enabled
1266to run if there are recorded calls to mcount. This means that a 1274file will cause the kstop_machine to run. This means that a
1267user can manually perform the updates when they want to by simply 1275user can manually perform the updates when they want to by simply
1268echoing a '0' into the ftraced_enabled file. 1276echoing a '0' into the ftraced_enabled file.
1269 1277
@@ -1315,7 +1323,7 @@ trace entries
1315 1323
1316Having too much or not enough data can be troublesome in diagnosing 1324Having too much or not enough data can be troublesome in diagnosing
1317some issue in the kernel. The file trace_entries is used to modify 1325some issue in the kernel. The file trace_entries is used to modify
1318the size of the internal trace buffers. The numbers listed 1326the size of the internal trace buffers. The number listed
1319is the number of entries that can be recorded per CPU. To know 1327is the number of entries that can be recorded per CPU. To know
1320the full size, multiply the number of possible CPUS with the 1328the full size, multiply the number of possible CPUS with the
1321number of entries. 1329number of entries.
@@ -1323,7 +1331,7 @@ number of entries.
1323 # cat /debug/tracing/trace_entries 1331 # cat /debug/tracing/trace_entries
132465620 133265620
1325 1333
1326Note, to modify this you must have tracing fulling disabled. To do that, 1334Note, to modify this, you must have tracing completely disabled. To do that,
1327echo "none" into the current_tracer. 1335echo "none" into the current_tracer.
1328 1336
1329 # echo none > /debug/tracing/current_tracer 1337 # echo none > /debug/tracing/current_tracer
@@ -1344,7 +1352,7 @@ it will add them.
1344This shows us that 85 entries can fit on a single page. 1352This shows us that 85 entries can fit on a single page.
1345 1353
1346The number of pages that will be allocated is a percentage of available 1354The number of pages that will be allocated is a percentage of available
1347memory. Allocating too much will produces an error. 1355memory. Allocating too much will produce an error.
1348 1356
1349 # echo 1000000000000 > /debug/tracing/trace_entries 1357 # echo 1000000000000 > /debug/tracing/trace_entries
1350-bash: echo: write error: Cannot allocate memory 1358-bash: echo: write error: Cannot allocate memory
diff --git a/Documentation/ioctl-number.txt b/Documentation/ioctl-number.txt
index 240ce7a56c40..3bb5f466a90d 100644
--- a/Documentation/ioctl-number.txt
+++ b/Documentation/ioctl-number.txt
@@ -117,6 +117,7 @@ Code Seq# Include File Comments
117 <mailto:natalia@nikhefk.nikhef.nl> 117 <mailto:natalia@nikhefk.nikhef.nl>
118'c' 00-7F linux/comstats.h conflict! 118'c' 00-7F linux/comstats.h conflict!
119'c' 00-7F linux/coda.h conflict! 119'c' 00-7F linux/coda.h conflict!
120'c' 80-9F asm-s390/chsc.h
120'd' 00-FF linux/char/drm/drm/h conflict! 121'd' 00-FF linux/char/drm/drm/h conflict!
121'd' 00-DF linux/video_decoder.h conflict! 122'd' 00-DF linux/video_decoder.h conflict!
122'd' F0-FF linux/digi1.h 123'd' F0-FF linux/digi1.h
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 0bbee38acd26..72aff61e7315 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -753,8 +753,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
753 753
754 [Multiple options for each card instance] 754 [Multiple options for each card instance]
755 model - force the model name 755 model - force the model name
756 position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) 756 position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF)
757 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) 757 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots)
758 bdl_pos_adj - Specifies the DMA IRQ timing delay in samples.
759 Passing -1 will make the driver to choose the appropriate
760 value based on the controller chip.
758 761
759 [Single (global) options] 762 [Single (global) options]
760 single_cmd - Use single immediate commands to communicate with 763 single_cmd - Use single immediate commands to communicate with
@@ -845,7 +848,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
845 ALC269 848 ALC269
846 basic Basic preset 849 basic Basic preset
847 850
848 ALC662 851 ALC662/663
849 3stack-dig 3-stack (2-channel) with SPDIF 852 3stack-dig 3-stack (2-channel) with SPDIF
850 3stack-6ch 3-stack (6-channel) 853 3stack-6ch 3-stack (6-channel)
851 3stack-6ch-dig 3-stack (6-channel) with SPDIF 854 3stack-6ch-dig 3-stack (6-channel) with SPDIF
@@ -853,6 +856,10 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
853 lenovo-101e Lenovo laptop 856 lenovo-101e Lenovo laptop
854 eeepc-p701 ASUS Eeepc P701 857 eeepc-p701 ASUS Eeepc P701
855 eeepc-ep20 ASUS Eeepc EP20 858 eeepc-ep20 ASUS Eeepc EP20
859 m51va ASUS M51VA
860 g71v ASUS G71V
861 h13 ASUS H13
862 g50v ASUS G50V
856 auto auto-config reading BIOS (default) 863 auto auto-config reading BIOS (default)
857 864
858 ALC882/885 865 ALC882/885
@@ -1091,7 +1098,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1091 This occurs when the access to non-existing or non-working codec slot 1098 This occurs when the access to non-existing or non-working codec slot
1092 (likely a modem one) causes a stall of the communication via HD-audio 1099 (likely a modem one) causes a stall of the communication via HD-audio
1093 bus. You can see which codec slots are probed by enabling 1100 bus. You can see which codec slots are probed by enabling
1094 CONFIG_SND_DEBUG_DETECT, or simply from the file name of the codec 1101 CONFIG_SND_DEBUG_VERBOSE, or simply from the file name of the codec
1095 proc files. Then limit the slots to probe by probe_mask option. 1102 proc files. Then limit the slots to probe by probe_mask option.
1096 For example, probe_mask=1 means to probe only the first slot, and 1103 For example, probe_mask=1 means to probe only the first slot, and
1097 probe_mask=4 means only the third slot. 1104 probe_mask=4 means only the third slot.
@@ -2267,6 +2274,10 @@ case above again, the first two slots are already reserved. If any
2267other driver (e.g. snd-usb-audio) is loaded before snd-interwave or 2274other driver (e.g. snd-usb-audio) is loaded before snd-interwave or
2268snd-ens1371, it will be assigned to the third or later slot. 2275snd-ens1371, it will be assigned to the third or later slot.
2269 2276
2277When a module name is given with '!', the slot will be given for any
2278modules but that name. For example, "slots=!snd-pcsp" will reserve
2279the first slot for any modules but snd-pcsp.
2280
2270 2281
2271ALSA PCM devices to OSS devices mapping 2282ALSA PCM devices to OSS devices mapping
2272======================================= 2283=======================================
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index b03df4d4795c..e13c4e67029f 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -6127,8 +6127,8 @@ struct _snd_pcm_runtime {
6127 6127
6128 <para> 6128 <para>
6129 <function>snd_printdd()</function> is compiled in only when 6129 <function>snd_printdd()</function> is compiled in only when
6130 <constant>CONFIG_SND_DEBUG_DETECT</constant> is set. Please note 6130 <constant>CONFIG_SND_DEBUG_VERBOSE</constant> is set. Please note
6131 that <constant>DEBUG_DETECT</constant> is not set as default 6131 that <constant>CONFIG_SND_DEBUG_VERBOSE</constant> is not set as default
6132 even if you configure the alsa-driver with 6132 even if you configure the alsa-driver with
6133 <option>--with-debug=full</option> option. You need to give 6133 <option>--with-debug=full</option> option. You need to give
6134 explicitly <option>--with-debug=detect</option> option instead. 6134 explicitly <option>--with-debug=detect</option> option instead.