diff options
author | Jens Axboe <axboe@kernel.dk> | 2013-07-02 02:31:48 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2013-07-02 02:31:48 -0400 |
commit | 5f0e5afa0de4522abb3ea7d1369039b94e740ec5 (patch) | |
tree | 6a5be3db9ecfed8ef2150c6146f6d1e0d658ac8b /Documentation | |
parent | d752b2696072ed52fd5afab08b601e2220a3b87e (diff) | |
parent | 9e895ace5d82df8929b16f58e9f515f6d54ab82d (diff) |
Merge tag 'v3.10-rc7' into for-3.11/drivers
Linux 3.10-rc7
Pull this in early to avoid doing it with the bcache merge,
since there are a number of changes to bcache between my old
base (3.10-rc1) and the new pull request.
Diffstat (limited to 'Documentation')
26 files changed, 489 insertions, 74 deletions
diff --git a/Documentation/DocBook/media/v4l/dev-codec.xml b/Documentation/DocBook/media/v4l/dev-codec.xml index dca0ecd54dc6..ff44c16fc080 100644 --- a/Documentation/DocBook/media/v4l/dev-codec.xml +++ b/Documentation/DocBook/media/v4l/dev-codec.xml | |||
@@ -1,18 +1,27 @@ | |||
1 | <title>Codec Interface</title> | 1 | <title>Codec Interface</title> |
2 | 2 | ||
3 | <note> | 3 | <para>A V4L2 codec can compress, decompress, transform, or otherwise |
4 | <title>Suspended</title> | 4 | convert video data from one format into another format, in memory. Typically |
5 | such devices are memory-to-memory devices (i.e. devices with the | ||
6 | <constant>V4L2_CAP_VIDEO_M2M</constant> or <constant>V4L2_CAP_VIDEO_M2M_MPLANE</constant> | ||
7 | capability set). | ||
8 | </para> | ||
5 | 9 | ||
6 | <para>This interface has been be suspended from the V4L2 API | 10 | <para>A memory-to-memory video node acts just like a normal video node, but it |
7 | implemented in Linux 2.6 until we have more experience with codec | 11 | supports both output (sending frames from memory to the codec hardware) and |
8 | device interfaces.</para> | 12 | capture (receiving the processed frames from the codec hardware into memory) |
9 | </note> | 13 | stream I/O. An application will have to setup the stream |
14 | I/O for both sides and finally call &VIDIOC-STREAMON; for both capture and output | ||
15 | to start the codec.</para> | ||
10 | 16 | ||
11 | <para>A V4L2 codec can compress, decompress, transform, or otherwise | 17 | <para>Video compression codecs use the MPEG controls to setup their codec parameters |
12 | convert video data from one format into another format, in memory. | 18 | (note that the MPEG controls actually support many more codecs than just MPEG). |
13 | Applications send data to be converted to the driver through a | 19 | See <xref linkend="mpeg-controls"></xref>.</para> |
14 | &func-write; call, and receive the converted data through a | ||
15 | &func-read; call. For efficiency a driver may also support streaming | ||
16 | I/O.</para> | ||
17 | 20 | ||
18 | <para>[to do]</para> | 21 | <para>Memory-to-memory devices can often be used as a shared resource: you can |
22 | open the video node multiple times, each application setting up their own codec properties | ||
23 | that are local to the file handle, and each can use it independently from the others. | ||
24 | The driver will arbitrate access to the codec and reprogram it whenever another file | ||
25 | handler gets access. This is different from the usual video node behavior where the video properties | ||
26 | are global to the device (i.e. changing something through one file handle is visible | ||
27 | through another file handle).</para> | ||
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml index bfc93cdcf696..bfe823dd0f31 100644 --- a/Documentation/DocBook/media/v4l/v4l2.xml +++ b/Documentation/DocBook/media/v4l/v4l2.xml | |||
@@ -493,7 +493,7 @@ and discussions on the V4L mailing list.</revremark> | |||
493 | </partinfo> | 493 | </partinfo> |
494 | 494 | ||
495 | <title>Video for Linux Two API Specification</title> | 495 | <title>Video for Linux Two API Specification</title> |
496 | <subtitle>Revision 3.9</subtitle> | 496 | <subtitle>Revision 3.10</subtitle> |
497 | 497 | ||
498 | <chapter id="common"> | 498 | <chapter id="common"> |
499 | &sub-common; | 499 | &sub-common; |
diff --git a/Documentation/bcache.txt b/Documentation/bcache.txt index 77db8809bd96..b3a7e7d384f6 100644 --- a/Documentation/bcache.txt +++ b/Documentation/bcache.txt | |||
@@ -319,7 +319,10 @@ cache<0..n> | |||
319 | Symlink to each of the cache devices comprising this cache set. | 319 | Symlink to each of the cache devices comprising this cache set. |
320 | 320 | ||
321 | cache_available_percent | 321 | cache_available_percent |
322 | Percentage of cache device free. | 322 | Percentage of cache device which doesn't contain dirty data, and could |
323 | potentially be used for writeback. This doesn't mean this space isn't used | ||
324 | for clean cached data; the unused statistic (in priority_stats) is typically | ||
325 | much lower. | ||
323 | 326 | ||
324 | clear_stats | 327 | clear_stats |
325 | Clears the statistics associated with this cache | 328 | Clears the statistics associated with this cache |
@@ -423,8 +426,11 @@ nbuckets | |||
423 | Total buckets in this cache | 426 | Total buckets in this cache |
424 | 427 | ||
425 | priority_stats | 428 | priority_stats |
426 | Statistics about how recently data in the cache has been accessed. This can | 429 | Statistics about how recently data in the cache has been accessed. |
427 | reveal your working set size. | 430 | This can reveal your working set size. Unused is the percentage of |
431 | the cache that doesn't contain any data. Metadata is bcache's | ||
432 | metadata overhead. Average is the average priority of cache buckets. | ||
433 | Next is a list of quantiles with the priority threshold of each. | ||
428 | 434 | ||
429 | written | 435 | written |
430 | Sum of all data that has been written to the cache; comparison with | 436 | Sum of all data that has been written to the cache; comparison with |
diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 08f01e79c41a..b9015912bca6 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt | |||
@@ -498,12 +498,8 @@ Your cooperation is appreciated. | |||
498 | 498 | ||
499 | Each device type has 5 bits (32 minors). | 499 | Each device type has 5 bits (32 minors). |
500 | 500 | ||
501 | 13 block 8-bit MFM/RLL/IDE controller | 501 | 13 block Previously used for the XT disk (/dev/xdN) |
502 | 0 = /dev/xda First XT disk whole disk | 502 | Deleted in kernel v3.9. |
503 | 64 = /dev/xdb Second XT disk whole disk | ||
504 | |||
505 | Partitions are handled in the same way as IDE disks | ||
506 | (see major number 3). | ||
507 | 503 | ||
508 | 14 char Open Sound System (OSS) | 504 | 14 char Open Sound System (OSS) |
509 | 0 = /dev/mixer Mixer control | 505 | 0 = /dev/mixer Mixer control |
diff --git a/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt b/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt index 3f62adfb3e0b..de9f6b78ee51 100644 --- a/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt +++ b/Documentation/devicetree/bindings/media/exynos-fimc-lite.txt | |||
@@ -2,7 +2,7 @@ Exynos4x12/Exynos5 SoC series camera host interface (FIMC-LITE) | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be "samsung,exynos4212-fimc" for Exynos4212 and | 5 | - compatible : should be "samsung,exynos4212-fimc-lite" for Exynos4212 and |
6 | Exynos4412 SoCs; | 6 | Exynos4412 SoCs; |
7 | - reg : physical base address and size of the device memory mapped | 7 | - reg : physical base address and size of the device memory mapped |
8 | registers; | 8 | registers; |
diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 44afa0e5057d..4ff65047bb9a 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt | |||
@@ -4,7 +4,7 @@ Required properties: | |||
4 | - compatible: Should be "cdns,[<chip>-]{macb|gem}" | 4 | - compatible: Should be "cdns,[<chip>-]{macb|gem}" |
5 | Use "cdns,at91sam9260-macb" Atmel at91sam9260 and at91sam9263 SoCs. | 5 | Use "cdns,at91sam9260-macb" Atmel at91sam9260 and at91sam9263 SoCs. |
6 | Use "cdns,at32ap7000-macb" for other 10/100 usage or use the generic form: "cdns,macb". | 6 | Use "cdns,at32ap7000-macb" for other 10/100 usage or use the generic form: "cdns,macb". |
7 | Use "cnds,pc302-gem" for Picochip picoXcell pc302 and later devices based on | 7 | Use "cdns,pc302-gem" for Picochip picoXcell pc302 and later devices based on |
8 | the Cadence GEM, or the generic form: "cdns,gem". | 8 | the Cadence GEM, or the generic form: "cdns,gem". |
9 | - reg: Address and length of the register set for the device | 9 | - reg: Address and length of the register set for the device |
10 | - interrupts: Should contain macb interrupt | 10 | - interrupts: Should contain macb interrupt |
diff --git a/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt b/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt index 2a3feabd3b22..34c1505774bf 100644 --- a/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt +++ b/Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Atmel AT91RM9200 Real Time Clock | 1 | Atmel AT91RM9200 Real Time Clock |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be: "atmel,at91rm9200-rtc" | 4 | - compatible: should be: "atmel,at91rm9200-rtc" or "atmel,at91sam9x5-rtc" |
5 | - reg: physical base address of the controller and length of memory mapped | 5 | - reg: physical base address of the controller and length of memory mapped |
6 | region. | 6 | region. |
7 | - interrupts: rtc alarm/event interrupt | 7 | - interrupts: rtc alarm/event interrupt |
diff --git a/Documentation/devicetree/bindings/drm/exynos/hdmi.txt b/Documentation/devicetree/bindings/video/exynos_hdmi.txt index 589edee37394..589edee37394 100644 --- a/Documentation/devicetree/bindings/drm/exynos/hdmi.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt | |||
diff --git a/Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt b/Documentation/devicetree/bindings/video/exynos_hdmiddc.txt index fa166d945809..fa166d945809 100644 --- a/Documentation/devicetree/bindings/drm/exynos/hdmiddc.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmiddc.txt | |||
diff --git a/Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt b/Documentation/devicetree/bindings/video/exynos_hdmiphy.txt index 858f4f9b902f..858f4f9b902f 100644 --- a/Documentation/devicetree/bindings/drm/exynos/hdmiphy.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmiphy.txt | |||
diff --git a/Documentation/devicetree/bindings/drm/exynos/mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 9b2ea0343566..9b2ea0343566 100644 --- a/Documentation/devicetree/bindings/drm/exynos/mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt | |||
diff --git a/Documentation/devicetree/bindings/video/simple-framebuffer.txt b/Documentation/devicetree/bindings/video/simple-framebuffer.txt new file mode 100644 index 000000000000..3ea460583111 --- /dev/null +++ b/Documentation/devicetree/bindings/video/simple-framebuffer.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | Simple Framebuffer | ||
2 | |||
3 | A simple frame-buffer describes a raw memory region that may be rendered to, | ||
4 | with the assumption that the display hardware has already been set up to scan | ||
5 | out from that buffer. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: "simple-framebuffer" | ||
9 | - reg: Should contain the location and size of the framebuffer memory. | ||
10 | - width: The width of the framebuffer in pixels. | ||
11 | - height: The height of the framebuffer in pixels. | ||
12 | - stride: The number of bytes in each line of the framebuffer. | ||
13 | - format: The format of the framebuffer surface. Valid values are: | ||
14 | - r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b). | ||
15 | |||
16 | Example: | ||
17 | |||
18 | framebuffer { | ||
19 | compatible = "simple-framebuffer"; | ||
20 | reg = <0x1d385000 (1600 * 1200 * 2)>; | ||
21 | width = <1600>; | ||
22 | height = <1200>; | ||
23 | stride = <(1600 * 2)>; | ||
24 | format = "r5g6b5"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/usage-model.txt b/Documentation/devicetree/usage-model.txt index ef9d06c9f8fd..0efedaad5165 100644 --- a/Documentation/devicetree/usage-model.txt +++ b/Documentation/devicetree/usage-model.txt | |||
@@ -191,9 +191,11 @@ Linux it will look something like this: | |||
191 | }; | 191 | }; |
192 | 192 | ||
193 | The bootargs property contains the kernel arguments, and the initrd-* | 193 | The bootargs property contains the kernel arguments, and the initrd-* |
194 | properties define the address and size of an initrd blob. The | 194 | properties define the address and size of an initrd blob. Note that |
195 | chosen node may also optionally contain an arbitrary number of | 195 | initrd-end is the first address after the initrd image, so this doesn't |
196 | additional properties for platform-specific configuration data. | 196 | match the usual semantic of struct resource. The chosen node may also |
197 | optionally contain an arbitrary number of additional properties for | ||
198 | platform-specific configuration data. | ||
197 | 199 | ||
198 | During early boot, the architecture setup code calls of_scan_flat_dt() | 200 | During early boot, the architecture setup code calls of_scan_flat_dt() |
199 | several times with different helper callbacks to parse device tree | 201 | several times with different helper callbacks to parse device tree |
diff --git a/Documentation/dmatest.txt b/Documentation/dmatest.txt index 279ac0a8c5b1..132a094c7bc3 100644 --- a/Documentation/dmatest.txt +++ b/Documentation/dmatest.txt | |||
@@ -34,7 +34,7 @@ command: | |||
34 | After a while you will start to get messages about current status or error like | 34 | After a while you will start to get messages about current status or error like |
35 | in the original code. | 35 | in the original code. |
36 | 36 | ||
37 | Note that running a new test will stop any in progress test. | 37 | Note that running a new test will not stop any in progress test. |
38 | 38 | ||
39 | The following command should return actual state of the test. | 39 | The following command should return actual state of the test. |
40 | % cat /sys/kernel/debug/dmatest/run | 40 | % cat /sys/kernel/debug/dmatest/run |
@@ -52,8 +52,8 @@ To wait for test done the user may perform a busy loop that checks the state. | |||
52 | 52 | ||
53 | The module parameters that is supplied to the kernel command line will be used | 53 | The module parameters that is supplied to the kernel command line will be used |
54 | for the first performed test. After user gets a control, the test could be | 54 | for the first performed test. After user gets a control, the test could be |
55 | interrupted or re-run with same or different parameters. For the details see | 55 | re-run with the same or different parameters. For the details see the above |
56 | the above section "Part 2 - When dmatest is built as a module..." | 56 | section "Part 2 - When dmatest is built as a module..." |
57 | 57 | ||
58 | In both cases the module parameters are used as initial values for the test case. | 58 | In both cases the module parameters are used as initial values for the test case. |
59 | You always could check them at run-time by running | 59 | You always could check them at run-time by running |
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index 3e4b3dd1e046..83577f0232a0 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt | |||
@@ -33,6 +33,9 @@ When mounting an XFS filesystem, the following options are accepted. | |||
33 | removing extended attributes) the on-disk superblock feature | 33 | removing extended attributes) the on-disk superblock feature |
34 | bit field will be updated to reflect this format being in use. | 34 | bit field will be updated to reflect this format being in use. |
35 | 35 | ||
36 | CRC enabled filesystems always use the attr2 format, and so | ||
37 | will reject the noattr2 mount option if it is set. | ||
38 | |||
36 | barrier | 39 | barrier |
37 | Enables the use of block layer write barriers for writes into | 40 | Enables the use of block layer write barriers for writes into |
38 | the journal and unwritten extent conversion. This allows for | 41 | the journal and unwritten extent conversion. This allows for |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index c3bfacb92910..2fe6e767b3d6 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -3005,6 +3005,27 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3005 | Force threading of all interrupt handlers except those | 3005 | Force threading of all interrupt handlers except those |
3006 | marked explicitly IRQF_NO_THREAD. | 3006 | marked explicitly IRQF_NO_THREAD. |
3007 | 3007 | ||
3008 | tmem [KNL,XEN] | ||
3009 | Enable the Transcendent memory driver if built-in. | ||
3010 | |||
3011 | tmem.cleancache=0|1 [KNL, XEN] | ||
3012 | Default is on (1). Disable the usage of the cleancache | ||
3013 | API to send anonymous pages to the hypervisor. | ||
3014 | |||
3015 | tmem.frontswap=0|1 [KNL, XEN] | ||
3016 | Default is on (1). Disable the usage of the frontswap | ||
3017 | API to send swap pages to the hypervisor. If disabled | ||
3018 | the selfballooning and selfshrinking are force disabled. | ||
3019 | |||
3020 | tmem.selfballooning=0|1 [KNL, XEN] | ||
3021 | Default is on (1). Disable the driving of swap pages | ||
3022 | to the hypervisor. | ||
3023 | |||
3024 | tmem.selfshrinking=0|1 [KNL, XEN] | ||
3025 | Default is on (1). Partial swapoff that immediately | ||
3026 | transfers pages from Xen hypervisor back to the | ||
3027 | kernel based on different criteria. | ||
3028 | |||
3008 | topology= [S390] | 3029 | topology= [S390] |
3009 | Format: {off | on} | 3030 | Format: {off | on} |
3010 | Specify if the kernel should make use of the cpu | 3031 | Specify if the kernel should make use of the cpu |
@@ -3330,9 +3351,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3330 | plus one apbt timer for broadcast timer. | 3351 | plus one apbt timer for broadcast timer. |
3331 | x86_mrst_timer=apbt_only | lapic_and_apbt | 3352 | x86_mrst_timer=apbt_only | lapic_and_apbt |
3332 | 3353 | ||
3333 | xd= [HW,XT] Original XT pre-IDE (RLL encoded) disks. | ||
3334 | xd_geo= See header of drivers/block/xd.c. | ||
3335 | |||
3336 | xen_emul_unplug= [HW,X86,XEN] | 3354 | xen_emul_unplug= [HW,X86,XEN] |
3337 | Unplug Xen emulated devices | 3355 | Unplug Xen emulated devices |
3338 | Format: [unplug0,][unplug1] | 3356 | Format: [unplug0,][unplug1] |
diff --git a/Documentation/kernel-per-CPU-kthreads.txt b/Documentation/kernel-per-CPU-kthreads.txt new file mode 100644 index 000000000000..cbf7ae412da4 --- /dev/null +++ b/Documentation/kernel-per-CPU-kthreads.txt | |||
@@ -0,0 +1,202 @@ | |||
1 | REDUCING OS JITTER DUE TO PER-CPU KTHREADS | ||
2 | |||
3 | This document lists per-CPU kthreads in the Linux kernel and presents | ||
4 | options to control their OS jitter. Note that non-per-CPU kthreads are | ||
5 | not listed here. To reduce OS jitter from non-per-CPU kthreads, bind | ||
6 | them to a "housekeeping" CPU dedicated to such work. | ||
7 | |||
8 | |||
9 | REFERENCES | ||
10 | |||
11 | o Documentation/IRQ-affinity.txt: Binding interrupts to sets of CPUs. | ||
12 | |||
13 | o Documentation/cgroups: Using cgroups to bind tasks to sets of CPUs. | ||
14 | |||
15 | o man taskset: Using the taskset command to bind tasks to sets | ||
16 | of CPUs. | ||
17 | |||
18 | o man sched_setaffinity: Using the sched_setaffinity() system | ||
19 | call to bind tasks to sets of CPUs. | ||
20 | |||
21 | o /sys/devices/system/cpu/cpuN/online: Control CPU N's hotplug state, | ||
22 | writing "0" to offline and "1" to online. | ||
23 | |||
24 | o In order to locate kernel-generated OS jitter on CPU N: | ||
25 | |||
26 | cd /sys/kernel/debug/tracing | ||
27 | echo 1 > max_graph_depth # Increase the "1" for more detail | ||
28 | echo function_graph > current_tracer | ||
29 | # run workload | ||
30 | cat per_cpu/cpuN/trace | ||
31 | |||
32 | |||
33 | KTHREADS | ||
34 | |||
35 | Name: ehca_comp/%u | ||
36 | Purpose: Periodically process Infiniband-related work. | ||
37 | To reduce its OS jitter, do any of the following: | ||
38 | 1. Don't use eHCA Infiniband hardware, instead choosing hardware | ||
39 | that does not require per-CPU kthreads. This will prevent these | ||
40 | kthreads from being created in the first place. (This will | ||
41 | work for most people, as this hardware, though important, is | ||
42 | relatively old and is produced in relatively low unit volumes.) | ||
43 | 2. Do all eHCA-Infiniband-related work on other CPUs, including | ||
44 | interrupts. | ||
45 | 3. Rework the eHCA driver so that its per-CPU kthreads are | ||
46 | provisioned only on selected CPUs. | ||
47 | |||
48 | |||
49 | Name: irq/%d-%s | ||
50 | Purpose: Handle threaded interrupts. | ||
51 | To reduce its OS jitter, do the following: | ||
52 | 1. Use irq affinity to force the irq threads to execute on | ||
53 | some other CPU. | ||
54 | |||
55 | Name: kcmtpd_ctr_%d | ||
56 | Purpose: Handle Bluetooth work. | ||
57 | To reduce its OS jitter, do one of the following: | ||
58 | 1. Don't use Bluetooth, in which case these kthreads won't be | ||
59 | created in the first place. | ||
60 | 2. Use irq affinity to force Bluetooth-related interrupts to | ||
61 | occur on some other CPU and furthermore initiate all | ||
62 | Bluetooth activity on some other CPU. | ||
63 | |||
64 | Name: ksoftirqd/%u | ||
65 | Purpose: Execute softirq handlers when threaded or when under heavy load. | ||
66 | To reduce its OS jitter, each softirq vector must be handled | ||
67 | separately as follows: | ||
68 | TIMER_SOFTIRQ: Do all of the following: | ||
69 | 1. To the extent possible, keep the CPU out of the kernel when it | ||
70 | is non-idle, for example, by avoiding system calls and by forcing | ||
71 | both kernel threads and interrupts to execute elsewhere. | ||
72 | 2. Build with CONFIG_HOTPLUG_CPU=y. After boot completes, force | ||
73 | the CPU offline, then bring it back online. This forces | ||
74 | recurring timers to migrate elsewhere. If you are concerned | ||
75 | with multiple CPUs, force them all offline before bringing the | ||
76 | first one back online. Once you have onlined the CPUs in question, | ||
77 | do not offline any other CPUs, because doing so could force the | ||
78 | timer back onto one of the CPUs in question. | ||
79 | NET_TX_SOFTIRQ and NET_RX_SOFTIRQ: Do all of the following: | ||
80 | 1. Force networking interrupts onto other CPUs. | ||
81 | 2. Initiate any network I/O on other CPUs. | ||
82 | 3. Once your application has started, prevent CPU-hotplug operations | ||
83 | from being initiated from tasks that might run on the CPU to | ||
84 | be de-jittered. (It is OK to force this CPU offline and then | ||
85 | bring it back online before you start your application.) | ||
86 | BLOCK_SOFTIRQ: Do all of the following: | ||
87 | 1. Force block-device interrupts onto some other CPU. | ||
88 | 2. Initiate any block I/O on other CPUs. | ||
89 | 3. Once your application has started, prevent CPU-hotplug operations | ||
90 | from being initiated from tasks that might run on the CPU to | ||
91 | be de-jittered. (It is OK to force this CPU offline and then | ||
92 | bring it back online before you start your application.) | ||
93 | BLOCK_IOPOLL_SOFTIRQ: Do all of the following: | ||
94 | 1. Force block-device interrupts onto some other CPU. | ||
95 | 2. Initiate any block I/O and block-I/O polling on other CPUs. | ||
96 | 3. Once your application has started, prevent CPU-hotplug operations | ||
97 | from being initiated from tasks that might run on the CPU to | ||
98 | be de-jittered. (It is OK to force this CPU offline and then | ||
99 | bring it back online before you start your application.) | ||
100 | TASKLET_SOFTIRQ: Do one or more of the following: | ||
101 | 1. Avoid use of drivers that use tasklets. (Such drivers will contain | ||
102 | calls to things like tasklet_schedule().) | ||
103 | 2. Convert all drivers that you must use from tasklets to workqueues. | ||
104 | 3. Force interrupts for drivers using tasklets onto other CPUs, | ||
105 | and also do I/O involving these drivers on other CPUs. | ||
106 | SCHED_SOFTIRQ: Do all of the following: | ||
107 | 1. Avoid sending scheduler IPIs to the CPU to be de-jittered, | ||
108 | for example, ensure that at most one runnable kthread is present | ||
109 | on that CPU. If a thread that expects to run on the de-jittered | ||
110 | CPU awakens, the scheduler will send an IPI that can result in | ||
111 | a subsequent SCHED_SOFTIRQ. | ||
112 | 2. Build with CONFIG_RCU_NOCB_CPU=y, CONFIG_RCU_NOCB_CPU_ALL=y, | ||
113 | CONFIG_NO_HZ_FULL=y, and, in addition, ensure that the CPU | ||
114 | to be de-jittered is marked as an adaptive-ticks CPU using the | ||
115 | "nohz_full=" boot parameter. This reduces the number of | ||
116 | scheduler-clock interrupts that the de-jittered CPU receives, | ||
117 | minimizing its chances of being selected to do the load balancing | ||
118 | work that runs in SCHED_SOFTIRQ context. | ||
119 | 3. To the extent possible, keep the CPU out of the kernel when it | ||
120 | is non-idle, for example, by avoiding system calls and by | ||
121 | forcing both kernel threads and interrupts to execute elsewhere. | ||
122 | This further reduces the number of scheduler-clock interrupts | ||
123 | received by the de-jittered CPU. | ||
124 | HRTIMER_SOFTIRQ: Do all of the following: | ||
125 | 1. To the extent possible, keep the CPU out of the kernel when it | ||
126 | is non-idle. For example, avoid system calls and force both | ||
127 | kernel threads and interrupts to execute elsewhere. | ||
128 | 2. Build with CONFIG_HOTPLUG_CPU=y. Once boot completes, force the | ||
129 | CPU offline, then bring it back online. This forces recurring | ||
130 | timers to migrate elsewhere. If you are concerned with multiple | ||
131 | CPUs, force them all offline before bringing the first one | ||
132 | back online. Once you have onlined the CPUs in question, do not | ||
133 | offline any other CPUs, because doing so could force the timer | ||
134 | back onto one of the CPUs in question. | ||
135 | RCU_SOFTIRQ: Do at least one of the following: | ||
136 | 1. Offload callbacks and keep the CPU in either dyntick-idle or | ||
137 | adaptive-ticks state by doing all of the following: | ||
138 | a. Build with CONFIG_RCU_NOCB_CPU=y, CONFIG_RCU_NOCB_CPU_ALL=y, | ||
139 | CONFIG_NO_HZ_FULL=y, and, in addition ensure that the CPU | ||
140 | to be de-jittered is marked as an adaptive-ticks CPU using | ||
141 | the "nohz_full=" boot parameter. Bind the rcuo kthreads | ||
142 | to housekeeping CPUs, which can tolerate OS jitter. | ||
143 | b. To the extent possible, keep the CPU out of the kernel | ||
144 | when it is non-idle, for example, by avoiding system | ||
145 | calls and by forcing both kernel threads and interrupts | ||
146 | to execute elsewhere. | ||
147 | 2. Enable RCU to do its processing remotely via dyntick-idle by | ||
148 | doing all of the following: | ||
149 | a. Build with CONFIG_NO_HZ=y and CONFIG_RCU_FAST_NO_HZ=y. | ||
150 | b. Ensure that the CPU goes idle frequently, allowing other | ||
151 | CPUs to detect that it has passed through an RCU quiescent | ||
152 | state. If the kernel is built with CONFIG_NO_HZ_FULL=y, | ||
153 | userspace execution also allows other CPUs to detect that | ||
154 | the CPU in question has passed through a quiescent state. | ||
155 | c. To the extent possible, keep the CPU out of the kernel | ||
156 | when it is non-idle, for example, by avoiding system | ||
157 | calls and by forcing both kernel threads and interrupts | ||
158 | to execute elsewhere. | ||
159 | |||
160 | Name: rcuc/%u | ||
161 | Purpose: Execute RCU callbacks in CONFIG_RCU_BOOST=y kernels. | ||
162 | To reduce its OS jitter, do at least one of the following: | ||
163 | 1. Build the kernel with CONFIG_PREEMPT=n. This prevents these | ||
164 | kthreads from being created in the first place, and also obviates | ||
165 | the need for RCU priority boosting. This approach is feasible | ||
166 | for workloads that do not require high degrees of responsiveness. | ||
167 | 2. Build the kernel with CONFIG_RCU_BOOST=n. This prevents these | ||
168 | kthreads from being created in the first place. This approach | ||
169 | is feasible only if your workload never requires RCU priority | ||
170 | boosting, for example, if you ensure frequent idle time on all | ||
171 | CPUs that might execute within the kernel. | ||
172 | 3. Build with CONFIG_RCU_NOCB_CPU=y and CONFIG_RCU_NOCB_CPU_ALL=y, | ||
173 | which offloads all RCU callbacks to kthreads that can be moved | ||
174 | off of CPUs susceptible to OS jitter. This approach prevents the | ||
175 | rcuc/%u kthreads from having any work to do, so that they are | ||
176 | never awakened. | ||
177 | 4. Ensure that the CPU never enters the kernel, and, in particular, | ||
178 | avoid initiating any CPU hotplug operations on this CPU. This is | ||
179 | another way of preventing any callbacks from being queued on the | ||
180 | CPU, again preventing the rcuc/%u kthreads from having any work | ||
181 | to do. | ||
182 | |||
183 | Name: rcuob/%d, rcuop/%d, and rcuos/%d | ||
184 | Purpose: Offload RCU callbacks from the corresponding CPU. | ||
185 | To reduce its OS jitter, do at least one of the following: | ||
186 | 1. Use affinity, cgroups, or other mechanism to force these kthreads | ||
187 | to execute on some other CPU. | ||
188 | 2. Build with CONFIG_RCU_NOCB_CPUS=n, which will prevent these | ||
189 | kthreads from being created in the first place. However, please | ||
190 | note that this will not eliminate OS jitter, but will instead | ||
191 | shift it to RCU_SOFTIRQ. | ||
192 | |||
193 | Name: watchdog/%u | ||
194 | Purpose: Detect software lockups on each CPU. | ||
195 | To reduce its OS jitter, do at least one of the following: | ||
196 | 1. Build with CONFIG_LOCKUP_DETECTOR=n, which will prevent these | ||
197 | kthreads from being created in the first place. | ||
198 | 2. Echo a zero to /proc/sys/kernel/watchdog to disable the | ||
199 | watchdog timer. | ||
200 | 3. Echo a large number of /proc/sys/kernel/watchdog_thresh in | ||
201 | order to reduce the frequency of OS jitter due to the watchdog | ||
202 | timer down to a level that is acceptable for your workload. | ||
diff --git a/Documentation/m68k/kernel-options.txt b/Documentation/m68k/kernel-options.txt index 97d45f276fe6..eaf32a1fd0b1 100644 --- a/Documentation/m68k/kernel-options.txt +++ b/Documentation/m68k/kernel-options.txt | |||
@@ -80,8 +80,6 @@ Valid names are: | |||
80 | /dev/sdd: -> 0x0830 (forth SCSI disk) | 80 | /dev/sdd: -> 0x0830 (forth SCSI disk) |
81 | /dev/sde: -> 0x0840 (fifth SCSI disk) | 81 | /dev/sde: -> 0x0840 (fifth SCSI disk) |
82 | /dev/fd : -> 0x0200 (floppy disk) | 82 | /dev/fd : -> 0x0200 (floppy disk) |
83 | /dev/xda: -> 0x0c00 (first XT disk, unused in Linux/m68k) | ||
84 | /dev/xdb: -> 0x0c40 (second XT disk, unused in Linux/m68k) | ||
85 | 83 | ||
86 | The name must be followed by a decimal number, that stands for the | 84 | The name must be followed by a decimal number, that stands for the |
87 | partition number. Internally, the value of the number is just | 85 | partition number. Internally, the value of the number is just |
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt index 504dfe4d52eb..a66c9821b5ce 100644 --- a/Documentation/power/devices.txt +++ b/Documentation/power/devices.txt | |||
@@ -268,7 +268,7 @@ situations. | |||
268 | System Power Management Phases | 268 | System Power Management Phases |
269 | ------------------------------ | 269 | ------------------------------ |
270 | Suspending or resuming the system is done in several phases. Different phases | 270 | Suspending or resuming the system is done in several phases. Different phases |
271 | are used for standby or memory sleep states ("suspend-to-RAM") and the | 271 | are used for freeze, standby, and memory sleep states ("suspend-to-RAM") and the |
272 | hibernation state ("suspend-to-disk"). Each phase involves executing callbacks | 272 | hibernation state ("suspend-to-disk"). Each phase involves executing callbacks |
273 | for every device before the next phase begins. Not all busses or classes | 273 | for every device before the next phase begins. Not all busses or classes |
274 | support all these callbacks and not all drivers use all the callbacks. The | 274 | support all these callbacks and not all drivers use all the callbacks. The |
@@ -309,7 +309,8 @@ execute the corresponding method from dev->driver->pm instead if there is one. | |||
309 | 309 | ||
310 | Entering System Suspend | 310 | Entering System Suspend |
311 | ----------------------- | 311 | ----------------------- |
312 | When the system goes into the standby or memory sleep state, the phases are: | 312 | When the system goes into the freeze, standby or memory sleep state, |
313 | the phases are: | ||
313 | 314 | ||
314 | prepare, suspend, suspend_late, suspend_noirq. | 315 | prepare, suspend, suspend_late, suspend_noirq. |
315 | 316 | ||
@@ -368,7 +369,7 @@ the devices that were suspended. | |||
368 | 369 | ||
369 | Leaving System Suspend | 370 | Leaving System Suspend |
370 | ---------------------- | 371 | ---------------------- |
371 | When resuming from standby or memory sleep, the phases are: | 372 | When resuming from freeze, standby or memory sleep, the phases are: |
372 | 373 | ||
373 | resume_noirq, resume_early, resume, complete. | 374 | resume_noirq, resume_early, resume, complete. |
374 | 375 | ||
@@ -433,8 +434,8 @@ the system log. | |||
433 | 434 | ||
434 | Entering Hibernation | 435 | Entering Hibernation |
435 | -------------------- | 436 | -------------------- |
436 | Hibernating the system is more complicated than putting it into the standby or | 437 | Hibernating the system is more complicated than putting it into the other |
437 | memory sleep state, because it involves creating and saving a system image. | 438 | sleep states, because it involves creating and saving a system image. |
438 | Therefore there are more phases for hibernation, with a different set of | 439 | Therefore there are more phases for hibernation, with a different set of |
439 | callbacks. These phases always run after tasks have been frozen and memory has | 440 | callbacks. These phases always run after tasks have been frozen and memory has |
440 | been freed. | 441 | been freed. |
@@ -485,8 +486,8 @@ image forms an atomic snapshot of the system state. | |||
485 | 486 | ||
486 | At this point the system image is saved, and the devices then need to be | 487 | At this point the system image is saved, and the devices then need to be |
487 | prepared for the upcoming system shutdown. This is much like suspending them | 488 | prepared for the upcoming system shutdown. This is much like suspending them |
488 | before putting the system into the standby or memory sleep state, and the phases | 489 | before putting the system into the freeze, standby or memory sleep state, |
489 | are similar. | 490 | and the phases are similar. |
490 | 491 | ||
491 | 9. The prepare phase is discussed above. | 492 | 9. The prepare phase is discussed above. |
492 | 493 | ||
diff --git a/Documentation/power/interface.txt b/Documentation/power/interface.txt index c537834af005..f1f0f59a7c47 100644 --- a/Documentation/power/interface.txt +++ b/Documentation/power/interface.txt | |||
@@ -7,8 +7,8 @@ running. The interface exists in /sys/power/ directory (assuming sysfs | |||
7 | is mounted at /sys). | 7 | is mounted at /sys). |
8 | 8 | ||
9 | /sys/power/state controls system power state. Reading from this file | 9 | /sys/power/state controls system power state. Reading from this file |
10 | returns what states are supported, which is hard-coded to 'standby' | 10 | returns what states are supported, which is hard-coded to 'freeze', |
11 | (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk' | 11 | 'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk' |
12 | (Suspend-to-Disk). | 12 | (Suspend-to-Disk). |
13 | 13 | ||
14 | Writing to this file one of those strings causes the system to | 14 | Writing to this file one of those strings causes the system to |
diff --git a/Documentation/power/notifiers.txt b/Documentation/power/notifiers.txt index c2a4a346c0d9..a81fa254303d 100644 --- a/Documentation/power/notifiers.txt +++ b/Documentation/power/notifiers.txt | |||
@@ -15,8 +15,10 @@ A suspend/hibernation notifier may be used for this purpose. | |||
15 | The subsystems or drivers having such needs can register suspend notifiers that | 15 | The subsystems or drivers having such needs can register suspend notifiers that |
16 | will be called upon the following events by the PM core: | 16 | will be called upon the following events by the PM core: |
17 | 17 | ||
18 | PM_HIBERNATION_PREPARE The system is going to hibernate or suspend, tasks will | 18 | PM_HIBERNATION_PREPARE The system is going to hibernate, tasks will be frozen |
19 | be frozen immediately. | 19 | immediately. This is different from PM_SUSPEND_PREPARE |
20 | below because here we do additional work between notifiers | ||
21 | and drivers freezing. | ||
20 | 22 | ||
21 | PM_POST_HIBERNATION The system memory state has been restored from a | 23 | PM_POST_HIBERNATION The system memory state has been restored from a |
22 | hibernation image or an error occurred during | 24 | hibernation image or an error occurred during |
diff --git a/Documentation/power/states.txt b/Documentation/power/states.txt index 4416b28630df..442d43df9b25 100644 --- a/Documentation/power/states.txt +++ b/Documentation/power/states.txt | |||
@@ -2,12 +2,26 @@ | |||
2 | System Power Management States | 2 | System Power Management States |
3 | 3 | ||
4 | 4 | ||
5 | The kernel supports three power management states generically, though | 5 | The kernel supports four power management states generically, though |
6 | each is dependent on platform support code to implement the low-level | 6 | one is generic and the other three are dependent on platform support |
7 | details for each state. This file describes each state, what they are | 7 | code to implement the low-level details for each state. |
8 | This file describes each state, what they are | ||
8 | commonly called, what ACPI state they map to, and what string to write | 9 | commonly called, what ACPI state they map to, and what string to write |
9 | to /sys/power/state to enter that state | 10 | to /sys/power/state to enter that state |
10 | 11 | ||
12 | state: Freeze / Low-Power Idle | ||
13 | ACPI state: S0 | ||
14 | String: "freeze" | ||
15 | |||
16 | This state is a generic, pure software, light-weight, low-power state. | ||
17 | It allows more energy to be saved relative to idle by freezing user | ||
18 | space and putting all I/O devices into low-power states (possibly | ||
19 | lower-power than available at run time), such that the processors can | ||
20 | spend more time in their idle states. | ||
21 | This state can be used for platforms without Standby/Suspend-to-RAM | ||
22 | support, or it can be used in addition to Suspend-to-RAM (memory sleep) | ||
23 | to provide reduced resume latency. | ||
24 | |||
11 | 25 | ||
12 | State: Standby / Power-On Suspend | 26 | State: Standby / Power-On Suspend |
13 | ACPI State: S1 | 27 | ACPI State: S1 |
@@ -22,9 +36,6 @@ We try to put devices in a low-power state equivalent to D1, which | |||
22 | also offers low power savings, but low resume latency. Not all devices | 36 | also offers low power savings, but low resume latency. Not all devices |
23 | support D1, and those that don't are left on. | 37 | support D1, and those that don't are left on. |
24 | 38 | ||
25 | A transition from Standby to the On state should take about 1-2 | ||
26 | seconds. | ||
27 | |||
28 | 39 | ||
29 | State: Suspend-to-RAM | 40 | State: Suspend-to-RAM |
30 | ACPI State: S3 | 41 | ACPI State: S3 |
@@ -42,9 +53,6 @@ transition back to the On state. | |||
42 | For at least ACPI, STR requires some minimal boot-strapping code to | 53 | For at least ACPI, STR requires some minimal boot-strapping code to |
43 | resume the system from STR. This may be true on other platforms. | 54 | resume the system from STR. This may be true on other platforms. |
44 | 55 | ||
45 | A transition from Suspend-to-RAM to the On state should take about | ||
46 | 3-5 seconds. | ||
47 | |||
48 | 56 | ||
49 | State: Suspend-to-disk | 57 | State: Suspend-to-disk |
50 | ACPI State: S4 | 58 | ACPI State: S4 |
@@ -74,7 +82,3 @@ low-power state (like ACPI S4), or it may simply power down. Powering | |||
74 | down offers greater savings, and allows this mechanism to work on any | 82 | down offers greater savings, and allows this mechanism to work on any |
75 | system. However, entering a real low-power state allows the user to | 83 | system. However, entering a real low-power state allows the user to |
76 | trigger wake up events (e.g. pressing a key or opening a laptop lid). | 84 | trigger wake up events (e.g. pressing a key or opening a laptop lid). |
77 | |||
78 | A transition from Suspend-to-Disk to the On state should take about 30 | ||
79 | seconds, though it's typically a bit more with the current | ||
80 | implementation. | ||
diff --git a/Documentation/powerpc/transactional_memory.txt b/Documentation/powerpc/transactional_memory.txt index c907be41d60f..dc23e58ae264 100644 --- a/Documentation/powerpc/transactional_memory.txt +++ b/Documentation/powerpc/transactional_memory.txt | |||
@@ -147,6 +147,25 @@ Example signal handler: | |||
147 | fix_the_problem(ucp->dar); | 147 | fix_the_problem(ucp->dar); |
148 | } | 148 | } |
149 | 149 | ||
150 | When in an active transaction that takes a signal, we need to be careful with | ||
151 | the stack. It's possible that the stack has moved back up after the tbegin. | ||
152 | The obvious case here is when the tbegin is called inside a function that | ||
153 | returns before a tend. In this case, the stack is part of the checkpointed | ||
154 | transactional memory state. If we write over this non transactionally or in | ||
155 | suspend, we are in trouble because if we get a tm abort, the program counter and | ||
156 | stack pointer will be back at the tbegin but our in memory stack won't be valid | ||
157 | anymore. | ||
158 | |||
159 | To avoid this, when taking a signal in an active transaction, we need to use | ||
160 | the stack pointer from the checkpointed state, rather than the speculated | ||
161 | state. This ensures that the signal context (written tm suspended) will be | ||
162 | written below the stack required for the rollback. The transaction is aborted | ||
163 | becuase of the treclaim, so any memory written between the tbegin and the | ||
164 | signal will be rolled back anyway. | ||
165 | |||
166 | For signals taken in non-TM or suspended mode, we use the | ||
167 | normal/non-checkpointed stack pointer. | ||
168 | |||
150 | 169 | ||
151 | Failure cause codes used by kernel | 170 | Failure cause codes used by kernel |
152 | ================================== | 171 | ================================== |
@@ -155,14 +174,18 @@ These are defined in <asm/reg.h>, and distinguish different reasons why the | |||
155 | kernel aborted a transaction: | 174 | kernel aborted a transaction: |
156 | 175 | ||
157 | TM_CAUSE_RESCHED Thread was rescheduled. | 176 | TM_CAUSE_RESCHED Thread was rescheduled. |
177 | TM_CAUSE_TLBI Software TLB invalide. | ||
158 | TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap. | 178 | TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap. |
159 | TM_CAUSE_SYSCALL Currently unused; future syscalls that must abort | 179 | TM_CAUSE_SYSCALL Currently unused; future syscalls that must abort |
160 | transactions for consistency will use this. | 180 | transactions for consistency will use this. |
161 | TM_CAUSE_SIGNAL Signal delivered. | 181 | TM_CAUSE_SIGNAL Signal delivered. |
162 | TM_CAUSE_MISC Currently unused. | 182 | TM_CAUSE_MISC Currently unused. |
183 | TM_CAUSE_ALIGNMENT Alignment fault. | ||
184 | TM_CAUSE_EMULATE Emulation that touched memory. | ||
163 | 185 | ||
164 | These can be checked by the user program's abort handler as TEXASR[0:7]. | 186 | These can be checked by the user program's abort handler as TEXASR[0:7]. If |
165 | 187 | bit 7 is set, it indicates that the error is consider persistent. For example | |
188 | a TM_CAUSE_ALIGNMENT will be persistent while a TM_CAUSE_RESCHED will not.q | ||
166 | 189 | ||
167 | GDB | 190 | GDB |
168 | === | 191 | === |
diff --git a/Documentation/rapidio/rapidio.txt b/Documentation/rapidio/rapidio.txt index c75694b35d08..a9c16c979da2 100644 --- a/Documentation/rapidio/rapidio.txt +++ b/Documentation/rapidio/rapidio.txt | |||
@@ -79,20 +79,63 @@ master port that is used to communicate with devices within the network. | |||
79 | In order to initialize the RapidIO subsystem, a platform must initialize and | 79 | In order to initialize the RapidIO subsystem, a platform must initialize and |
80 | register at least one master port within the RapidIO network. To register mport | 80 | register at least one master port within the RapidIO network. To register mport |
81 | within the subsystem controller driver initialization code calls function | 81 | within the subsystem controller driver initialization code calls function |
82 | rio_register_mport() for each available master port. After all active master | 82 | rio_register_mport() for each available master port. |
83 | ports are registered with a RapidIO subsystem, the rio_init_mports() routine | ||
84 | is called to perform enumeration and discovery. | ||
85 | 83 | ||
86 | In the current PowerPC-based implementation a subsys_initcall() is specified to | 84 | RapidIO subsystem uses subsys_initcall() or device_initcall() to perform |
87 | perform controller initialization and mport registration. At the end it directly | 85 | controller initialization (depending on controller device type). |
88 | calls rio_init_mports() to execute RapidIO enumeration and discovery. | 86 | |
87 | After all active master ports are registered with a RapidIO subsystem, | ||
88 | an enumeration and/or discovery routine may be called automatically or | ||
89 | by user-space command. | ||
89 | 90 | ||
90 | 4. Enumeration and Discovery | 91 | 4. Enumeration and Discovery |
91 | ---------------------------- | 92 | ---------------------------- |
92 | 93 | ||
93 | When rio_init_mports() is called it scans a list of registered master ports and | 94 | 4.1 Overview |
94 | calls an enumeration or discovery routine depending on the configured role of a | 95 | ------------ |
95 | master port: host or agent. | 96 | |
97 | RapidIO subsystem configuration options allow users to specify enumeration and | ||
98 | discovery methods as statically linked components or loadable modules. | ||
99 | An enumeration/discovery method implementation and available input parameters | ||
100 | define how any given method can be attached to available RapidIO mports: | ||
101 | simply to all available mports OR individually to the specified mport device. | ||
102 | |||
103 | Depending on selected enumeration/discovery build configuration, there are | ||
104 | several methods to initiate an enumeration and/or discovery process: | ||
105 | |||
106 | (a) Statically linked enumeration and discovery process can be started | ||
107 | automatically during kernel initialization time using corresponding module | ||
108 | parameters. This was the original method used since introduction of RapidIO | ||
109 | subsystem. Now this method relies on enumerator module parameter which is | ||
110 | 'rio-scan.scan' for existing basic enumeration/discovery method. | ||
111 | When automatic start of enumeration/discovery is used a user has to ensure | ||
112 | that all discovering endpoints are started before the enumerating endpoint | ||
113 | and are waiting for enumeration to be completed. | ||
114 | Configuration option CONFIG_RAPIDIO_DISC_TIMEOUT defines time that discovering | ||
115 | endpoint waits for enumeration to be completed. If the specified timeout | ||
116 | expires the discovery process is terminated without obtaining RapidIO network | ||
117 | information. NOTE: a timed out discovery process may be restarted later using | ||
118 | a user-space command as it is described later if the given endpoint was | ||
119 | enumerated successfully. | ||
120 | |||
121 | (b) Statically linked enumeration and discovery process can be started by | ||
122 | a command from user space. This initiation method provides more flexibility | ||
123 | for a system startup compared to the option (a) above. After all participating | ||
124 | endpoints have been successfully booted, an enumeration process shall be | ||
125 | started first by issuing a user-space command, after an enumeration is | ||
126 | completed a discovery process can be started on all remaining endpoints. | ||
127 | |||
128 | (c) Modular enumeration and discovery process can be started by a command from | ||
129 | user space. After an enumeration/discovery module is loaded, a network scan | ||
130 | process can be started by issuing a user-space command. | ||
131 | Similar to the option (b) above, an enumerator has to be started first. | ||
132 | |||
133 | (d) Modular enumeration and discovery process can be started by a module | ||
134 | initialization routine. In this case an enumerating module shall be loaded | ||
135 | first. | ||
136 | |||
137 | When a network scan process is started it calls an enumeration or discovery | ||
138 | routine depending on the configured role of a master port: host or agent. | ||
96 | 139 | ||
97 | Enumeration is performed by a master port if it is configured as a host port by | 140 | Enumeration is performed by a master port if it is configured as a host port by |
98 | assigning a host device ID greater than or equal to zero. A host device ID is | 141 | assigning a host device ID greater than or equal to zero. A host device ID is |
@@ -104,8 +147,58 @@ for it. | |||
104 | The enumeration and discovery routines use RapidIO maintenance transactions | 147 | The enumeration and discovery routines use RapidIO maintenance transactions |
105 | to access the configuration space of devices. | 148 | to access the configuration space of devices. |
106 | 149 | ||
107 | The enumeration process is implemented according to the enumeration algorithm | 150 | 4.2 Automatic Start of Enumeration and Discovery |
108 | outlined in the RapidIO Interconnect Specification: Annex I [1]. | 151 | ------------------------------------------------ |
152 | |||
153 | Automatic enumeration/discovery start method is applicable only to built-in | ||
154 | enumeration/discovery RapidIO configuration selection. To enable automatic | ||
155 | enumeration/discovery start by existing basic enumerator method set use boot | ||
156 | command line parameter "rio-scan.scan=1". | ||
157 | |||
158 | This configuration requires synchronized start of all RapidIO endpoints that | ||
159 | form a network which will be enumerated/discovered. Discovering endpoints have | ||
160 | to be started before an enumeration starts to ensure that all RapidIO | ||
161 | controllers have been initialized and are ready to be discovered. Configuration | ||
162 | parameter CONFIG_RAPIDIO_DISC_TIMEOUT defines time (in seconds) which | ||
163 | a discovering endpoint will wait for enumeration to be completed. | ||
164 | |||
165 | When automatic enumeration/discovery start is selected, basic method's | ||
166 | initialization routine calls rio_init_mports() to perform enumeration or | ||
167 | discovery for all known mport devices. | ||
168 | |||
169 | Depending on RapidIO network size and configuration this automatic | ||
170 | enumeration/discovery start method may be difficult to use due to the | ||
171 | requirement for synchronized start of all endpoints. | ||
172 | |||
173 | 4.3 User-space Start of Enumeration and Discovery | ||
174 | ------------------------------------------------- | ||
175 | |||
176 | User-space start of enumeration and discovery can be used with built-in and | ||
177 | modular build configurations. For user-space controlled start RapidIO subsystem | ||
178 | creates the sysfs write-only attribute file '/sys/bus/rapidio/scan'. To initiate | ||
179 | an enumeration or discovery process on specific mport device, a user needs to | ||
180 | write mport_ID (not RapidIO destination ID) into that file. The mport_ID is a | ||
181 | sequential number (0 ... RIO_MAX_MPORTS) assigned during mport device | ||
182 | registration. For example for machine with single RapidIO controller, mport_ID | ||
183 | for that controller always will be 0. | ||
184 | |||
185 | To initiate RapidIO enumeration/discovery on all available mports a user may | ||
186 | write '-1' (or RIO_MPORT_ANY) into the scan attribute file. | ||
187 | |||
188 | 4.4 Basic Enumeration Method | ||
189 | ---------------------------- | ||
190 | |||
191 | This is an original enumeration/discovery method which is available since | ||
192 | first release of RapidIO subsystem code. The enumeration process is | ||
193 | implemented according to the enumeration algorithm outlined in the RapidIO | ||
194 | Interconnect Specification: Annex I [1]. | ||
195 | |||
196 | This method can be configured as statically linked or loadable module. | ||
197 | The method's single parameter "scan" allows to trigger the enumeration/discovery | ||
198 | process from module initialization routine. | ||
199 | |||
200 | This enumeration/discovery method can be started only once and does not support | ||
201 | unloading if it is built as a module. | ||
109 | 202 | ||
110 | The enumeration process traverses the network using a recursive depth-first | 203 | The enumeration process traverses the network using a recursive depth-first |
111 | algorithm. When a new device is found, the enumerator takes ownership of that | 204 | algorithm. When a new device is found, the enumerator takes ownership of that |
@@ -160,6 +253,19 @@ time period. If this wait time period expires before enumeration is completed, | |||
160 | an agent skips RapidIO discovery and continues with remaining kernel | 253 | an agent skips RapidIO discovery and continues with remaining kernel |
161 | initialization. | 254 | initialization. |
162 | 255 | ||
256 | 4.5 Adding New Enumeration/Discovery Method | ||
257 | ------------------------------------------- | ||
258 | |||
259 | RapidIO subsystem code organization allows addition of new enumeration/discovery | ||
260 | methods as new configuration options without significant impact to to the core | ||
261 | RapidIO code. | ||
262 | |||
263 | A new enumeration/discovery method has to be attached to one or more mport | ||
264 | devices before an enumeration/discovery process can be started. Normally, | ||
265 | method's module initialization routine calls rio_register_scan() to attach | ||
266 | an enumerator to a specified mport device (or devices). The basic enumerator | ||
267 | implementation demonstrates this process. | ||
268 | |||
163 | 5. References | 269 | 5. References |
164 | ------------- | 270 | ------------- |
165 | 271 | ||
diff --git a/Documentation/rapidio/sysfs.txt b/Documentation/rapidio/sysfs.txt index 97f71ce575d6..19878179da4c 100644 --- a/Documentation/rapidio/sysfs.txt +++ b/Documentation/rapidio/sysfs.txt | |||
@@ -88,3 +88,20 @@ that exports additional attributes. | |||
88 | 88 | ||
89 | IDT_GEN2: | 89 | IDT_GEN2: |
90 | errlog - reads contents of device error log until it is empty. | 90 | errlog - reads contents of device error log until it is empty. |
91 | |||
92 | |||
93 | 5. RapidIO Bus Attributes | ||
94 | ------------------------- | ||
95 | |||
96 | RapidIO bus subdirectory /sys/bus/rapidio implements the following bus-specific | ||
97 | attribute: | ||
98 | |||
99 | scan - allows to trigger enumeration discovery process from user space. This | ||
100 | is a write-only attribute. To initiate an enumeration or discovery | ||
101 | process on specific mport device, a user needs to write mport_ID (not | ||
102 | RapidIO destination ID) into this file. The mport_ID is a sequential | ||
103 | number (0 ... RIO_MAX_MPORTS) assigned to the mport device. | ||
104 | For example, for a machine with a single RapidIO controller, mport_ID | ||
105 | for that controller always will be 0. | ||
106 | To initiate RapidIO enumeration/discovery on all available mports | ||
107 | a user must write '-1' (or RIO_MPORT_ANY) into this attribute file. | ||
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index bb8b0dc532b8..77d68e23b247 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -29,6 +29,8 @@ ALC269/270/275/276/280/282 | |||
29 | alc271-dmic Enable ALC271X digital mic workaround | 29 | alc271-dmic Enable ALC271X digital mic workaround |
30 | inv-dmic Inverted internal mic workaround | 30 | inv-dmic Inverted internal mic workaround |
31 | lenovo-dock Enables docking station I/O for some Lenovos | 31 | lenovo-dock Enables docking station I/O for some Lenovos |
32 | dell-headset-multi Headset jack, which can also be used as mic-in | ||
33 | dell-headset-dock Headset jack (without mic-in), and also dock I/O | ||
32 | 34 | ||
33 | ALC662/663/272 | 35 | ALC662/663/272 |
34 | ============== | 36 | ============== |
@@ -42,6 +44,7 @@ ALC662/663/272 | |||
42 | asus-mode7 ASUS | 44 | asus-mode7 ASUS |
43 | asus-mode8 ASUS | 45 | asus-mode8 ASUS |
44 | inv-dmic Inverted internal mic workaround | 46 | inv-dmic Inverted internal mic workaround |
47 | dell-headset-multi Headset jack, which can also be used as mic-in | ||
45 | 48 | ||
46 | ALC680 | 49 | ALC680 |
47 | ====== | 50 | ====== |