diff options
Diffstat (limited to 'Documentation')
168 files changed, 3124 insertions, 1046 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 8dfc6708a257..f607367e642f 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -328,8 +328,6 @@ sysrq.txt | |||
328 | - info on the magic SysRq key. | 328 | - info on the magic SysRq key. |
329 | telephony/ | 329 | telephony/ |
330 | - directory with info on telephony (e.g. voice over IP) support. | 330 | - directory with info on telephony (e.g. voice over IP) support. |
331 | time_interpolators.txt | ||
332 | - info on time interpolators. | ||
333 | uml/ | 331 | uml/ |
334 | - directory with information about User Mode Linux. | 332 | - directory with information about User Mode Linux. |
335 | unicode.txt | 333 | unicode.txt |
@@ -346,8 +344,6 @@ vm/ | |||
346 | - directory with info on the Linux vm code. | 344 | - directory with info on the Linux vm code. |
347 | volatile-considered-harmful.txt | 345 | volatile-considered-harmful.txt |
348 | - Why the "volatile" type class should not be used | 346 | - Why the "volatile" type class should not be used |
349 | voyager.txt | ||
350 | - guide to running Linux on the Voyager architecture. | ||
351 | w1/ | 347 | w1/ |
352 | - directory with documents regarding the 1-wire (w1) subsystem. | 348 | - directory with documents regarding the 1-wire (w1) subsystem. |
353 | watchdog/ | 349 | watchdog/ |
diff --git a/Documentation/ABI/stable/sysfs-firmware-efi-vars b/Documentation/ABI/stable/sysfs-firmware-efi-vars new file mode 100644 index 000000000000..5def20b9019e --- /dev/null +++ b/Documentation/ABI/stable/sysfs-firmware-efi-vars | |||
@@ -0,0 +1,75 @@ | |||
1 | What: /sys/firmware/efi/vars | ||
2 | Date: April 2004 | ||
3 | Contact: Matt Domsch <Matt_Domsch@dell.com> | ||
4 | Description: | ||
5 | This directory exposes interfaces for interactive with | ||
6 | EFI variables. For more information on EFI variables, | ||
7 | see 'Variable Services' in the UEFI specification | ||
8 | (section 7.2 in specification version 2.3 Errata D). | ||
9 | |||
10 | In summary, EFI variables are named, and are classified | ||
11 | into separate namespaces through the use of a vendor | ||
12 | GUID. They also have an arbitrary binary value | ||
13 | associated with them. | ||
14 | |||
15 | The efivars module enumerates these variables and | ||
16 | creates a separate directory for each one found. Each | ||
17 | directory has a name of the form "<key>-<vendor guid>" | ||
18 | and contains the following files: | ||
19 | |||
20 | attributes: A read-only text file enumerating the | ||
21 | EFI variable flags. Potential values | ||
22 | include: | ||
23 | |||
24 | EFI_VARIABLE_NON_VOLATILE | ||
25 | EFI_VARIABLE_BOOTSERVICE_ACCESS | ||
26 | EFI_VARIABLE_RUNTIME_ACCESS | ||
27 | EFI_VARIABLE_HARDWARE_ERROR_RECORD | ||
28 | EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS | ||
29 | |||
30 | See the EFI documentation for an | ||
31 | explanation of each of these variables. | ||
32 | |||
33 | data: A read-only binary file that can be read | ||
34 | to attain the value of the EFI variable | ||
35 | |||
36 | guid: The vendor GUID of the variable. This | ||
37 | should always match the GUID in the | ||
38 | variable's name. | ||
39 | |||
40 | raw_var: A binary file that can be read to obtain | ||
41 | a structure that contains everything | ||
42 | there is to know about the variable. | ||
43 | For structure definition see "struct | ||
44 | efi_variable" in the kernel sources. | ||
45 | |||
46 | This file can also be written to in | ||
47 | order to update the value of a variable. | ||
48 | For this to work however, all fields of | ||
49 | the "struct efi_variable" passed must | ||
50 | match byte for byte with the structure | ||
51 | read out of the file, save for the value | ||
52 | portion. | ||
53 | |||
54 | **Note** the efi_variable structure | ||
55 | read/written with this file contains a | ||
56 | 'long' type that may change widths | ||
57 | depending on your underlying | ||
58 | architecture. | ||
59 | |||
60 | size: As ASCII representation of the size of | ||
61 | the variable's value. | ||
62 | |||
63 | |||
64 | In addition, two other magic binary files are provided | ||
65 | in the top-level directory and are used for adding and | ||
66 | removing variables: | ||
67 | |||
68 | new_var: Takes a "struct efi_variable" and | ||
69 | instructs the EFI firmware to create a | ||
70 | new variable. | ||
71 | |||
72 | del_var: Takes a "struct efi_variable" and | ||
73 | instructs the EFI firmware to remove any | ||
74 | variable that has a matching vendor GUID | ||
75 | and variable key name. | ||
diff --git a/Documentation/ABI/testing/pstore b/Documentation/ABI/testing/pstore new file mode 100644 index 000000000000..f1fb2a004264 --- /dev/null +++ b/Documentation/ABI/testing/pstore | |||
@@ -0,0 +1,35 @@ | |||
1 | Where: /dev/pstore/... | ||
2 | Date: January 2011 | ||
3 | Kernel Version: 2.6.38 | ||
4 | Contact: tony.luck@intel.com | ||
5 | Description: Generic interface to platform dependent persistent storage. | ||
6 | |||
7 | Platforms that provide a mechanism to preserve some data | ||
8 | across system reboots can register with this driver to | ||
9 | provide a generic interface to show records captured in | ||
10 | the dying moments. In the case of a panic the last part | ||
11 | of the console log is captured, but other interesting | ||
12 | data can also be saved. | ||
13 | |||
14 | # mount -t pstore - /dev/pstore | ||
15 | |||
16 | $ ls -l /dev/pstore | ||
17 | total 0 | ||
18 | -r--r--r-- 1 root root 7896 Nov 30 15:38 dmesg-erst-1 | ||
19 | |||
20 | Different users of this interface will result in different | ||
21 | filename prefixes. Currently two are defined: | ||
22 | |||
23 | "dmesg" - saved console log | ||
24 | "mce" - architecture dependent data from fatal h/w error | ||
25 | |||
26 | Once the information in a file has been read, removing | ||
27 | the file will signal to the underlying persistent storage | ||
28 | device that it can reclaim the space for later re-use. | ||
29 | |||
30 | $ rm /dev/pstore/dmesg-erst-1 | ||
31 | |||
32 | The expectation is that all files in /dev/pstore | ||
33 | will be saved elsewhere and erased from persistent store | ||
34 | soon after boot to free up space ready for the next | ||
35 | catastrophe. | ||
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power index 7628cd1bc36a..8ffbc25376a0 100644 --- a/Documentation/ABI/testing/sysfs-devices-power +++ b/Documentation/ABI/testing/sysfs-devices-power | |||
@@ -29,9 +29,8 @@ Description: | |||
29 | "disabled" to it. | 29 | "disabled" to it. |
30 | 30 | ||
31 | For the devices that are not capable of generating system wakeup | 31 | For the devices that are not capable of generating system wakeup |
32 | events this file contains "\n". In that cases the user space | 32 | events this file is not present. In that case the device cannot |
33 | cannot modify the contents of this file and the device cannot be | 33 | be enabled to wake up the system from sleep states. |
34 | enabled to wake up the system. | ||
35 | 34 | ||
36 | What: /sys/devices/.../power/control | 35 | What: /sys/devices/.../power/control |
37 | Date: January 2009 | 36 | Date: January 2009 |
@@ -85,7 +84,7 @@ Description: | |||
85 | The /sys/devices/.../wakeup_count attribute contains the number | 84 | The /sys/devices/.../wakeup_count attribute contains the number |
86 | of signaled wakeup events associated with the device. This | 85 | of signaled wakeup events associated with the device. This |
87 | attribute is read-only. If the device is not enabled to wake up | 86 | attribute is read-only. If the device is not enabled to wake up |
88 | the system from sleep states, this attribute is empty. | 87 | the system from sleep states, this attribute is not present. |
89 | 88 | ||
90 | What: /sys/devices/.../power/wakeup_active_count | 89 | What: /sys/devices/.../power/wakeup_active_count |
91 | Date: September 2010 | 90 | Date: September 2010 |
@@ -95,7 +94,7 @@ Description: | |||
95 | number of times the processing of wakeup events associated with | 94 | number of times the processing of wakeup events associated with |
96 | the device was completed (at the kernel level). This attribute | 95 | the device was completed (at the kernel level). This attribute |
97 | is read-only. If the device is not enabled to wake up the | 96 | is read-only. If the device is not enabled to wake up the |
98 | system from sleep states, this attribute is empty. | 97 | system from sleep states, this attribute is not present. |
99 | 98 | ||
100 | What: /sys/devices/.../power/wakeup_hit_count | 99 | What: /sys/devices/.../power/wakeup_hit_count |
101 | Date: September 2010 | 100 | Date: September 2010 |
@@ -105,7 +104,8 @@ Description: | |||
105 | number of times the processing of a wakeup event associated with | 104 | number of times the processing of a wakeup event associated with |
106 | the device might prevent the system from entering a sleep state. | 105 | the device might prevent the system from entering a sleep state. |
107 | This attribute is read-only. If the device is not enabled to | 106 | This attribute is read-only. If the device is not enabled to |
108 | wake up the system from sleep states, this attribute is empty. | 107 | wake up the system from sleep states, this attribute is not |
108 | present. | ||
109 | 109 | ||
110 | What: /sys/devices/.../power/wakeup_active | 110 | What: /sys/devices/.../power/wakeup_active |
111 | Date: September 2010 | 111 | Date: September 2010 |
@@ -115,7 +115,7 @@ Description: | |||
115 | or 0, depending on whether or not a wakeup event associated with | 115 | or 0, depending on whether or not a wakeup event associated with |
116 | the device is being processed (1). This attribute is read-only. | 116 | the device is being processed (1). This attribute is read-only. |
117 | If the device is not enabled to wake up the system from sleep | 117 | If the device is not enabled to wake up the system from sleep |
118 | states, this attribute is empty. | 118 | states, this attribute is not present. |
119 | 119 | ||
120 | What: /sys/devices/.../power/wakeup_total_time_ms | 120 | What: /sys/devices/.../power/wakeup_total_time_ms |
121 | Date: September 2010 | 121 | Date: September 2010 |
@@ -125,7 +125,7 @@ Description: | |||
125 | the total time of processing wakeup events associated with the | 125 | the total time of processing wakeup events associated with the |
126 | device, in milliseconds. This attribute is read-only. If the | 126 | device, in milliseconds. This attribute is read-only. If the |
127 | device is not enabled to wake up the system from sleep states, | 127 | device is not enabled to wake up the system from sleep states, |
128 | this attribute is empty. | 128 | this attribute is not present. |
129 | 129 | ||
130 | What: /sys/devices/.../power/wakeup_max_time_ms | 130 | What: /sys/devices/.../power/wakeup_max_time_ms |
131 | Date: September 2010 | 131 | Date: September 2010 |
@@ -135,7 +135,7 @@ Description: | |||
135 | the maximum time of processing a single wakeup event associated | 135 | the maximum time of processing a single wakeup event associated |
136 | with the device, in milliseconds. This attribute is read-only. | 136 | with the device, in milliseconds. This attribute is read-only. |
137 | If the device is not enabled to wake up the system from sleep | 137 | If the device is not enabled to wake up the system from sleep |
138 | states, this attribute is empty. | 138 | states, this attribute is not present. |
139 | 139 | ||
140 | What: /sys/devices/.../power/wakeup_last_time_ms | 140 | What: /sys/devices/.../power/wakeup_last_time_ms |
141 | Date: September 2010 | 141 | Date: September 2010 |
@@ -146,7 +146,7 @@ Description: | |||
146 | signaling the last wakeup event associated with the device, in | 146 | signaling the last wakeup event associated with the device, in |
147 | milliseconds. This attribute is read-only. If the device is | 147 | milliseconds. This attribute is read-only. If the device is |
148 | not enabled to wake up the system from sleep states, this | 148 | not enabled to wake up the system from sleep states, this |
149 | attribute is empty. | 149 | attribute is not present. |
150 | 150 | ||
151 | What: /sys/devices/.../power/autosuspend_delay_ms | 151 | What: /sys/devices/.../power/autosuspend_delay_ms |
152 | Date: September 2010 | 152 | Date: September 2010 |
diff --git a/Documentation/ABI/testing/sysfs-driver-hid b/Documentation/ABI/testing/sysfs-driver-hid new file mode 100644 index 000000000000..b6490e14fe83 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-hid | |||
@@ -0,0 +1,10 @@ | |||
1 | What: For USB devices : /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/report_descriptor | ||
2 | For BT devices : /sys/class/bluetooth/hci<addr>/<hid-bus>:<vendor-id>:<product-id>.<num>/report_descriptor | ||
3 | Symlink : /sys/class/hidraw/hidraw<num>/device/report_descriptor | ||
4 | Date: Jan 2011 | ||
5 | KernelVersion: 2.0.39 | ||
6 | Contact: Alan Ott <alan@signal11.us> | ||
7 | Description: When read, this file returns the device's raw binary HID | ||
8 | report descriptor. | ||
9 | This file cannot be written. | ||
10 | Users: HIDAPI library (http://www.signal11.us/oss/hidapi) | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-arvo b/Documentation/ABI/testing/sysfs-driver-hid-roccat-arvo new file mode 100644 index 000000000000..55e281b0071a --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-arvo | |||
@@ -0,0 +1,53 @@ | |||
1 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/arvo/roccatarvo<minor>/actual_profile | ||
2 | Date: Januar 2011 | ||
3 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
4 | Description: The integer value of this attribute ranges from 1-5. | ||
5 | When read, this attribute returns the number of the actual | ||
6 | profile which is also the profile that's active on device startup. | ||
7 | When written this attribute activates the selected profile | ||
8 | immediately. | ||
9 | Users: http://roccat.sourceforge.net | ||
10 | |||
11 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/arvo/roccatarvo<minor>/button | ||
12 | Date: Januar 2011 | ||
13 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
14 | Description: The keyboard can store short macros with consist of 1 button with | ||
15 | several modifier keys internally. | ||
16 | When written, this file lets one set the sequence for a specific | ||
17 | button for a specific profile. Button and profile numbers are | ||
18 | included in written data. The data has to be 24 bytes long. | ||
19 | This file is writeonly. | ||
20 | Users: http://roccat.sourceforge.net | ||
21 | |||
22 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/arvo/roccatarvo<minor>/info | ||
23 | Date: Januar 2011 | ||
24 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
25 | Description: When read, this file returns some info about the device like the | ||
26 | installed firmware version. | ||
27 | The size of the data is 8 bytes in size. | ||
28 | This file is readonly. | ||
29 | Users: http://roccat.sourceforge.net | ||
30 | |||
31 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/arvo/roccatarvo<minor>/key_mask | ||
32 | Date: Januar 2011 | ||
33 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
34 | Description: The keyboard lets the user deactivate 5 certain keys like the | ||
35 | windows and application keys, to protect the user from the outcome | ||
36 | of accidentally pressing them. | ||
37 | The integer value of this attribute has bits 0-4 set depending | ||
38 | on the state of the corresponding key. | ||
39 | When read, this file returns the current state of the buttons. | ||
40 | When written, the given buttons are activated/deactivated | ||
41 | immediately. | ||
42 | Users: http://roccat.sourceforge.net | ||
43 | |||
44 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/arvo/roccatarvo<minor>/mode_key | ||
45 | Date: Januar 2011 | ||
46 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
47 | Description: The keyboard has a condensed layout without num-lock key. | ||
48 | Instead it uses a mode-key which activates a gaming mode where | ||
49 | the assignment of the number block changes. | ||
50 | The integer value of this attribute ranges from 0 (OFF) to 1 (ON). | ||
51 | When read, this file returns the actual state of the key. | ||
52 | When written, the key is activated/deactivated immediately. | ||
53 | Users: http://roccat.sourceforge.net | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone b/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone index 698b8081c473..b4c4f158ab9c 100644 --- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone +++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-kone | |||
@@ -16,12 +16,14 @@ Description: It is possible to switch the dpi setting of the mouse with the | |||
16 | 6 3200 | 16 | 6 3200 |
17 | 17 | ||
18 | This file is readonly. | 18 | This file is readonly. |
19 | Users: http://roccat.sourceforge.net | ||
19 | 20 | ||
20 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/actual_profile | 21 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/actual_profile |
21 | Date: March 2010 | 22 | Date: March 2010 |
22 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | 23 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> |
23 | Description: When read, this file returns the number of the actual profile. | 24 | Description: When read, this file returns the number of the actual profile. |
24 | This file is readonly. | 25 | This file is readonly. |
26 | Users: http://roccat.sourceforge.net | ||
25 | 27 | ||
26 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/firmware_version | 28 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/firmware_version |
27 | Date: March 2010 | 29 | Date: March 2010 |
@@ -32,6 +34,7 @@ Description: When read, this file returns the raw integer version number of the | |||
32 | number the decimal point has to be shifted 2 positions to the | 34 | number the decimal point has to be shifted 2 positions to the |
33 | left. E.g. a returned value of 138 means 1.38 | 35 | left. E.g. a returned value of 138 means 1.38 |
34 | This file is readonly. | 36 | This file is readonly. |
37 | Users: http://roccat.sourceforge.net | ||
35 | 38 | ||
36 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/profile[1-5] | 39 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/profile[1-5] |
37 | Date: March 2010 | 40 | Date: March 2010 |
@@ -47,6 +50,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
47 | The mouse will reject invalid data, whereas the profile number | 50 | The mouse will reject invalid data, whereas the profile number |
48 | stored in the profile doesn't need to fit the number of the | 51 | stored in the profile doesn't need to fit the number of the |
49 | store. | 52 | store. |
53 | Users: http://roccat.sourceforge.net | ||
50 | 54 | ||
51 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/settings | 55 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/settings |
52 | Date: March 2010 | 56 | Date: March 2010 |
@@ -57,6 +61,7 @@ Description: When read, this file returns the settings stored in the mouse. | |||
57 | When written, this file lets write settings back to the mouse. | 61 | When written, this file lets write settings back to the mouse. |
58 | The data has to be 36 bytes long. The mouse will reject invalid | 62 | The data has to be 36 bytes long. The mouse will reject invalid |
59 | data. | 63 | data. |
64 | Users: http://roccat.sourceforge.net | ||
60 | 65 | ||
61 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/startup_profile | 66 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/startup_profile |
62 | Date: March 2010 | 67 | Date: March 2010 |
@@ -66,6 +71,7 @@ Description: The integer value of this attribute ranges from 1 to 5. | |||
66 | that's active when the mouse is powered on. | 71 | that's active when the mouse is powered on. |
67 | When written, this file sets the number of the startup profile | 72 | When written, this file sets the number of the startup profile |
68 | and the mouse activates this profile immediately. | 73 | and the mouse activates this profile immediately. |
74 | Users: http://roccat.sourceforge.net | ||
69 | 75 | ||
70 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/tcu | 76 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/tcu |
71 | Date: March 2010 | 77 | Date: March 2010 |
@@ -77,6 +83,7 @@ Description: The mouse has a "Tracking Control Unit" which lets the user | |||
77 | Writing 0 in this file will switch the TCU off. | 83 | Writing 0 in this file will switch the TCU off. |
78 | Writing 1 in this file will start the calibration which takes | 84 | Writing 1 in this file will start the calibration which takes |
79 | around 6 seconds to complete and activates the TCU. | 85 | around 6 seconds to complete and activates the TCU. |
86 | Users: http://roccat.sourceforge.net | ||
80 | 87 | ||
81 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/weight | 88 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kone/roccatkone<minor>/weight |
82 | Date: March 2010 | 89 | Date: March 2010 |
@@ -96,3 +103,4 @@ Description: The mouse can be equipped with one of four supplied weights | |||
96 | 4 20g | 103 | 4 20g |
97 | 104 | ||
98 | This file is readonly. | 105 | This file is readonly. |
106 | Users: http://roccat.sourceforge.net | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus b/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus index 0f9f30eb1742..00efced73969 100644 --- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus +++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus | |||
@@ -4,6 +4,7 @@ Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | |||
4 | Description: When read, this file returns the number of the actual profile in | 4 | Description: When read, this file returns the number of the actual profile in |
5 | range 0-4. | 5 | range 0-4. |
6 | This file is readonly. | 6 | This file is readonly. |
7 | Users: http://roccat.sourceforge.net | ||
7 | 8 | ||
8 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/firmware_version | 9 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/firmware_version |
9 | Date: October 2010 | 10 | Date: October 2010 |
@@ -14,6 +15,7 @@ Description: When read, this file returns the raw integer version number of the | |||
14 | number the decimal point has to be shifted 2 positions to the | 15 | number the decimal point has to be shifted 2 positions to the |
15 | left. E.g. a returned value of 121 means 1.21 | 16 | left. E.g. a returned value of 121 means 1.21 |
16 | This file is readonly. | 17 | This file is readonly. |
18 | Users: http://roccat.sourceforge.net | ||
17 | 19 | ||
18 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/macro | 20 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/macro |
19 | Date: October 2010 | 21 | Date: October 2010 |
@@ -24,6 +26,7 @@ Description: The mouse can store a macro with max 500 key/button strokes | |||
24 | button for a specific profile. Button and profile numbers are | 26 | button for a specific profile. Button and profile numbers are |
25 | included in written data. The data has to be 2082 bytes long. | 27 | included in written data. The data has to be 2082 bytes long. |
26 | This file is writeonly. | 28 | This file is writeonly. |
29 | Users: http://roccat.sourceforge.net | ||
27 | 30 | ||
28 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile_buttons | 31 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile_buttons |
29 | Date: August 2010 | 32 | Date: August 2010 |
@@ -37,6 +40,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
37 | Which profile to write is determined by the profile number | 40 | Which profile to write is determined by the profile number |
38 | contained in the data. | 41 | contained in the data. |
39 | This file is writeonly. | 42 | This file is writeonly. |
43 | Users: http://roccat.sourceforge.net | ||
40 | 44 | ||
41 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_buttons | 45 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_buttons |
42 | Date: August 2010 | 46 | Date: August 2010 |
@@ -47,6 +51,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
47 | When read, these files return the respective profile buttons. | 51 | When read, these files return the respective profile buttons. |
48 | The returned data is 77 bytes in size. | 52 | The returned data is 77 bytes in size. |
49 | This file is readonly. | 53 | This file is readonly. |
54 | Users: http://roccat.sourceforge.net | ||
50 | 55 | ||
51 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile_settings | 56 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile_settings |
52 | Date: October 2010 | 57 | Date: October 2010 |
@@ -61,6 +66,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
61 | Which profile to write is determined by the profile number | 66 | Which profile to write is determined by the profile number |
62 | contained in the data. | 67 | contained in the data. |
63 | This file is writeonly. | 68 | This file is writeonly. |
69 | Users: http://roccat.sourceforge.net | ||
64 | 70 | ||
65 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_settings | 71 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/profile[1-5]_settings |
66 | Date: August 2010 | 72 | Date: August 2010 |
@@ -72,6 +78,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
72 | When read, these files return the respective profile settings. | 78 | When read, these files return the respective profile settings. |
73 | The returned data is 43 bytes in size. | 79 | The returned data is 43 bytes in size. |
74 | This file is readonly. | 80 | This file is readonly. |
81 | Users: http://roccat.sourceforge.net | ||
75 | 82 | ||
76 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/sensor | 83 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/sensor |
77 | Date: October 2010 | 84 | Date: October 2010 |
@@ -80,6 +87,7 @@ Description: The mouse has a tracking- and a distance-control-unit. These | |||
80 | can be activated/deactivated and the lift-off distance can be | 87 | can be activated/deactivated and the lift-off distance can be |
81 | set. The data has to be 6 bytes long. | 88 | set. The data has to be 6 bytes long. |
82 | This file is writeonly. | 89 | This file is writeonly. |
90 | Users: http://roccat.sourceforge.net | ||
83 | 91 | ||
84 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/startup_profile | 92 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/startup_profile |
85 | Date: October 2010 | 93 | Date: October 2010 |
@@ -89,6 +97,7 @@ Description: The integer value of this attribute ranges from 0-4. | |||
89 | that's active when the mouse is powered on. | 97 | that's active when the mouse is powered on. |
90 | When written, this file sets the number of the startup profile | 98 | When written, this file sets the number of the startup profile |
91 | and the mouse activates this profile immediately. | 99 | and the mouse activates this profile immediately. |
100 | Users: http://roccat.sourceforge.net | ||
92 | 101 | ||
93 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu | 102 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu |
94 | Date: October 2010 | 103 | Date: October 2010 |
@@ -97,6 +106,7 @@ Description: When written a calibration process for the tracking control unit | |||
97 | can be initiated/cancelled. | 106 | can be initiated/cancelled. |
98 | The data has to be 3 bytes long. | 107 | The data has to be 3 bytes long. |
99 | This file is writeonly. | 108 | This file is writeonly. |
109 | Users: http://roccat.sourceforge.net | ||
100 | 110 | ||
101 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu_image | 111 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu_image |
102 | Date: October 2010 | 112 | Date: October 2010 |
@@ -106,3 +116,4 @@ Description: When read the mouse returns a 30x30 pixel image of the | |||
106 | calibration process initiated with tcu. | 116 | calibration process initiated with tcu. |
107 | The returned data is 1028 bytes in size. | 117 | The returned data is 1028 bytes in size. |
108 | This file is readonly. | 118 | This file is readonly. |
119 | Users: http://roccat.sourceforge.net | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus b/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus new file mode 100644 index 000000000000..fdfa16f8189b --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-kovaplus | |||
@@ -0,0 +1,100 @@ | |||
1 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_cpi | ||
2 | Date: January 2011 | ||
3 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
4 | Description: The integer value of this attribute ranges from 1-4. | ||
5 | When read, this attribute returns the number of the active | ||
6 | cpi level. | ||
7 | This file is readonly. | ||
8 | Users: http://roccat.sourceforge.net | ||
9 | |||
10 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_profile | ||
11 | Date: January 2011 | ||
12 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
13 | Description: The integer value of this attribute ranges from 0-4. | ||
14 | When read, this attribute returns the number of the active | ||
15 | profile. | ||
16 | When written, the mouse activates this profile immediately. | ||
17 | The profile that's active when powered down is the same that's | ||
18 | active when the mouse is powered on. | ||
19 | Users: http://roccat.sourceforge.net | ||
20 | |||
21 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_sensitivity_x | ||
22 | Date: January 2011 | ||
23 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
24 | Description: The integer value of this attribute ranges from 1-10. | ||
25 | When read, this attribute returns the number of the actual | ||
26 | sensitivity in x direction. | ||
27 | This file is readonly. | ||
28 | Users: http://roccat.sourceforge.net | ||
29 | |||
30 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/actual_sensitivity_y | ||
31 | Date: January 2011 | ||
32 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
33 | Description: The integer value of this attribute ranges from 1-10. | ||
34 | When read, this attribute returns the number of the actual | ||
35 | sensitivity in y direction. | ||
36 | This file is readonly. | ||
37 | Users: http://roccat.sourceforge.net | ||
38 | |||
39 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/firmware_version | ||
40 | Date: January 2011 | ||
41 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
42 | Description: When read, this file returns the raw integer version number of the | ||
43 | firmware reported by the mouse. Using the integer value eases | ||
44 | further usage in other programs. To receive the real version | ||
45 | number the decimal point has to be shifted 2 positions to the | ||
46 | left. E.g. a returned value of 121 means 1.21 | ||
47 | This file is readonly. | ||
48 | Users: http://roccat.sourceforge.net | ||
49 | |||
50 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile_buttons | ||
51 | Date: January 2011 | ||
52 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
53 | Description: The mouse can store 5 profiles which can be switched by the | ||
54 | press of a button. A profile is split in settings and buttons. | ||
55 | profile_buttons holds informations about button layout. | ||
56 | When written, this file lets one write the respective profile | ||
57 | buttons back to the mouse. The data has to be 23 bytes long. | ||
58 | The mouse will reject invalid data. | ||
59 | Which profile to write is determined by the profile number | ||
60 | contained in the data. | ||
61 | This file is writeonly. | ||
62 | Users: http://roccat.sourceforge.net | ||
63 | |||
64 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile[1-5]_buttons | ||
65 | Date: January 2011 | ||
66 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
67 | Description: The mouse can store 5 profiles which can be switched by the | ||
68 | press of a button. A profile is split in settings and buttons. | ||
69 | profile_buttons holds informations about button layout. | ||
70 | When read, these files return the respective profile buttons. | ||
71 | The returned data is 23 bytes in size. | ||
72 | This file is readonly. | ||
73 | Users: http://roccat.sourceforge.net | ||
74 | |||
75 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile_settings | ||
76 | Date: January 2011 | ||
77 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
78 | Description: The mouse can store 5 profiles which can be switched by the | ||
79 | press of a button. A profile is split in settings and buttons. | ||
80 | profile_settings holds informations like resolution, sensitivity | ||
81 | and light effects. | ||
82 | When written, this file lets one write the respective profile | ||
83 | settings back to the mouse. The data has to be 16 bytes long. | ||
84 | The mouse will reject invalid data. | ||
85 | Which profile to write is determined by the profile number | ||
86 | contained in the data. | ||
87 | This file is writeonly. | ||
88 | Users: http://roccat.sourceforge.net | ||
89 | |||
90 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/kovaplus/roccatkovaplus<minor>/profile[1-5]_settings | ||
91 | Date: January 2011 | ||
92 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
93 | Description: The mouse can store 5 profiles which can be switched by the | ||
94 | press of a button. A profile is split in settings and buttons. | ||
95 | profile_settings holds informations like resolution, sensitivity | ||
96 | and light effects. | ||
97 | When read, these files return the respective profile settings. | ||
98 | The returned data is 16 bytes in size. | ||
99 | This file is readonly. | ||
100 | Users: http://roccat.sourceforge.net | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra b/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra index 1c37b823f142..5fab71af3c46 100644 --- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra +++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-pyra | |||
@@ -13,6 +13,7 @@ Description: It is possible to switch the cpi setting of the mouse with the | |||
13 | 4 1600 | 13 | 4 1600 |
14 | 14 | ||
15 | This file is readonly. | 15 | This file is readonly. |
16 | Users: http://roccat.sourceforge.net | ||
16 | 17 | ||
17 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/actual_profile | 18 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/actual_profile |
18 | Date: August 2010 | 19 | Date: August 2010 |
@@ -20,6 +21,7 @@ Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | |||
20 | Description: When read, this file returns the number of the actual profile in | 21 | Description: When read, this file returns the number of the actual profile in |
21 | range 0-4. | 22 | range 0-4. |
22 | This file is readonly. | 23 | This file is readonly. |
24 | Users: http://roccat.sourceforge.net | ||
23 | 25 | ||
24 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/firmware_version | 26 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/firmware_version |
25 | Date: August 2010 | 27 | Date: August 2010 |
@@ -30,6 +32,7 @@ Description: When read, this file returns the raw integer version number of the | |||
30 | number the decimal point has to be shifted 2 positions to the | 32 | number the decimal point has to be shifted 2 positions to the |
31 | left. E.g. a returned value of 138 means 1.38 | 33 | left. E.g. a returned value of 138 means 1.38 |
32 | This file is readonly. | 34 | This file is readonly. |
35 | Users: http://roccat.sourceforge.net | ||
33 | 36 | ||
34 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_settings | 37 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_settings |
35 | Date: August 2010 | 38 | Date: August 2010 |
@@ -44,6 +47,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
44 | Which profile to write is determined by the profile number | 47 | Which profile to write is determined by the profile number |
45 | contained in the data. | 48 | contained in the data. |
46 | This file is writeonly. | 49 | This file is writeonly. |
50 | Users: http://roccat.sourceforge.net | ||
47 | 51 | ||
48 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_settings | 52 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_settings |
49 | Date: August 2010 | 53 | Date: August 2010 |
@@ -55,6 +59,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
55 | When read, these files return the respective profile settings. | 59 | When read, these files return the respective profile settings. |
56 | The returned data is 13 bytes in size. | 60 | The returned data is 13 bytes in size. |
57 | This file is readonly. | 61 | This file is readonly. |
62 | Users: http://roccat.sourceforge.net | ||
58 | 63 | ||
59 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_buttons | 64 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile_buttons |
60 | Date: August 2010 | 65 | Date: August 2010 |
@@ -68,6 +73,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
68 | Which profile to write is determined by the profile number | 73 | Which profile to write is determined by the profile number |
69 | contained in the data. | 74 | contained in the data. |
70 | This file is writeonly. | 75 | This file is writeonly. |
76 | Users: http://roccat.sourceforge.net | ||
71 | 77 | ||
72 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_buttons | 78 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/profile[1-5]_buttons |
73 | Date: August 2010 | 79 | Date: August 2010 |
@@ -78,6 +84,7 @@ Description: The mouse can store 5 profiles which can be switched by the | |||
78 | When read, these files return the respective profile buttons. | 84 | When read, these files return the respective profile buttons. |
79 | The returned data is 19 bytes in size. | 85 | The returned data is 19 bytes in size. |
80 | This file is readonly. | 86 | This file is readonly. |
87 | Users: http://roccat.sourceforge.net | ||
81 | 88 | ||
82 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/startup_profile | 89 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/startup_profile |
83 | Date: August 2010 | 90 | Date: August 2010 |
@@ -86,6 +93,7 @@ Description: The integer value of this attribute ranges from 0-4. | |||
86 | When read, this attribute returns the number of the profile | 93 | When read, this attribute returns the number of the profile |
87 | that's active when the mouse is powered on. | 94 | that's active when the mouse is powered on. |
88 | This file is readonly. | 95 | This file is readonly. |
96 | Users: http://roccat.sourceforge.net | ||
89 | 97 | ||
90 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/settings | 98 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/pyra/roccatpyra<minor>/settings |
91 | Date: August 2010 | 99 | Date: August 2010 |
@@ -96,3 +104,4 @@ Description: When read, this file returns the settings stored in the mouse. | |||
96 | When written, this file lets write settings back to the mouse. | 104 | When written, this file lets write settings back to the mouse. |
97 | The data has to be 3 bytes long. The mouse will reject invalid | 105 | The data has to be 3 bytes long. The mouse will reject invalid |
98 | data. | 106 | data. |
107 | Users: http://roccat.sourceforge.net | ||
diff --git a/Documentation/ABI/testing/sysfs-firmware-dmi b/Documentation/ABI/testing/sysfs-firmware-dmi new file mode 100644 index 000000000000..ba9da9503c23 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-firmware-dmi | |||
@@ -0,0 +1,110 @@ | |||
1 | What: /sys/firmware/dmi/ | ||
2 | Date: February 2011 | ||
3 | Contact: Mike Waychison <mikew@google.com> | ||
4 | Description: | ||
5 | Many machines' firmware (x86 and ia64) export DMI / | ||
6 | SMBIOS tables to the operating system. Getting at this | ||
7 | information is often valuable to userland, especially in | ||
8 | cases where there are OEM extensions used. | ||
9 | |||
10 | The kernel itself does not rely on the majority of the | ||
11 | information in these tables being correct. It equally | ||
12 | cannot ensure that the data as exported to userland is | ||
13 | without error either. | ||
14 | |||
15 | DMI is structured as a large table of entries, where | ||
16 | each entry has a common header indicating the type and | ||
17 | length of the entry, as well as 'handle' that is | ||
18 | supposed to be unique amongst all entries. | ||
19 | |||
20 | Some entries are required by the specification, but many | ||
21 | others are optional. In general though, users should | ||
22 | never expect to find a specific entry type on their | ||
23 | system unless they know for certain what their firmware | ||
24 | is doing. Machine to machine will vary. | ||
25 | |||
26 | Multiple entries of the same type are allowed. In order | ||
27 | to handle these duplicate entry types, each entry is | ||
28 | assigned by the operating system an 'instance', which is | ||
29 | derived from an entry type's ordinal position. That is | ||
30 | to say, if there are 'N' multiple entries with the same type | ||
31 | 'T' in the DMI tables (adjacent or spread apart, it | ||
32 | doesn't matter), they will be represented in sysfs as | ||
33 | entries "T-0" through "T-(N-1)": | ||
34 | |||
35 | Example entry directories: | ||
36 | |||
37 | /sys/firmware/dmi/entries/17-0 | ||
38 | /sys/firmware/dmi/entries/17-1 | ||
39 | /sys/firmware/dmi/entries/17-2 | ||
40 | /sys/firmware/dmi/entries/17-3 | ||
41 | ... | ||
42 | |||
43 | Instance numbers are used in lieu of the firmware | ||
44 | assigned entry handles as the kernel itself makes no | ||
45 | guarantees that handles as exported are unique, and | ||
46 | there are likely firmware images that get this wrong in | ||
47 | the wild. | ||
48 | |||
49 | Each DMI entry in sysfs has the common header values | ||
50 | exported as attributes: | ||
51 | |||
52 | handle : The 16bit 'handle' that is assigned to this | ||
53 | entry by the firmware. This handle may be | ||
54 | referred to by other entries. | ||
55 | length : The length of the entry, as presented in the | ||
56 | entry itself. Note that this is _not the | ||
57 | total count of bytes associated with the | ||
58 | entry_. This value represents the length of | ||
59 | the "formatted" portion of the entry. This | ||
60 | "formatted" region is sometimes followed by | ||
61 | the "unformatted" region composed of nul | ||
62 | terminated strings, with termination signalled | ||
63 | by a two nul characters in series. | ||
64 | raw : The raw bytes of the entry. This includes the | ||
65 | "formatted" portion of the entry, the | ||
66 | "unformatted" strings portion of the entry, | ||
67 | and the two terminating nul characters. | ||
68 | type : The type of the entry. This value is the same | ||
69 | as found in the directory name. It indicates | ||
70 | how the rest of the entry should be | ||
71 | interpreted. | ||
72 | instance: The instance ordinal of the entry for the | ||
73 | given type. This value is the same as found | ||
74 | in the parent directory name. | ||
75 | position: The position of the entry within the entirety | ||
76 | of the entirety. | ||
77 | |||
78 | === Entry Specialization === | ||
79 | |||
80 | Some entry types may have other information available in | ||
81 | sysfs. | ||
82 | |||
83 | --- Type 15 - System Event Log --- | ||
84 | |||
85 | This entry allows the firmware to export a log of | ||
86 | events the system has taken. This information is | ||
87 | typically backed by nvram, but the implementation | ||
88 | details are abstracted by this table. This entries data | ||
89 | is exported in the directory: | ||
90 | |||
91 | /sys/firmware/dmi/entries/15-0/system_event_log | ||
92 | |||
93 | and has the following attributes (documented in the | ||
94 | SMBIOS / DMI specification under "System Event Log (Type 15)": | ||
95 | |||
96 | area_length | ||
97 | header_start_offset | ||
98 | data_start_offset | ||
99 | access_method | ||
100 | status | ||
101 | change_token | ||
102 | access_method_address | ||
103 | header_format | ||
104 | per_log_type_descriptor_length | ||
105 | type_descriptors_supported_count | ||
106 | |||
107 | As well, the kernel exports the binary attribute: | ||
108 | |||
109 | raw_event_log : The raw binary bits of the event log | ||
110 | as described by the DMI entry. | ||
diff --git a/Documentation/ABI/testing/sysfs-fs-pstore b/Documentation/ABI/testing/sysfs-fs-pstore new file mode 100644 index 000000000000..8e659d854805 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-fs-pstore | |||
@@ -0,0 +1,7 @@ | |||
1 | What: /sys/fs/pstore/kmsg_bytes | ||
2 | Date: January 2011 | ||
3 | Kernel Version: 2.6.38 | ||
4 | Contact: "Tony Luck" <tony.luck@intel.com> | ||
5 | Description: | ||
6 | Controls amount of console log that will be saved | ||
7 | to persistent store on oops/panic. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-kim b/Documentation/ABI/testing/sysfs-platform-kim new file mode 100644 index 000000000000..c1653271872a --- /dev/null +++ b/Documentation/ABI/testing/sysfs-platform-kim | |||
@@ -0,0 +1,48 @@ | |||
1 | What: /sys/devices/platform/kim/dev_name | ||
2 | Date: January 2010 | ||
3 | KernelVersion: 2.6.38 | ||
4 | Contact: "Pavan Savoy" <pavan_savoy@ti.com> | ||
5 | Description: | ||
6 | Name of the UART device at which the WL128x chip | ||
7 | is connected. example: "/dev/ttyS0". | ||
8 | The device name flows down to architecture specific board | ||
9 | initialization file from the SFI/ATAGS bootloader | ||
10 | firmware. The name exposed is read from the user-space | ||
11 | dameon and opens the device when install is requested. | ||
12 | |||
13 | What: /sys/devices/platform/kim/baud_rate | ||
14 | Date: January 2010 | ||
15 | KernelVersion: 2.6.38 | ||
16 | Contact: "Pavan Savoy" <pavan_savoy@ti.com> | ||
17 | Description: | ||
18 | The maximum reliable baud-rate the host can support. | ||
19 | Different platforms tend to have different high-speed | ||
20 | UART configurations, so the baud-rate needs to be set | ||
21 | locally and also sent across to the WL128x via a HCI-VS | ||
22 | command. The entry is read and made use by the user-space | ||
23 | daemon when the ldisc install is requested. | ||
24 | |||
25 | What: /sys/devices/platform/kim/flow_cntrl | ||
26 | Date: January 2010 | ||
27 | KernelVersion: 2.6.38 | ||
28 | Contact: "Pavan Savoy" <pavan_savoy@ti.com> | ||
29 | Description: | ||
30 | The WL128x makes use of flow control mechanism, and this | ||
31 | entry most often should be 1, the host's UART is required | ||
32 | to have the capability of flow-control, or else this | ||
33 | entry can be made use of for exceptions. | ||
34 | |||
35 | What: /sys/devices/platform/kim/install | ||
36 | Date: January 2010 | ||
37 | KernelVersion: 2.6.38 | ||
38 | Contact: "Pavan Savoy" <pavan_savoy@ti.com> | ||
39 | Description: | ||
40 | When one of the protocols Bluetooth, FM or GPS wants to make | ||
41 | use of the shared UART transport, it registers to the shared | ||
42 | transport driver, which will signal the user-space for opening, | ||
43 | configuring baud and install line discipline via this sysfs | ||
44 | entry. This entry would be polled upon by the user-space | ||
45 | daemon managing the UART, and is notified about the change | ||
46 | by the sysfs_notify. The value would be '1' when UART needs | ||
47 | to be opened/ldisc installed, and would be '0' when UART | ||
48 | is no more required and needs to be closed. | ||
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle index 8bb37237ebd2..1cd3478e5834 100644 --- a/Documentation/CodingStyle +++ b/Documentation/CodingStyle | |||
@@ -659,7 +659,7 @@ There are a number of driver model diagnostic macros in <linux/device.h> | |||
659 | which you should use to make sure messages are matched to the right device | 659 | which you should use to make sure messages are matched to the right device |
660 | and driver, and are tagged with the right level: dev_err(), dev_warn(), | 660 | and driver, and are tagged with the right level: dev_err(), dev_warn(), |
661 | dev_info(), and so forth. For messages that aren't associated with a | 661 | dev_info(), and so forth. For messages that aren't associated with a |
662 | particular device, <linux/kernel.h> defines pr_debug() and pr_info(). | 662 | particular device, <linux/printk.h> defines pr_debug() and pr_info(). |
663 | 663 | ||
664 | Coming up with good debugging messages can be quite a challenge; and once | 664 | Coming up with good debugging messages can be quite a challenge; and once |
665 | you have them, they can be a huge help for remote troubleshooting. Such | 665 | you have them, they can be a huge help for remote troubleshooting. Such |
@@ -819,6 +819,3 @@ language C, URL: http://www.open-std.org/JTC1/SC22/WG14/ | |||
819 | Kernel CodingStyle, by greg@kroah.com at OLS 2002: | 819 | Kernel CodingStyle, by greg@kroah.com at OLS 2002: |
820 | http://www.kroah.com/linux/talks/ols_2002_kernel_codingstyle_talk/html/ | 820 | http://www.kroah.com/linux/talks/ols_2002_kernel_codingstyle_talk/html/ |
821 | 821 | ||
822 | -- | ||
823 | Last updated on 2007-July-13. | ||
824 | |||
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 2861055afd7a..c27915893974 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
@@ -73,8 +73,8 @@ | |||
73 | services. | 73 | services. |
74 | </para> | 74 | </para> |
75 | <para> | 75 | <para> |
76 | The core of every DRM driver is struct drm_device. Drivers | 76 | The core of every DRM driver is struct drm_driver. Drivers |
77 | will typically statically initialize a drm_device structure, | 77 | will typically statically initialize a drm_driver structure, |
78 | then pass it to drm_init() at load time. | 78 | then pass it to drm_init() at load time. |
79 | </para> | 79 | </para> |
80 | 80 | ||
@@ -84,7 +84,7 @@ | |||
84 | <title>Driver initialization</title> | 84 | <title>Driver initialization</title> |
85 | <para> | 85 | <para> |
86 | Before calling the DRM initialization routines, the driver must | 86 | Before calling the DRM initialization routines, the driver must |
87 | first create and fill out a struct drm_device structure. | 87 | first create and fill out a struct drm_driver structure. |
88 | </para> | 88 | </para> |
89 | <programlisting> | 89 | <programlisting> |
90 | static struct drm_driver driver = { | 90 | static struct drm_driver driver = { |
diff --git a/Documentation/DocBook/filesystems.tmpl b/Documentation/DocBook/filesystems.tmpl index 5e87ad58c0b5..f51f28531b8d 100644 --- a/Documentation/DocBook/filesystems.tmpl +++ b/Documentation/DocBook/filesystems.tmpl | |||
@@ -82,6 +82,11 @@ | |||
82 | </sect1> | 82 | </sect1> |
83 | </chapter> | 83 | </chapter> |
84 | 84 | ||
85 | <chapter id="fs_events"> | ||
86 | <title>Events based on file descriptors</title> | ||
87 | !Efs/eventfd.c | ||
88 | </chapter> | ||
89 | |||
85 | <chapter id="sysfs"> | 90 | <chapter id="sysfs"> |
86 | <title>The Filesystem for Exporting Kernel Objects</title> | 91 | <title>The Filesystem for Exporting Kernel Objects</title> |
87 | !Efs/sysfs/file.c | 92 | !Efs/sysfs/file.c |
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt index cfaac34c4557..6ef692667e2f 100644 --- a/Documentation/RCU/whatisRCU.txt +++ b/Documentation/RCU/whatisRCU.txt | |||
@@ -849,6 +849,37 @@ All: lockdep-checked RCU-protected pointer access | |||
849 | See the comment headers in the source code (or the docbook generated | 849 | See the comment headers in the source code (or the docbook generated |
850 | from them) for more information. | 850 | from them) for more information. |
851 | 851 | ||
852 | However, given that there are no fewer than four families of RCU APIs | ||
853 | in the Linux kernel, how do you choose which one to use? The following | ||
854 | list can be helpful: | ||
855 | |||
856 | a. Will readers need to block? If so, you need SRCU. | ||
857 | |||
858 | b. What about the -rt patchset? If readers would need to block | ||
859 | in an non-rt kernel, you need SRCU. If readers would block | ||
860 | in a -rt kernel, but not in a non-rt kernel, SRCU is not | ||
861 | necessary. | ||
862 | |||
863 | c. Do you need to treat NMI handlers, hardirq handlers, | ||
864 | and code segments with preemption disabled (whether | ||
865 | via preempt_disable(), local_irq_save(), local_bh_disable(), | ||
866 | or some other mechanism) as if they were explicit RCU readers? | ||
867 | If so, you need RCU-sched. | ||
868 | |||
869 | d. Do you need RCU grace periods to complete even in the face | ||
870 | of softirq monopolization of one or more of the CPUs? For | ||
871 | example, is your code subject to network-based denial-of-service | ||
872 | attacks? If so, you need RCU-bh. | ||
873 | |||
874 | e. Is your workload too update-intensive for normal use of | ||
875 | RCU, but inappropriate for other synchronization mechanisms? | ||
876 | If so, consider SLAB_DESTROY_BY_RCU. But please be careful! | ||
877 | |||
878 | f. Otherwise, use RCU. | ||
879 | |||
880 | Of course, this all assumes that you have determined that RCU is in fact | ||
881 | the right tool for your job. | ||
882 | |||
852 | 883 | ||
853 | 8. ANSWERS TO QUICK QUIZZES | 884 | 8. ANSWERS TO QUICK QUIZZES |
854 | 885 | ||
diff --git a/Documentation/arm/SH-Mobile/Makefile b/Documentation/arm/SH-Mobile/Makefile new file mode 100644 index 000000000000..8771d832cf8c --- /dev/null +++ b/Documentation/arm/SH-Mobile/Makefile | |||
@@ -0,0 +1,8 @@ | |||
1 | BIN := vrl4 | ||
2 | |||
3 | .PHONY: all | ||
4 | all: $(BIN) | ||
5 | |||
6 | .PHONY: clean | ||
7 | clean: | ||
8 | rm -f *.o $(BIN) | ||
diff --git a/Documentation/arm/SH-Mobile/vrl4.c b/Documentation/arm/SH-Mobile/vrl4.c new file mode 100644 index 000000000000..e8a191358ad2 --- /dev/null +++ b/Documentation/arm/SH-Mobile/vrl4.c | |||
@@ -0,0 +1,169 @@ | |||
1 | /* | ||
2 | * vrl4 format generator | ||
3 | * | ||
4 | * Copyright (C) 2010 Simon Horman | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | |||
11 | /* | ||
12 | * usage: vrl4 < zImage > out | ||
13 | * dd if=out of=/dev/sdx bs=512 seek=1 # Write the image to sector 1 | ||
14 | * | ||
15 | * Reads a zImage from stdin and writes a vrl4 image to stdout. | ||
16 | * In practice this means writing a padded vrl4 header to stdout followed | ||
17 | * by the zImage. | ||
18 | * | ||
19 | * The padding places the zImage at ALIGN bytes into the output. | ||
20 | * The vrl4 uses ALIGN + START_BASE as the start_address. | ||
21 | * This is where the mask ROM will jump to after verifying the header. | ||
22 | * | ||
23 | * The header sets copy_size to min(sizeof(zImage), MAX_BOOT_PROG_LEN) + ALIGN. | ||
24 | * That is, the mask ROM will load the padded header (ALIGN bytes) | ||
25 | * And then MAX_BOOT_PROG_LEN bytes of the image, or the entire image, | ||
26 | * whichever is smaller. | ||
27 | * | ||
28 | * The zImage is not modified in any way. | ||
29 | */ | ||
30 | |||
31 | #define _BSD_SOURCE | ||
32 | #include <endian.h> | ||
33 | #include <unistd.h> | ||
34 | #include <stdint.h> | ||
35 | #include <stdio.h> | ||
36 | #include <errno.h> | ||
37 | |||
38 | struct hdr { | ||
39 | uint32_t magic1; | ||
40 | uint32_t reserved1; | ||
41 | uint32_t magic2; | ||
42 | uint32_t reserved2; | ||
43 | uint16_t copy_size; | ||
44 | uint16_t boot_options; | ||
45 | uint32_t reserved3; | ||
46 | uint32_t start_address; | ||
47 | uint32_t reserved4; | ||
48 | uint32_t reserved5; | ||
49 | char reserved6[308]; | ||
50 | }; | ||
51 | |||
52 | #define DECLARE_HDR(h) \ | ||
53 | struct hdr (h) = { \ | ||
54 | .magic1 = htole32(0xea000000), \ | ||
55 | .reserved1 = htole32(0x56), \ | ||
56 | .magic2 = htole32(0xe59ff008), \ | ||
57 | .reserved3 = htole16(0x1) } | ||
58 | |||
59 | /* Align to 512 bytes, the MMCIF sector size */ | ||
60 | #define ALIGN_BITS 9 | ||
61 | #define ALIGN (1 << ALIGN_BITS) | ||
62 | |||
63 | #define START_BASE 0xe55b0000 | ||
64 | |||
65 | /* | ||
66 | * With an alignment of 512 the header uses the first sector. | ||
67 | * There is a 128 sector (64kbyte) limit on the data loaded by the mask ROM. | ||
68 | * So there are 127 sectors left for the boot programme. But in practice | ||
69 | * Only a small portion of a zImage is needed, 16 sectors should be more | ||
70 | * than enough. | ||
71 | * | ||
72 | * Note that this sets how much of the zImage is copied by the mask ROM. | ||
73 | * The entire zImage is present after the header and is loaded | ||
74 | * by the code in the boot program (which is the first portion of the zImage). | ||
75 | */ | ||
76 | #define MAX_BOOT_PROG_LEN (16 * 512) | ||
77 | |||
78 | #define ROUND_UP(x) ((x + ALIGN - 1) & ~(ALIGN - 1)) | ||
79 | |||
80 | ssize_t do_read(int fd, void *buf, size_t count) | ||
81 | { | ||
82 | size_t offset = 0; | ||
83 | ssize_t l; | ||
84 | |||
85 | while (offset < count) { | ||
86 | l = read(fd, buf + offset, count - offset); | ||
87 | if (!l) | ||
88 | break; | ||
89 | if (l < 0) { | ||
90 | if (errno == EAGAIN || errno == EWOULDBLOCK) | ||
91 | continue; | ||
92 | perror("read"); | ||
93 | return -1; | ||
94 | } | ||
95 | offset += l; | ||
96 | } | ||
97 | |||
98 | return offset; | ||
99 | } | ||
100 | |||
101 | ssize_t do_write(int fd, const void *buf, size_t count) | ||
102 | { | ||
103 | size_t offset = 0; | ||
104 | ssize_t l; | ||
105 | |||
106 | while (offset < count) { | ||
107 | l = write(fd, buf + offset, count - offset); | ||
108 | if (l < 0) { | ||
109 | if (errno == EAGAIN || errno == EWOULDBLOCK) | ||
110 | continue; | ||
111 | perror("write"); | ||
112 | return -1; | ||
113 | } | ||
114 | offset += l; | ||
115 | } | ||
116 | |||
117 | return offset; | ||
118 | } | ||
119 | |||
120 | ssize_t write_zero(int fd, size_t len) | ||
121 | { | ||
122 | size_t i = len; | ||
123 | |||
124 | while (i--) { | ||
125 | const char x = 0; | ||
126 | if (do_write(fd, &x, 1) < 0) | ||
127 | return -1; | ||
128 | } | ||
129 | |||
130 | return len; | ||
131 | } | ||
132 | |||
133 | int main(void) | ||
134 | { | ||
135 | DECLARE_HDR(hdr); | ||
136 | char boot_program[MAX_BOOT_PROG_LEN]; | ||
137 | size_t aligned_hdr_len, alligned_prog_len; | ||
138 | ssize_t prog_len; | ||
139 | |||
140 | prog_len = do_read(0, boot_program, sizeof(boot_program)); | ||
141 | if (prog_len <= 0) | ||
142 | return -1; | ||
143 | |||
144 | aligned_hdr_len = ROUND_UP(sizeof(hdr)); | ||
145 | hdr.start_address = htole32(START_BASE + aligned_hdr_len); | ||
146 | alligned_prog_len = ROUND_UP(prog_len); | ||
147 | hdr.copy_size = htole16(aligned_hdr_len + alligned_prog_len); | ||
148 | |||
149 | if (do_write(1, &hdr, sizeof(hdr)) < 0) | ||
150 | return -1; | ||
151 | if (write_zero(1, aligned_hdr_len - sizeof(hdr)) < 0) | ||
152 | return -1; | ||
153 | |||
154 | if (do_write(1, boot_program, prog_len) < 0) | ||
155 | return 1; | ||
156 | |||
157 | /* Write out the rest of the kernel */ | ||
158 | while (1) { | ||
159 | prog_len = do_read(0, boot_program, sizeof(boot_program)); | ||
160 | if (prog_len < 0) | ||
161 | return 1; | ||
162 | if (prog_len == 0) | ||
163 | break; | ||
164 | if (do_write(1, boot_program, prog_len) < 0) | ||
165 | return 1; | ||
166 | } | ||
167 | |||
168 | return 0; | ||
169 | } | ||
diff --git a/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt b/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt new file mode 100644 index 000000000000..efff8ae2713d --- /dev/null +++ b/Documentation/arm/SH-Mobile/zboot-rom-mmcif.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | ROM-able zImage boot from MMC | ||
2 | ----------------------------- | ||
3 | |||
4 | An ROM-able zImage compiled with ZBOOT_ROM_MMCIF may be written to MMC and | ||
5 | SuperH Mobile ARM will to boot directly from the MMCIF hardware block. | ||
6 | |||
7 | This is achieved by the mask ROM loading the first portion of the image into | ||
8 | MERAM and then jumping to it. This portion contains loader code which | ||
9 | copies the entire image to SDRAM and jumps to it. From there the zImage | ||
10 | boot code proceeds as normal, uncompressing the image into its final | ||
11 | location and then jumping to it. | ||
12 | |||
13 | This code has been tested on an AP4EB board using the developer 1A eMMC | ||
14 | boot mode which is configured using the following jumper settings. | ||
15 | The board used for testing required a patched mask ROM in order for | ||
16 | this mode to function. | ||
17 | |||
18 | 8 7 6 5 4 3 2 1 | ||
19 | x|x|x|x|x| |x| | ||
20 | S4 -+-+-+-+-+-+-+- | ||
21 | | | | | |x| |x on | ||
22 | |||
23 | The zImage must be written to the MMC card at sector 1 (512 bytes) in | ||
24 | vrl4 format. A utility vrl4 is supplied to accomplish this. | ||
25 | |||
26 | e.g. | ||
27 | vrl4 < zImage | dd of=/dev/sdX bs=512 seek=1 | ||
28 | |||
29 | A dual-voltage MMC 4.0 card was used for testing. | ||
diff --git a/Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen b/Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen deleted file mode 100644 index dc460f055647..000000000000 --- a/Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen +++ /dev/null | |||
@@ -1,61 +0,0 @@ | |||
1 | README on the ADC/Touchscreen Controller | ||
2 | ======================================== | ||
3 | |||
4 | The LH79524 and LH7A404 include a built-in Analog to Digital | ||
5 | controller (ADC) that is used to process input from a touchscreen. | ||
6 | The driver only implements a four-wire touch panel protocol. | ||
7 | |||
8 | The touchscreen driver is maintenance free except for the pen-down or | ||
9 | touch threshold. Some resistive displays and board combinations may | ||
10 | require tuning of this threshold. The driver exposes some of its | ||
11 | internal state in the sys filesystem. If the kernel is configured | ||
12 | with it, CONFIG_SYSFS, and sysfs is mounted at /sys, there will be a | ||
13 | directory | ||
14 | |||
15 | /sys/devices/platform/adc-lh7.0 | ||
16 | |||
17 | containing these files. | ||
18 | |||
19 | -r--r--r-- 1 root root 4096 Jan 1 00:00 samples | ||
20 | -rw-r--r-- 1 root root 4096 Jan 1 00:00 threshold | ||
21 | -r--r--r-- 1 root root 4096 Jan 1 00:00 threshold_range | ||
22 | |||
23 | The threshold is the current touch threshold. It defaults to 750 on | ||
24 | most targets. | ||
25 | |||
26 | # cat threshold | ||
27 | 750 | ||
28 | |||
29 | The threshold_range contains the range of valid values for the | ||
30 | threshold. Values outside of this range will be silently ignored. | ||
31 | |||
32 | # cat threshold_range | ||
33 | 0 1023 | ||
34 | |||
35 | To change the threshold, write a value to the threshold file. | ||
36 | |||
37 | # echo 500 > threshold | ||
38 | # cat threshold | ||
39 | 500 | ||
40 | |||
41 | The samples file contains the most recently sampled values from the | ||
42 | ADC. There are 12. Below are typical of the last sampled values when | ||
43 | the pen has been released. The first two and last two samples are for | ||
44 | detecting whether or not the pen is down. The third through sixth are | ||
45 | X coordinate samples. The seventh through tenth are Y coordinate | ||
46 | samples. | ||
47 | |||
48 | # cat samples | ||
49 | 1023 1023 0 0 0 0 530 529 530 529 1023 1023 | ||
50 | |||
51 | To determine a reasonable threshold, press on the touch panel with an | ||
52 | appropriate stylus and read the values from samples. | ||
53 | |||
54 | # cat samples | ||
55 | 1023 676 92 103 101 102 855 919 922 922 1023 679 | ||
56 | |||
57 | The first and eleventh samples are discarded. Thus, the important | ||
58 | values are the second and twelfth which are used to determine if the | ||
59 | pen is down. When both are below the threshold, the driver registers | ||
60 | that the pen is down. When either is above the threshold, it | ||
61 | registers then pen is up. | ||
diff --git a/Documentation/arm/Sharp-LH/CompactFlash b/Documentation/arm/Sharp-LH/CompactFlash deleted file mode 100644 index 8616d877df9e..000000000000 --- a/Documentation/arm/Sharp-LH/CompactFlash +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | README on the Compact Flash for Card Engines | ||
2 | ============================================ | ||
3 | |||
4 | There are three challenges in supporting the CF interface of the Card | ||
5 | Engines. First, every IO operation must be followed with IO to | ||
6 | another memory region. Second, the slot is wired for one-to-one | ||
7 | address mapping *and* it is wired for 16 bit access only. Second, the | ||
8 | interrupt request line from the CF device isn't wired. | ||
9 | |||
10 | The IOBARRIER issue is covered in README.IOBARRIER. This isn't an | ||
11 | onerous problem. Enough said here. | ||
12 | |||
13 | The addressing issue is solved in the | ||
14 | arch/arm/mach-lh7a40x/ide-lpd7a40x.c file with some awkward | ||
15 | work-arounds. We implement a special SELECT_DRIVE routine that is | ||
16 | called before the IDE driver performs its own SELECT_DRIVE. Our code | ||
17 | recognizes that the SELECT register cannot be modified without also | ||
18 | writing a command. It send an IDLE_IMMEDIATE command on selecting a | ||
19 | drive. The function also prevents drive select to the slave drive | ||
20 | since there can be only one. The awkward part is that the IDE driver, | ||
21 | even though we have a select procedure, also attempts to change the | ||
22 | drive by writing directly the SELECT register. This attempt is | ||
23 | explicitly blocked by the OUTB function--not pretty, but effective. | ||
24 | |||
25 | The lack of interrupts is a more serious problem. Even though the CF | ||
26 | card is fast when compared to a normal IDE device, we don't know that | ||
27 | the CF is really flash. A user could use one of the very small hard | ||
28 | drives being shipped with a CF interface. The IDE code includes a | ||
29 | check for interfaces that lack an IRQ. In these cases, submitting a | ||
30 | command to the IDE controller is followed by a call to poll for | ||
31 | completion. If the device isn't immediately ready, it schedules a | ||
32 | timer to poll again later. | ||
diff --git a/Documentation/arm/Sharp-LH/IOBarrier b/Documentation/arm/Sharp-LH/IOBarrier deleted file mode 100644 index 2e953e228f4d..000000000000 --- a/Documentation/arm/Sharp-LH/IOBarrier +++ /dev/null | |||
@@ -1,45 +0,0 @@ | |||
1 | README on the IOBARRIER for CardEngine IO | ||
2 | ========================================= | ||
3 | |||
4 | Due to an unfortunate oversight when the Card Engines were designed, | ||
5 | the signals that control access to some peripherals, most notably the | ||
6 | SMC91C9111 ethernet controller, are not properly handled. | ||
7 | |||
8 | The symptom is that some back to back IO with the peripheral returns | ||
9 | unreliable data. With the SMC chip, you'll see errors about the bank | ||
10 | register being 'screwed'. | ||
11 | |||
12 | The cause is that the AEN signal to the SMC chip does not transition | ||
13 | for every memory access. It is driven through the CPLD from the CS7 | ||
14 | line of the CPU's static memory controller which is optimized to | ||
15 | eliminate unnecessary transitions. Yet, the SMC requires a transition | ||
16 | for every write access. The Sharp website has more information about | ||
17 | the effect this power-conserving feature has on peripheral | ||
18 | interfacing. | ||
19 | |||
20 | The solution is to follow every write access to the SMC chip with an | ||
21 | access to another memory region that will force the CPU to release the | ||
22 | chip select line. It is important to guarantee that this access | ||
23 | forces the CPU off-chip. We map a page of SDRAM as if it were an | ||
24 | uncacheable IO device and read from it after every SMC IO write | ||
25 | operation. | ||
26 | |||
27 | SMC IO | ||
28 | BARRIER IO | ||
29 | |||
30 | Only this sequence is important. It does not matter that there is no | ||
31 | BARRIER IO before the access to the SMC chip because the AEN latch | ||
32 | only needs occurs after the SMC IO write cycle. The routines that | ||
33 | implement this work-around make an additional concession which is to | ||
34 | disable interrupts during the IO sequence. Other hardware devices | ||
35 | (the LogicPD CPLD) have registers in the same physical memory | ||
36 | region as the SMC chip. An interrupt might allow an access to one of | ||
37 | those registers while SMC IO is being performed. | ||
38 | |||
39 | You might be tempted to think that we have to access another device | ||
40 | attached to the static memory controller, but the empirical evidence | ||
41 | indicates that this is not so. Mapping 0x00000000 (flash) and | ||
42 | 0xc0000000 (SDRAM) appear to have the same effect. Using SDRAM seems | ||
43 | to be faster. Choosing to access an undecoded memory region is not | ||
44 | desirable as there is no way to know how that chip select will be used | ||
45 | in the future. | ||
diff --git a/Documentation/arm/Sharp-LH/KEV7A400 b/Documentation/arm/Sharp-LH/KEV7A400 deleted file mode 100644 index be32b14cd535..000000000000 --- a/Documentation/arm/Sharp-LH/KEV7A400 +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | README on Implementing Linux for Sharp's KEV7a400 | ||
2 | ================================================= | ||
3 | |||
4 | This product has been discontinued by Sharp. For the time being, the | ||
5 | partially implemented code remains in the kernel. At some point in | ||
6 | the future, either the code will be finished or it will be removed | ||
7 | completely. This depends primarily on how many of the development | ||
8 | boards are in the field. | ||
diff --git a/Documentation/arm/Sharp-LH/LCDPanels b/Documentation/arm/Sharp-LH/LCDPanels deleted file mode 100644 index fb1b21c2f2f4..000000000000 --- a/Documentation/arm/Sharp-LH/LCDPanels +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | README on the LCD Panels | ||
2 | ======================== | ||
3 | |||
4 | Configuration options for several LCD panels, available from Logic PD, | ||
5 | are included in the kernel source. This README will help you | ||
6 | understand the configuration data and give you some guidance for | ||
7 | adding support for other panels if you wish. | ||
8 | |||
9 | |||
10 | lcd-panels.h | ||
11 | ------------ | ||
12 | |||
13 | There is no way, at present, to detect which panel is attached to the | ||
14 | system at runtime. Thus the kernel configuration is static. The file | ||
15 | arch/arm/mach-ld7a40x/lcd-panels.h (or similar) defines all of the | ||
16 | panel specific parameters. | ||
17 | |||
18 | It should be possible for this data to be shared among several device | ||
19 | families. The current layout may be insufficiently general, but it is | ||
20 | amenable to improvement. | ||
21 | |||
22 | |||
23 | PIXEL_CLOCK | ||
24 | ----------- | ||
25 | |||
26 | The panel data sheets will give a range of acceptable pixel clocks. | ||
27 | The fundamental LCDCLK input frequency is divided down by a PCD | ||
28 | constant in field '.tim2'. It may happen that it is impossible to set | ||
29 | the pixel clock within this range. A clock which is too slow will | ||
30 | tend to flicker. For the highest quality image, set the clock as high | ||
31 | as possible. | ||
32 | |||
33 | |||
34 | MARGINS | ||
35 | ------- | ||
36 | |||
37 | These values may be difficult to glean from the panel data sheet. In | ||
38 | the case of the Sharp panels, the upper margin is explicitly called | ||
39 | out as a specific number of lines from the top of the frame. The | ||
40 | other values may not matter as much as the panels tend to | ||
41 | automatically center the image. | ||
42 | |||
43 | |||
44 | Sync Sense | ||
45 | ---------- | ||
46 | |||
47 | The sense of the hsync and vsync pulses may be called out in the data | ||
48 | sheet. On one panel, the sense of these pulses determine the height | ||
49 | of the visible region on the panel. Most of the Sharp panels use | ||
50 | negative sense sync pulses set by the TIM2_IHS and TIM2_IVS bits in | ||
51 | '.tim2'. | ||
52 | |||
53 | |||
54 | Pel Layout | ||
55 | ---------- | ||
56 | |||
57 | The Sharp color TFT panels are all configured for 16 bit direct color | ||
58 | modes. The amba-lcd driver sets the pel mode to 565 for 5 bits of | ||
59 | each red and blue and 6 bits of green. | ||
diff --git a/Documentation/arm/Sharp-LH/LPD7A400 b/Documentation/arm/Sharp-LH/LPD7A400 deleted file mode 100644 index 3275b453bfdf..000000000000 --- a/Documentation/arm/Sharp-LH/LPD7A400 +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | README on Implementing Linux for the Logic PD LPD7A400-10 | ||
2 | ========================================================= | ||
3 | |||
4 | - CPLD memory mapping | ||
5 | |||
6 | The board designers chose to use high address lines for controlling | ||
7 | access to the CPLD registers. It turns out to be a big waste | ||
8 | because we're using an MMU and must map IO space into virtual | ||
9 | memory. The result is that we have to make a mapping for every | ||
10 | register. | ||
11 | |||
12 | - Serial Console | ||
13 | |||
14 | It may be OK not to use the serial console option if the user passes | ||
15 | the console device name to the kernel. This deserves some exploration. | ||
diff --git a/Documentation/arm/Sharp-LH/LPD7A40X b/Documentation/arm/Sharp-LH/LPD7A40X deleted file mode 100644 index 8c29a27e208f..000000000000 --- a/Documentation/arm/Sharp-LH/LPD7A40X +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | README on Implementing Linux for the Logic PD LPD7A40X-10 | ||
2 | ========================================================= | ||
3 | |||
4 | - CPLD memory mapping | ||
5 | |||
6 | The board designers chose to use high address lines for controlling | ||
7 | access to the CPLD registers. It turns out to be a big waste | ||
8 | because we're using an MMU and must map IO space into virtual | ||
9 | memory. The result is that we have to make a mapping for every | ||
10 | register. | ||
11 | |||
12 | - Serial Console | ||
13 | |||
14 | It may be OK not to use the serial console option if the user passes | ||
15 | the console device name to the kernel. This deserves some exploration. | ||
16 | |||
diff --git a/Documentation/arm/Sharp-LH/SDRAM b/Documentation/arm/Sharp-LH/SDRAM deleted file mode 100644 index 93ddc23c2faa..000000000000 --- a/Documentation/arm/Sharp-LH/SDRAM +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | README on the SDRAM Controller for the LH7a40X | ||
2 | ============================================== | ||
3 | |||
4 | The standard configuration for the SDRAM controller generates a sparse | ||
5 | memory array. The precise layout is determined by the SDRAM chips. A | ||
6 | default kernel configuration assembles the discontiguous memory | ||
7 | regions into separate memory nodes via the NUMA (Non-Uniform Memory | ||
8 | Architecture) facilities. In this default configuration, the kernel | ||
9 | is forgiving about the precise layout. As long as it is given an | ||
10 | accurate picture of available memory by the bootloader the kernel will | ||
11 | execute correctly. | ||
12 | |||
13 | The SDRC supports a mode where some of the chip select lines are | ||
14 | swapped in order to make SDRAM look like a synchronous ROM. Setting | ||
15 | this bit means that the RAM will present as a contiguous array. Some | ||
16 | programmers prefer this to the discontiguous layout. Be aware that | ||
17 | may be a penalty for this feature where some some configurations of | ||
18 | memory are significantly reduced; i.e. 64MiB of RAM appears as only 32 | ||
19 | MiB. | ||
20 | |||
21 | There are a couple of configuration options to override the default | ||
22 | behavior. When the SROMLL bit is set and memory appears as a | ||
23 | contiguous array, there is no reason to support NUMA. | ||
24 | CONFIG_LH7A40X_CONTIGMEM disables NUMA support. When physical memory | ||
25 | is discontiguous, the memory tables are organized such that there are | ||
26 | two banks per nodes with a small gap between them. This layout wastes | ||
27 | some kernel memory for page tables representing non-existent memory. | ||
28 | CONFIG_LH7A40X_ONE_BANK_PER_NODE optimizes the node tables such that | ||
29 | there are no gaps. These options control the low level organization | ||
30 | of the memory management tables in ways that may prevent the kernel | ||
31 | from booting or may cause the kernel to allocated excessively large | ||
32 | page tables. Be warned. Only change these options if you know what | ||
33 | you are doing. The default behavior is a reasonable compromise that | ||
34 | will suit all users. | ||
35 | |||
36 | -- | ||
37 | |||
38 | A typical 32MiB system with the default configuration options will | ||
39 | find physical memory managed as follows. | ||
40 | |||
41 | node 0: 0xc0000000 4MiB | ||
42 | 0xc1000000 4MiB | ||
43 | node 1: 0xc4000000 4MiB | ||
44 | 0xc5000000 4MiB | ||
45 | node 2: 0xc8000000 4MiB | ||
46 | 0xc9000000 4MiB | ||
47 | node 3: 0xcc000000 4MiB | ||
48 | 0xcd000000 4MiB | ||
49 | |||
50 | Setting CONFIG_LH7A40X_ONE_BANK_PER_NODE will put each bank into a | ||
51 | separate node. | ||
diff --git a/Documentation/arm/Sharp-LH/VectoredInterruptController b/Documentation/arm/Sharp-LH/VectoredInterruptController deleted file mode 100644 index 23047e9861ee..000000000000 --- a/Documentation/arm/Sharp-LH/VectoredInterruptController +++ /dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | README on the Vectored Interrupt Controller of the LH7A404 | ||
2 | ========================================================== | ||
3 | |||
4 | The 404 revision of the LH7A40X series comes with two vectored | ||
5 | interrupts controllers. While the kernel does use some of the | ||
6 | features of these devices, it is far from the purpose for which they | ||
7 | were designed. | ||
8 | |||
9 | When this README was written, the implementation of the VICs was in | ||
10 | flux. It is possible that some details, especially with priorities, | ||
11 | will change. | ||
12 | |||
13 | The VIC support code is inspired by routines written by Sharp. | ||
14 | |||
15 | |||
16 | Priority Control | ||
17 | ---------------- | ||
18 | |||
19 | The significant reason for using the VIC's vectoring is to control | ||
20 | interrupt priorities. There are two tables in | ||
21 | arch/arm/mach-lh7a40x/irq-lh7a404.c that look something like this. | ||
22 | |||
23 | static unsigned char irq_pri_vic1[] = { IRQ_GPIO3INTR, }; | ||
24 | static unsigned char irq_pri_vic2[] = { | ||
25 | IRQ_T3UI, IRQ_GPIO7INTR, | ||
26 | IRQ_UART1INTR, IRQ_UART2INTR, IRQ_UART3INTR, }; | ||
27 | |||
28 | The initialization code reads these tables and inserts a vector | ||
29 | address and enable for each indicated IRQ. Vectored interrupts have | ||
30 | higher priority than non-vectored interrupts. So, on VIC1, | ||
31 | IRQ_GPIO3INTR will be served before any other non-FIQ interrupt. Due | ||
32 | to the way that the vectoring works, IRQ_T3UI is the next highest | ||
33 | priority followed by the other vectored interrupts on VIC2. After | ||
34 | that, the non-vectored interrupts are scanned in VIC1 then in VIC2. | ||
35 | |||
36 | |||
37 | ISR | ||
38 | --- | ||
39 | |||
40 | The interrupt service routine macro get_irqnr() in | ||
41 | arch/arm/kernel/entry-armv.S scans the VICs for the next active | ||
42 | interrupt. The vectoring makes this code somewhat larger than it was | ||
43 | before using vectoring (refer to the LH7A400 implementation). In the | ||
44 | case where an interrupt is vectored, the implementation will tend to | ||
45 | be faster than the non-vectored version. However, the worst-case path | ||
46 | is longer. | ||
47 | |||
48 | It is worth noting that at present, there is no need to read | ||
49 | VIC2_VECTADDR because the register appears to be shared between the | ||
50 | controllers. The code is written such that if this changes, it ought | ||
51 | to still work properly. | ||
52 | |||
53 | |||
54 | Vector Addresses | ||
55 | ---------------- | ||
56 | |||
57 | The proper use of the vectoring hardware would jump to the ISR | ||
58 | specified by the vectoring address. Linux isn't structured to take | ||
59 | advantage of this feature, though it might be possible to change | ||
60 | things to support it. | ||
61 | |||
62 | In this implementation, the vectoring address is used to speed the | ||
63 | search for the active IRQ. The address is coded such that the lowest | ||
64 | 6 bits store the IRQ number for vectored interrupts. These numbers | ||
65 | correspond to the bits in the interrupt status registers. IRQ zero is | ||
66 | the lowest interrupt bit in VIC1. IRQ 32 is the lowest interrupt bit | ||
67 | in VIC2. Because zero is a valid IRQ number and because we cannot | ||
68 | detect whether or not there is a valid vectoring address if that | ||
69 | address is zero, the eigth bit (0x100) is set for vectored interrupts. | ||
70 | The address for IRQ 0x18 (VIC2) is 0x118. Only the ninth bit is set | ||
71 | for the default handler on VIC1 and only the tenth bit is set for the | ||
72 | default handler on VIC2. | ||
73 | |||
74 | In other words. | ||
75 | |||
76 | 0x000 - no active interrupt | ||
77 | 0x1ii - vectored interrupt 0xii | ||
78 | 0x2xx - unvectored interrupt on VIC1 (xx is don't care) | ||
79 | 0x4xx - unvectored interrupt on VIC2 (xx is don't care) | ||
80 | |||
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt index 44b8b7af8019..cbdfb7d9455b 100644 --- a/Documentation/cgroups/cgroups.txt +++ b/Documentation/cgroups/cgroups.txt | |||
@@ -349,6 +349,10 @@ To mount a cgroup hierarchy with all available subsystems, type: | |||
349 | The "xxx" is not interpreted by the cgroup code, but will appear in | 349 | The "xxx" is not interpreted by the cgroup code, but will appear in |
350 | /proc/mounts so may be any useful identifying string that you like. | 350 | /proc/mounts so may be any useful identifying string that you like. |
351 | 351 | ||
352 | Note: Some subsystems do not work without some user input first. For instance, | ||
353 | if cpusets are enabled the user will have to populate the cpus and mems files | ||
354 | for each new cgroup created before that group can be used. | ||
355 | |||
352 | To mount a cgroup hierarchy with just the cpuset and memory | 356 | To mount a cgroup hierarchy with just the cpuset and memory |
353 | subsystems, type: | 357 | subsystems, type: |
354 | # mount -t cgroup -o cpuset,memory hier1 /dev/cgroup | 358 | # mount -t cgroup -o cpuset,memory hier1 /dev/cgroup |
@@ -426,6 +430,14 @@ You can attach the current shell task by echoing 0: | |||
426 | 430 | ||
427 | # echo 0 > tasks | 431 | # echo 0 > tasks |
428 | 432 | ||
433 | Note: Since every task is always a member of exactly one cgroup in each | ||
434 | mounted hierarchy, to remove a task from its current cgroup you must | ||
435 | move it into a new cgroup (possibly the root cgroup) by writing to the | ||
436 | new cgroup's tasks file. | ||
437 | |||
438 | Note: If the ns cgroup is active, moving a process to another cgroup can | ||
439 | fail. | ||
440 | |||
429 | 2.3 Mounting hierarchies by name | 441 | 2.3 Mounting hierarchies by name |
430 | -------------------------------- | 442 | -------------------------------- |
431 | 443 | ||
diff --git a/Documentation/cgroups/cpusets.txt b/Documentation/cgroups/cpusets.txt index 5d0d5692a365..98a30829af7a 100644 --- a/Documentation/cgroups/cpusets.txt +++ b/Documentation/cgroups/cpusets.txt | |||
@@ -693,7 +693,7 @@ There are ways to query or modify cpusets: | |||
693 | - via the C library libcgroup. | 693 | - via the C library libcgroup. |
694 | (http://sourceforge.net/projects/libcg/) | 694 | (http://sourceforge.net/projects/libcg/) |
695 | - via the python application cset. | 695 | - via the python application cset. |
696 | (http://developer.novell.com/wiki/index.php/Cpuset) | 696 | (http://code.google.com/p/cpuset/) |
697 | 697 | ||
698 | The sched_setaffinity calls can also be done at the shell prompt using | 698 | The sched_setaffinity calls can also be done at the shell prompt using |
699 | SGI's runon or Robert Love's taskset. The mbind and set_mempolicy | 699 | SGI's runon or Robert Love's taskset. The mbind and set_mempolicy |
@@ -725,13 +725,14 @@ Now you want to do something with this cpuset. | |||
725 | 725 | ||
726 | In this directory you can find several files: | 726 | In this directory you can find several files: |
727 | # ls | 727 | # ls |
728 | cpuset.cpu_exclusive cpuset.memory_spread_slab | 728 | cgroup.clone_children cpuset.memory_pressure |
729 | cpuset.cpus cpuset.mems | 729 | cgroup.event_control cpuset.memory_spread_page |
730 | cpuset.mem_exclusive cpuset.sched_load_balance | 730 | cgroup.procs cpuset.memory_spread_slab |
731 | cpuset.mem_hardwall cpuset.sched_relax_domain_level | 731 | cpuset.cpu_exclusive cpuset.mems |
732 | cpuset.memory_migrate notify_on_release | 732 | cpuset.cpus cpuset.sched_load_balance |
733 | cpuset.memory_pressure tasks | 733 | cpuset.mem_exclusive cpuset.sched_relax_domain_level |
734 | cpuset.memory_spread_page | 734 | cpuset.mem_hardwall notify_on_release |
735 | cpuset.memory_migrate tasks | ||
735 | 736 | ||
736 | Reading them will give you information about the state of this cpuset: | 737 | Reading them will give you information about the state of this cpuset: |
737 | the CPUs and Memory Nodes it can use, the processes that are using | 738 | the CPUs and Memory Nodes it can use, the processes that are using |
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt index 7781857dc940..b6ed61c95856 100644 --- a/Documentation/cgroups/memory.txt +++ b/Documentation/cgroups/memory.txt | |||
@@ -485,8 +485,9 @@ The feature can be disabled by | |||
485 | 485 | ||
486 | # echo 0 > memory.use_hierarchy | 486 | # echo 0 > memory.use_hierarchy |
487 | 487 | ||
488 | NOTE1: Enabling/disabling will fail if the cgroup already has other | 488 | NOTE1: Enabling/disabling will fail if either the cgroup already has other |
489 | cgroups created below it. | 489 | cgroups created below it, or if the parent cgroup has use_hierarchy |
490 | enabled. | ||
490 | 491 | ||
491 | NOTE2: When panic_on_oom is set to "2", the whole system will panic in | 492 | NOTE2: When panic_on_oom is set to "2", the whole system will panic in |
492 | case of an OOM event in any cgroup. | 493 | case of an OOM event in any cgroup. |
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt index 737988fca64d..e74d0a2eb1cf 100644 --- a/Documentation/cpu-freq/governors.txt +++ b/Documentation/cpu-freq/governors.txt | |||
@@ -158,6 +158,17 @@ intensive calculation on your laptop that you do not care how long it | |||
158 | takes to complete as you can 'nice' it and prevent it from taking part | 158 | takes to complete as you can 'nice' it and prevent it from taking part |
159 | in the deciding process of whether to increase your CPU frequency. | 159 | in the deciding process of whether to increase your CPU frequency. |
160 | 160 | ||
161 | sampling_down_factor: this parameter controls the rate at which the | ||
162 | kernel makes a decision on when to decrease the frequency while running | ||
163 | at top speed. When set to 1 (the default) decisions to reevaluate load | ||
164 | are made at the same interval regardless of current clock speed. But | ||
165 | when set to greater than 1 (e.g. 100) it acts as a multiplier for the | ||
166 | scheduling interval for reevaluating load when the CPU is at its top | ||
167 | speed due to high load. This improves performance by reducing the overhead | ||
168 | of load evaluation and helping the CPU stay at its top speed when truly | ||
169 | busy, rather than shifting back and forth in speed. This tunable has no | ||
170 | effect on behavior at lower speeds/lower CPU loads. | ||
171 | |||
161 | 172 | ||
162 | 2.5 Conservative | 173 | 2.5 Conservative |
163 | ---------------- | 174 | ---------------- |
diff --git a/Documentation/device-mapper/dm-crypt.txt b/Documentation/device-mapper/dm-crypt.txt index 59293ac4a5d0..6b5c42dbbe84 100644 --- a/Documentation/device-mapper/dm-crypt.txt +++ b/Documentation/device-mapper/dm-crypt.txt | |||
@@ -41,7 +41,7 @@ Example scripts | |||
41 | =============== | 41 | =============== |
42 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | 42 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk |
43 | encryption with dm-crypt using the 'cryptsetup' utility, see | 43 | encryption with dm-crypt using the 'cryptsetup' utility, see |
44 | http://clemens.endorphin.org/cryptography | 44 | http://code.google.com/p/cryptsetup/ |
45 | 45 | ||
46 | [[ | 46 | [[ |
47 | #!/bin/sh | 47 | #!/bin/sh |
diff --git a/Documentation/devicetree/00-INDEX b/Documentation/devicetree/00-INDEX new file mode 100644 index 000000000000..b78f691fd847 --- /dev/null +++ b/Documentation/devicetree/00-INDEX | |||
@@ -0,0 +1,10 @@ | |||
1 | Documentation for device trees, a data structure by which bootloaders pass | ||
2 | hardware layout to Linux in a device-independent manner, simplifying hardware | ||
3 | probing. This subsystem is maintained by Grant Likely | ||
4 | <grant.likely@secretlab.ca> and has a mailing list at | ||
5 | https://lists.ozlabs.org/listinfo/devicetree-discuss | ||
6 | |||
7 | 00-INDEX | ||
8 | - this file | ||
9 | booting-without-of.txt | ||
10 | - Booting Linux without Open Firmware, describes history and format of device trees. | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/sata.txt b/Documentation/devicetree/bindings/ata/fsl-sata.txt index b46bcf46c3d8..b46bcf46c3d8 100644 --- a/Documentation/powerpc/dts-bindings/fsl/sata.txt +++ b/Documentation/devicetree/bindings/ata/fsl-sata.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/eeprom.txt b/Documentation/devicetree/bindings/eeprom.txt index 4342c10de1bf..4342c10de1bf 100644 --- a/Documentation/powerpc/dts-bindings/eeprom.txt +++ b/Documentation/devicetree/bindings/eeprom.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt b/Documentation/devicetree/bindings/gpio/8xxx_gpio.txt index b0019eb5330e..b0019eb5330e 100644 --- a/Documentation/powerpc/dts-bindings/fsl/8xxx_gpio.txt +++ b/Documentation/devicetree/bindings/gpio/8xxx_gpio.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt index edaa84d288a1..edaa84d288a1 100644 --- a/Documentation/powerpc/dts-bindings/gpio/gpio.txt +++ b/Documentation/devicetree/bindings/gpio/gpio.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/gpio/led.txt b/Documentation/devicetree/bindings/gpio/led.txt index 064db928c3c1..064db928c3c1 100644 --- a/Documentation/powerpc/dts-bindings/gpio/led.txt +++ b/Documentation/devicetree/bindings/gpio/led.txt | |||
diff --git a/Documentation/devicetree/bindings/i2c/ce4100-i2c.txt b/Documentation/devicetree/bindings/i2c/ce4100-i2c.txt new file mode 100644 index 000000000000..569b16248514 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/ce4100-i2c.txt | |||
@@ -0,0 +1,93 @@ | |||
1 | CE4100 I2C | ||
2 | ---------- | ||
3 | |||
4 | CE4100 has one PCI device which is described as the I2C-Controller. This | ||
5 | PCI device has three PCI-bars, each bar contains a complete I2C | ||
6 | controller. So we have a total of three independent I2C-Controllers | ||
7 | which share only an interrupt line. | ||
8 | The driver is probed via the PCI-ID and is gathering the information of | ||
9 | attached devices from the devices tree. | ||
10 | Grant Likely recommended to use the ranges property to map the PCI-Bar | ||
11 | number to its physical address and to use this to find the child nodes | ||
12 | of the specific I2C controller. This were his exact words: | ||
13 | |||
14 | Here's where the magic happens. Each entry in | ||
15 | ranges describes how the parent pci address space | ||
16 | (middle group of 3) is translated to the local | ||
17 | address space (first group of 2) and the size of | ||
18 | each range (last cell). In this particular case, | ||
19 | the first cell of the local address is chosen to be | ||
20 | 1:1 mapped to the BARs, and the second is the | ||
21 | offset from be base of the BAR (which would be | ||
22 | non-zero if you had 2 or more devices mapped off | ||
23 | the same BAR) | ||
24 | |||
25 | ranges allows the address mapping to be described | ||
26 | in a way that the OS can interpret without | ||
27 | requiring custom device driver code. | ||
28 | |||
29 | This is an example which is used on FalconFalls: | ||
30 | ------------------------------------------------ | ||
31 | i2c-controller@b,2 { | ||
32 | #address-cells = <2>; | ||
33 | #size-cells = <1>; | ||
34 | compatible = "pci8086,2e68.2", | ||
35 | "pci8086,2e68", | ||
36 | "pciclass,ff0000", | ||
37 | "pciclass,ff00"; | ||
38 | |||
39 | reg = <0x15a00 0x0 0x0 0x0 0x0>; | ||
40 | interrupts = <16 1>; | ||
41 | |||
42 | /* as described by Grant, the first number in the group of | ||
43 | * three is the bar number followed by the 64bit bar address | ||
44 | * followed by size of the mapping. The bar address | ||
45 | * requires also a valid translation in parents ranges | ||
46 | * property. | ||
47 | */ | ||
48 | ranges = <0 0 0x02000000 0 0xdffe0500 0x100 | ||
49 | 1 0 0x02000000 0 0xdffe0600 0x100 | ||
50 | 2 0 0x02000000 0 0xdffe0700 0x100>; | ||
51 | |||
52 | i2c@0 { | ||
53 | #address-cells = <1>; | ||
54 | #size-cells = <0>; | ||
55 | compatible = "intel,ce4100-i2c-controller"; | ||
56 | |||
57 | /* The first number in the reg property is the | ||
58 | * number of the bar | ||
59 | */ | ||
60 | reg = <0 0 0x100>; | ||
61 | |||
62 | /* This I2C controller has no devices */ | ||
63 | }; | ||
64 | |||
65 | i2c@1 { | ||
66 | #address-cells = <1>; | ||
67 | #size-cells = <0>; | ||
68 | compatible = "intel,ce4100-i2c-controller"; | ||
69 | reg = <1 0 0x100>; | ||
70 | |||
71 | /* This I2C controller has one gpio controller */ | ||
72 | gpio@26 { | ||
73 | #gpio-cells = <2>; | ||
74 | compatible = "ti,pcf8575"; | ||
75 | reg = <0x26>; | ||
76 | gpio-controller; | ||
77 | }; | ||
78 | }; | ||
79 | |||
80 | i2c@2 { | ||
81 | #address-cells = <1>; | ||
82 | #size-cells = <0>; | ||
83 | compatible = "intel,ce4100-i2c-controller"; | ||
84 | reg = <2 0 0x100>; | ||
85 | |||
86 | gpio@26 { | ||
87 | #gpio-cells = <2>; | ||
88 | compatible = "ti,pcf8575"; | ||
89 | reg = <0x26>; | ||
90 | gpio-controller; | ||
91 | }; | ||
92 | }; | ||
93 | }; | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/i2c.txt b/Documentation/devicetree/bindings/i2c/fsl-i2c.txt index 1eacd6b20ed5..1eacd6b20ed5 100644 --- a/Documentation/powerpc/dts-bindings/fsl/i2c.txt +++ b/Documentation/devicetree/bindings/i2c/fsl-i2c.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/marvell.txt b/Documentation/devicetree/bindings/marvell.txt index f1533d91953a..f1533d91953a 100644 --- a/Documentation/powerpc/dts-bindings/marvell.txt +++ b/Documentation/devicetree/bindings/marvell.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt index 64bcb8be973c..64bcb8be973c 100644 --- a/Documentation/powerpc/dts-bindings/fsl/esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/mmc-spi-slot.txt b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt index c39ac2891951..89a0084df2f7 100644 --- a/Documentation/powerpc/dts-bindings/mmc-spi-slot.txt +++ b/Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt | |||
@@ -7,8 +7,13 @@ Required properties: | |||
7 | - voltage-ranges : two cells are required, first cell specifies minimum | 7 | - voltage-ranges : two cells are required, first cell specifies minimum |
8 | slot voltage (mV), second cell specifies maximum slot voltage (mV). | 8 | slot voltage (mV), second cell specifies maximum slot voltage (mV). |
9 | Several ranges could be specified. | 9 | Several ranges could be specified. |
10 | - gpios : (optional) may specify GPIOs in this order: Card-Detect GPIO, | 10 | |
11 | Optional properties: | ||
12 | - gpios : may specify GPIOs in this order: Card-Detect GPIO, | ||
11 | Write-Protect GPIO. | 13 | Write-Protect GPIO. |
14 | - interrupts : the interrupt of a card detect interrupt. | ||
15 | - interrupt-parent : the phandle for the interrupt controller that | ||
16 | services interrupts for this device. | ||
12 | 17 | ||
13 | Example: | 18 | Example: |
14 | 19 | ||
@@ -20,4 +25,6 @@ Example: | |||
20 | &qe_pio_d 15 0>; | 25 | &qe_pio_d 15 0>; |
21 | voltage-ranges = <3300 3300>; | 26 | voltage-ranges = <3300 3300>; |
22 | spi-max-frequency = <50000000>; | 27 | spi-max-frequency = <50000000>; |
28 | interrupts = <42>; | ||
29 | interrupt-parent = <&PIC>; | ||
23 | }; | 30 | }; |
diff --git a/Documentation/powerpc/dts-bindings/fsl/upm-nand.txt b/Documentation/devicetree/bindings/mtd/fsl-upm-nand.txt index a48b2cadc7f0..a48b2cadc7f0 100644 --- a/Documentation/powerpc/dts-bindings/fsl/upm-nand.txt +++ b/Documentation/devicetree/bindings/mtd/fsl-upm-nand.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/mtd-physmap.txt b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt index 80152cb567d9..80152cb567d9 100644 --- a/Documentation/powerpc/dts-bindings/mtd-physmap.txt +++ b/Documentation/devicetree/bindings/mtd/mtd-physmap.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/can.txt b/Documentation/devicetree/bindings/net/can/mpc5xxx-mscan.txt index 2fa4fcd38fd6..2fa4fcd38fd6 100644 --- a/Documentation/powerpc/dts-bindings/fsl/can.txt +++ b/Documentation/devicetree/bindings/net/can/mpc5xxx-mscan.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/can/sja1000.txt b/Documentation/devicetree/bindings/net/can/sja1000.txt index d6d209ded937..d6d209ded937 100644 --- a/Documentation/powerpc/dts-bindings/can/sja1000.txt +++ b/Documentation/devicetree/bindings/net/can/sja1000.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/tsec.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt index edb7ae19e868..edb7ae19e868 100644 --- a/Documentation/powerpc/dts-bindings/fsl/tsec.txt +++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/gpio/mdio.txt b/Documentation/devicetree/bindings/net/mdio-gpio.txt index bc9549529014..bc9549529014 100644 --- a/Documentation/powerpc/dts-bindings/gpio/mdio.txt +++ b/Documentation/devicetree/bindings/net/mdio-gpio.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/phy.txt b/Documentation/devicetree/bindings/net/phy.txt index bb8c742eb8c5..bb8c742eb8c5 100644 --- a/Documentation/powerpc/dts-bindings/phy.txt +++ b/Documentation/devicetree/bindings/net/phy.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/83xx-512x-pci.txt b/Documentation/devicetree/bindings/pci/83xx-512x-pci.txt index 35a465362408..35a465362408 100644 --- a/Documentation/powerpc/dts-bindings/fsl/83xx-512x-pci.txt +++ b/Documentation/devicetree/bindings/pci/83xx-512x-pci.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/4xx/cpm.txt b/Documentation/devicetree/bindings/powerpc/4xx/cpm.txt index ee459806d35e..ee459806d35e 100644 --- a/Documentation/powerpc/dts-bindings/4xx/cpm.txt +++ b/Documentation/devicetree/bindings/powerpc/4xx/cpm.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/4xx/emac.txt b/Documentation/devicetree/bindings/powerpc/4xx/emac.txt index 2161334a7ca5..2161334a7ca5 100644 --- a/Documentation/powerpc/dts-bindings/4xx/emac.txt +++ b/Documentation/devicetree/bindings/powerpc/4xx/emac.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/4xx/ndfc.txt b/Documentation/devicetree/bindings/powerpc/4xx/ndfc.txt index 869f0b5f16e8..869f0b5f16e8 100644 --- a/Documentation/powerpc/dts-bindings/4xx/ndfc.txt +++ b/Documentation/devicetree/bindings/powerpc/4xx/ndfc.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/4xx/ppc440spe-adma.txt b/Documentation/devicetree/bindings/powerpc/4xx/ppc440spe-adma.txt index 515ebcf1b97d..515ebcf1b97d 100644 --- a/Documentation/powerpc/dts-bindings/4xx/ppc440spe-adma.txt +++ b/Documentation/devicetree/bindings/powerpc/4xx/ppc440spe-adma.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/4xx/reboot.txt b/Documentation/devicetree/bindings/powerpc/4xx/reboot.txt index d7217260589c..d7217260589c 100644 --- a/Documentation/powerpc/dts-bindings/4xx/reboot.txt +++ b/Documentation/devicetree/bindings/powerpc/4xx/reboot.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/board.txt b/Documentation/devicetree/bindings/powerpc/fsl/board.txt index 39e941515a36..39e941515a36 100644 --- a/Documentation/powerpc/dts-bindings/fsl/board.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/board.txt | |||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cache_sram.txt b/Documentation/devicetree/bindings/powerpc/fsl/cache_sram.txt new file mode 100644 index 000000000000..781955f5217d --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/cache_sram.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | * Freescale PQ3 and QorIQ based Cache SRAM | ||
2 | |||
3 | Freescale's mpc85xx and some QorIQ platforms provide an | ||
4 | option of configuring a part of (or full) cache memory | ||
5 | as SRAM. This cache SRAM representation in the device | ||
6 | tree should be done as under:- | ||
7 | |||
8 | Required properties: | ||
9 | |||
10 | - compatible : should be "fsl,p2020-cache-sram" | ||
11 | - fsl,cache-sram-ctlr-handle : points to the L2 controller | ||
12 | - reg : offset and length of the cache-sram. | ||
13 | |||
14 | Example: | ||
15 | |||
16 | cache-sram@fff00000 { | ||
17 | fsl,cache-sram-ctlr-handle = <&L2>; | ||
18 | reg = <0 0xfff00000 0 0x10000>; | ||
19 | compatible = "fsl,p2020-cache-sram"; | ||
20 | }; | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm.txt index 160c752484b4..160c752484b4 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/brg.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/brg.txt index 4c7d45eaf025..4c7d45eaf025 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/brg.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/brg.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/i2c.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/i2c.txt index 87bc6048667e..87bc6048667e 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/i2c.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/i2c.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/pic.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/pic.txt index 8e3ee1681618..8e3ee1681618 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/pic.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/pic.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/usb.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/usb.txt index 74bfda4bb824..74bfda4bb824 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/cpm/usb.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/cpm/usb.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/gpio.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/gpio.txt index 349f79fd7076..349f79fd7076 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/gpio.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/gpio.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/network.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt index 0e4269446580..0e4269446580 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/network.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe.txt index 4f8930263dd9..4f8930263dd9 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/firmware.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/firmware.txt index 249db3a15d15..249db3a15d15 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/firmware.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/firmware.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/par_io.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/par_io.txt index 60984260207b..60984260207b 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/par_io.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/par_io.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/pincfg.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt index c5b43061db3a..c5b43061db3a 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/pincfg.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/ucc.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/ucc.txt index e47734bee3f0..e47734bee3f0 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/ucc.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/ucc.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/usb.txt index 9ccd5f30405b..9ccd5f30405b 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe/usb.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/usb.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/serial.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/serial.txt index 2ea76d9d137c..2ea76d9d137c 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/serial.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/serial.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/diu.txt b/Documentation/devicetree/bindings/powerpc/fsl/diu.txt index b66cb6d31d69..b66cb6d31d69 100644 --- a/Documentation/powerpc/dts-bindings/fsl/diu.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/diu.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/dma.txt b/Documentation/devicetree/bindings/powerpc/fsl/dma.txt index 2a4b4bce6110..2a4b4bce6110 100644 --- a/Documentation/powerpc/dts-bindings/fsl/dma.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/dma.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/ecm.txt b/Documentation/devicetree/bindings/powerpc/fsl/ecm.txt index f514f29c67d6..f514f29c67d6 100644 --- a/Documentation/powerpc/dts-bindings/ecm.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/ecm.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/gtm.txt b/Documentation/devicetree/bindings/powerpc/fsl/gtm.txt index 9a33efded4bc..9a33efded4bc 100644 --- a/Documentation/powerpc/dts-bindings/fsl/gtm.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/gtm.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/guts.txt b/Documentation/devicetree/bindings/powerpc/fsl/guts.txt index 9e7a2417dac5..9e7a2417dac5 100644 --- a/Documentation/powerpc/dts-bindings/fsl/guts.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/guts.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/lbc.txt b/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt index 3300fec501c5..3300fec501c5 100644 --- a/Documentation/powerpc/dts-bindings/fsl/lbc.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/lbc.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/mcm.txt b/Documentation/devicetree/bindings/powerpc/fsl/mcm.txt index 4ceda9b3b413..4ceda9b3b413 100644 --- a/Documentation/powerpc/dts-bindings/fsl/mcm.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/mcm.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/mcu-mpc8349emitx.txt b/Documentation/devicetree/bindings/powerpc/fsl/mcu-mpc8349emitx.txt index 0f766333b6eb..0f766333b6eb 100644 --- a/Documentation/powerpc/dts-bindings/fsl/mcu-mpc8349emitx.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/mcu-mpc8349emitx.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/mpc5121-psc.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpc5121-psc.txt index 8832e8798912..8832e8798912 100644 --- a/Documentation/powerpc/dts-bindings/fsl/mpc5121-psc.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpc5121-psc.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/mpc5200.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpc5200.txt index 4ccb2cd5df94..4ccb2cd5df94 100644 --- a/Documentation/powerpc/dts-bindings/fsl/mpc5200.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpc5200.txt | |||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt new file mode 100644 index 000000000000..8aa10f45ebe6 --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/mpic.txt | |||
@@ -0,0 +1,211 @@ | |||
1 | ===================================================================== | ||
2 | Freescale MPIC Interrupt Controller Node | ||
3 | Copyright (C) 2010,2011 Freescale Semiconductor Inc. | ||
4 | ===================================================================== | ||
5 | |||
6 | The Freescale MPIC interrupt controller is found on all PowerQUICC | ||
7 | and QorIQ processors and is compatible with the Open PIC. The | ||
8 | notable difference from Open PIC binding is the addition of 2 | ||
9 | additional cells in the interrupt specifier defining interrupt type | ||
10 | information. | ||
11 | |||
12 | PROPERTIES | ||
13 | |||
14 | - compatible | ||
15 | Usage: required | ||
16 | Value type: <string> | ||
17 | Definition: Shall include "fsl,mpic". Freescale MPIC | ||
18 | controllers compatible with this binding have Block | ||
19 | Revision Registers BRR1 and BRR2 at offset 0x0 and | ||
20 | 0x10 in the MPIC. | ||
21 | |||
22 | - reg | ||
23 | Usage: required | ||
24 | Value type: <prop-encoded-array> | ||
25 | Definition: A standard property. Specifies the physical | ||
26 | offset and length of the device's registers within the | ||
27 | CCSR address space. | ||
28 | |||
29 | - interrupt-controller | ||
30 | Usage: required | ||
31 | Value type: <empty> | ||
32 | Definition: Specifies that this node is an interrupt | ||
33 | controller | ||
34 | |||
35 | - #interrupt-cells | ||
36 | Usage: required | ||
37 | Value type: <u32> | ||
38 | Definition: Shall be 2 or 4. A value of 2 means that interrupt | ||
39 | specifiers do not contain the interrupt-type or type-specific | ||
40 | information cells. | ||
41 | |||
42 | - #address-cells | ||
43 | Usage: required | ||
44 | Value type: <u32> | ||
45 | Definition: Shall be 0. | ||
46 | |||
47 | - pic-no-reset | ||
48 | Usage: optional | ||
49 | Value type: <empty> | ||
50 | Definition: The presence of this property specifies that the | ||
51 | MPIC must not be reset by the client program, and that | ||
52 | the boot program has initialized all interrupt source | ||
53 | configuration registers to a sane state-- masked or | ||
54 | directed at other cores. This ensures that the client | ||
55 | program will not receive interrupts for sources not belonging | ||
56 | to the client. The presence of this property also mandates | ||
57 | that any initialization related to interrupt sources shall | ||
58 | be limited to sources explicitly referenced in the device tree. | ||
59 | |||
60 | INTERRUPT SPECIFIER DEFINITION | ||
61 | |||
62 | Interrupt specifiers consists of 4 cells encoded as | ||
63 | follows: | ||
64 | |||
65 | <1st-cell> interrupt-number | ||
66 | |||
67 | Identifies the interrupt source. The meaning | ||
68 | depends on the type of interrupt. | ||
69 | |||
70 | Note: If the interrupt-type cell is undefined | ||
71 | (i.e. #interrupt-cells = 2), this cell | ||
72 | should be interpreted the same as for | ||
73 | interrupt-type 0-- i.e. an external or | ||
74 | normal SoC device interrupt. | ||
75 | |||
76 | <2nd-cell> level-sense information, encoded as follows: | ||
77 | 0 = low-to-high edge triggered | ||
78 | 1 = active low level-sensitive | ||
79 | 2 = active high level-sensitive | ||
80 | 3 = high-to-low edge triggered | ||
81 | |||
82 | <3rd-cell> interrupt-type | ||
83 | |||
84 | The following types are supported: | ||
85 | |||
86 | 0 = external or normal SoC device interrupt | ||
87 | |||
88 | The interrupt-number cell contains | ||
89 | the SoC device interrupt number. The | ||
90 | type-specific cell is undefined. The | ||
91 | interrupt-number is derived from the | ||
92 | MPIC a block of registers referred to as | ||
93 | the "Interrupt Source Configuration Registers". | ||
94 | Each source has 32-bytes of registers | ||
95 | (vector/priority and destination) in this | ||
96 | region. So interrupt 0 is at offset 0x0, | ||
97 | interrupt 1 is at offset 0x20, and so on. | ||
98 | |||
99 | 1 = error interrupt | ||
100 | |||
101 | The interrupt-number cell contains | ||
102 | the SoC device interrupt number for | ||
103 | the error interrupt. The type-specific | ||
104 | cell identifies the specific error | ||
105 | interrupt number. | ||
106 | |||
107 | 2 = MPIC inter-processor interrupt (IPI) | ||
108 | |||
109 | The interrupt-number cell identifies | ||
110 | the MPIC IPI number. The type-specific | ||
111 | cell is undefined. | ||
112 | |||
113 | 3 = MPIC timer interrupt | ||
114 | |||
115 | The interrupt-number cell identifies | ||
116 | the MPIC timer number. The type-specific | ||
117 | cell is undefined. | ||
118 | |||
119 | <4th-cell> type-specific information | ||
120 | |||
121 | The type-specific cell is encoded as follows: | ||
122 | |||
123 | - For interrupt-type 1 (error interrupt), | ||
124 | the type-specific cell contains the | ||
125 | bit number of the error interrupt in the | ||
126 | Error Interrupt Summary Register. | ||
127 | |||
128 | EXAMPLE 1 | ||
129 | /* | ||
130 | * mpic interrupt controller with 4 cells per specifier | ||
131 | */ | ||
132 | mpic: pic@40000 { | ||
133 | compatible = "fsl,mpic"; | ||
134 | interrupt-controller; | ||
135 | #interrupt-cells = <4>; | ||
136 | #address-cells = <0>; | ||
137 | reg = <0x40000 0x40000>; | ||
138 | }; | ||
139 | |||
140 | EXAMPLE 2 | ||
141 | /* | ||
142 | * The MPC8544 I2C controller node has an internal | ||
143 | * interrupt number of 27. As per the reference manual | ||
144 | * this corresponds to interrupt source configuration | ||
145 | * registers at 0x5_0560. | ||
146 | * | ||
147 | * The interrupt source configuration registers begin | ||
148 | * at 0x5_0000. | ||
149 | * | ||
150 | * To compute the interrupt specifier interrupt number | ||
151 | * | ||
152 | * 0x560 >> 5 = 43 | ||
153 | * | ||
154 | * The interrupt source configuration registers begin | ||
155 | * at 0x5_0000, and so the i2c vector/priority registers | ||
156 | * are at 0x5_0560. | ||
157 | */ | ||
158 | i2c@3000 { | ||
159 | #address-cells = <1>; | ||
160 | #size-cells = <0>; | ||
161 | cell-index = <0>; | ||
162 | compatible = "fsl-i2c"; | ||
163 | reg = <0x3000 0x100>; | ||
164 | interrupts = <43 2>; | ||
165 | interrupt-parent = <&mpic>; | ||
166 | dfsrr; | ||
167 | }; | ||
168 | |||
169 | |||
170 | EXAMPLE 3 | ||
171 | /* | ||
172 | * Definition of a node defining the 4 | ||
173 | * MPIC IPI interrupts. Note the interrupt | ||
174 | * type of 2. | ||
175 | */ | ||
176 | ipi@410a0 { | ||
177 | compatible = "fsl,mpic-ipi"; | ||
178 | reg = <0x40040 0x10>; | ||
179 | interrupts = <0 0 2 0 | ||
180 | 1 0 2 0 | ||
181 | 2 0 2 0 | ||
182 | 3 0 2 0>; | ||
183 | }; | ||
184 | |||
185 | EXAMPLE 4 | ||
186 | /* | ||
187 | * Definition of a node defining the MPIC | ||
188 | * global timers. Note the interrupt | ||
189 | * type of 3. | ||
190 | */ | ||
191 | timer0: timer@41100 { | ||
192 | compatible = "fsl,mpic-global-timer"; | ||
193 | reg = <0x41100 0x100>; | ||
194 | interrupts = <0 0 3 0 | ||
195 | 1 0 3 0 | ||
196 | 2 0 3 0 | ||
197 | 3 0 3 0>; | ||
198 | }; | ||
199 | |||
200 | EXAMPLE 5 | ||
201 | /* | ||
202 | * Definition of an error interrupt (interupt type 1). | ||
203 | * SoC interrupt number is 16 and the specific error | ||
204 | * interrupt bit in the error interrupt summary register | ||
205 | * is 23. | ||
206 | */ | ||
207 | memory-controller@8000 { | ||
208 | compatible = "fsl,p4080-memory-controller"; | ||
209 | reg = <0x8000 0x1000>; | ||
210 | interrupts = <16 2 1 23>; | ||
211 | }; | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/msi-pic.txt b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt index bcc30bac6831..70558c3f3682 100644 --- a/Documentation/powerpc/dts-bindings/fsl/msi-pic.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt | |||
@@ -5,14 +5,21 @@ Required properties: | |||
5 | first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, | 5 | first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, |
6 | etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on | 6 | etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on |
7 | the parent type. | 7 | the parent type. |
8 | |||
8 | - reg : should contain the address and the length of the shared message | 9 | - reg : should contain the address and the length of the shared message |
9 | interrupt register set. | 10 | interrupt register set. |
11 | |||
10 | - msi-available-ranges: use <start count> style section to define which | 12 | - msi-available-ranges: use <start count> style section to define which |
11 | msi interrupt can be used in the 256 msi interrupts. This property is | 13 | msi interrupt can be used in the 256 msi interrupts. This property is |
12 | optional, without this, all the 256 MSI interrupts can be used. | 14 | optional, without this, all the 256 MSI interrupts can be used. |
15 | Each available range must begin and end on a multiple of 32 (i.e. | ||
16 | no splitting an individual MSI register or the associated PIC interrupt). | ||
17 | |||
13 | - interrupts : each one of the interrupts here is one entry per 32 MSIs, | 18 | - interrupts : each one of the interrupts here is one entry per 32 MSIs, |
14 | and routed to the host interrupt controller. the interrupts should | 19 | and routed to the host interrupt controller. the interrupts should |
15 | be set as edge sensitive. | 20 | be set as edge sensitive. If msi-available-ranges is present, only |
21 | the interrupts that correspond to available ranges shall be present. | ||
22 | |||
16 | - interrupt-parent: the phandle for the interrupt controller | 23 | - interrupt-parent: the phandle for the interrupt controller |
17 | that services interrupts for this device. for 83xx cpu, the interrupts | 24 | that services interrupts for this device. for 83xx cpu, the interrupts |
18 | are routed to IPIC, and for 85xx/86xx cpu the interrupts are routed | 25 | are routed to IPIC, and for 85xx/86xx cpu the interrupts are routed |
diff --git a/Documentation/powerpc/dts-bindings/fsl/pmc.txt b/Documentation/devicetree/bindings/powerpc/fsl/pmc.txt index 07256b7ffcaa..07256b7ffcaa 100644 --- a/Documentation/powerpc/dts-bindings/fsl/pmc.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/pmc.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/sec.txt b/Documentation/devicetree/bindings/powerpc/fsl/sec.txt index 2b6f2d45c45a..2b6f2d45c45a 100644 --- a/Documentation/powerpc/dts-bindings/fsl/sec.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/sec.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/fsl/ssi.txt b/Documentation/devicetree/bindings/powerpc/fsl/ssi.txt index 5ff76c9c57d2..5ff76c9c57d2 100644 --- a/Documentation/powerpc/dts-bindings/fsl/ssi.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/ssi.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/nintendo/gamecube.txt b/Documentation/devicetree/bindings/powerpc/nintendo/gamecube.txt index b558585b1aaf..b558585b1aaf 100644 --- a/Documentation/powerpc/dts-bindings/nintendo/gamecube.txt +++ b/Documentation/devicetree/bindings/powerpc/nintendo/gamecube.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/nintendo/wii.txt b/Documentation/devicetree/bindings/powerpc/nintendo/wii.txt index a7e155a023b8..a7e155a023b8 100644 --- a/Documentation/powerpc/dts-bindings/nintendo/wii.txt +++ b/Documentation/devicetree/bindings/powerpc/nintendo/wii.txt | |||
diff --git a/Documentation/devicetree/bindings/rtc/rtc-cmos.txt b/Documentation/devicetree/bindings/rtc/rtc-cmos.txt new file mode 100644 index 000000000000..7382989b3052 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/rtc-cmos.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | Motorola mc146818 compatible RTC | ||
2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : "motorola,mc146818" | ||
6 | - reg : should contain registers location and length. | ||
7 | |||
8 | Optional properties: | ||
9 | - interrupts : should contain interrupt. | ||
10 | - interrupt-parent : interrupt source phandle. | ||
11 | - ctrl-reg : Contains the initial value of the control register also | ||
12 | called "Register B". | ||
13 | - freq-reg : Contains the initial value of the frequency register also | ||
14 | called "Regsiter A". | ||
15 | |||
16 | "Register A" and "B" are usually initialized by the firmware (BIOS for | ||
17 | instance). If this is not done, it can be performed by the driver. | ||
18 | |||
19 | ISA Example: | ||
20 | |||
21 | rtc@70 { | ||
22 | compatible = "motorola,mc146818"; | ||
23 | interrupts = <8 3>; | ||
24 | interrupt-parent = <&ioapic1>; | ||
25 | ctrl-reg = <2>; | ||
26 | freq-reg = <0x26>; | ||
27 | reg = <1 0x70 2>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/altera_jtaguart.txt b/Documentation/devicetree/bindings/serial/altera_jtaguart.txt new file mode 100644 index 000000000000..c152f65f9a28 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/altera_jtaguart.txt | |||
@@ -0,0 +1,4 @@ | |||
1 | Altera JTAG UART | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "ALTR,juart-1.0" | ||
diff --git a/Documentation/devicetree/bindings/serial/altera_uart.txt b/Documentation/devicetree/bindings/serial/altera_uart.txt new file mode 100644 index 000000000000..71cae3f70100 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/altera_uart.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Altera UART | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "ALTR,uart-1.0" | ||
5 | |||
6 | Optional properties: | ||
7 | - clock-frequency : frequency of the clock input to the UART | ||
diff --git a/Documentation/devicetree/bindings/serio/altera_ps2.txt b/Documentation/devicetree/bindings/serio/altera_ps2.txt new file mode 100644 index 000000000000..4d9eecc2ef7d --- /dev/null +++ b/Documentation/devicetree/bindings/serio/altera_ps2.txt | |||
@@ -0,0 +1,4 @@ | |||
1 | Altera UP PS/2 controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "ALTR,ps2-1.0". | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/spi.txt b/Documentation/devicetree/bindings/spi/fsl-spi.txt index 777abd7399d5..777abd7399d5 100644 --- a/Documentation/powerpc/dts-bindings/fsl/spi.txt +++ b/Documentation/devicetree/bindings/spi/fsl-spi.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt index e782add2e457..e782add2e457 100644 --- a/Documentation/powerpc/dts-bindings/spi-bus.txt +++ b/Documentation/devicetree/bindings/spi/spi-bus.txt | |||
diff --git a/Documentation/devicetree/bindings/spi/spi_altera.txt b/Documentation/devicetree/bindings/spi/spi_altera.txt new file mode 100644 index 000000000000..dda375943506 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi_altera.txt | |||
@@ -0,0 +1,4 @@ | |||
1 | Altera SPI | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "ALTR,spi-1.0". | ||
diff --git a/Documentation/devicetree/bindings/spi/spi_oc_tiny.txt b/Documentation/devicetree/bindings/spi/spi_oc_tiny.txt new file mode 100644 index 000000000000..d95c0b367a04 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi_oc_tiny.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | OpenCores tiny SPI | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "opencores,tiny-spi-rtlsvn2". | ||
5 | - gpios : should specify GPIOs used for chipselect. | ||
6 | Optional properties: | ||
7 | - clock-frequency : input clock frequency to the core. | ||
8 | - baud-width: width, in bits, of the programmable divider used to scale | ||
9 | the input clock to SCLK. | ||
10 | |||
11 | The clock-frequency and baud-width properties are needed only if the divider | ||
12 | is programmable. They are not needed if the divider is fixed. | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/usb.txt b/Documentation/devicetree/bindings/usb/fsl-usb.txt index bd5723f0b67e..bd5723f0b67e 100644 --- a/Documentation/powerpc/dts-bindings/fsl/usb.txt +++ b/Documentation/devicetree/bindings/usb/fsl-usb.txt | |||
diff --git a/Documentation/powerpc/dts-bindings/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index fa18612f757b..fa18612f757b 100644 --- a/Documentation/powerpc/dts-bindings/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt | |||
diff --git a/Documentation/devicetree/bindings/x86/ce4100.txt b/Documentation/devicetree/bindings/x86/ce4100.txt new file mode 100644 index 000000000000..b49ae593a60b --- /dev/null +++ b/Documentation/devicetree/bindings/x86/ce4100.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | CE4100 Device Tree Bindings | ||
2 | --------------------------- | ||
3 | |||
4 | The CE4100 SoC uses for in core peripherals the following compatible | ||
5 | format: <vendor>,<chip>-<device>. | ||
6 | Many of the "generic" devices like HPET or IO APIC have the ce4100 | ||
7 | name in their compatible property because they first appeared in this | ||
8 | SoC. | ||
9 | |||
10 | The CPU node | ||
11 | ------------ | ||
12 | cpu@0 { | ||
13 | device_type = "cpu"; | ||
14 | compatible = "intel,ce4100"; | ||
15 | reg = <0>; | ||
16 | lapic = <&lapic0>; | ||
17 | }; | ||
18 | |||
19 | The reg property describes the CPU number. The lapic property points to | ||
20 | the local APIC timer. | ||
21 | |||
22 | The SoC node | ||
23 | ------------ | ||
24 | |||
25 | This node describes the in-core peripherals. Required property: | ||
26 | compatible = "intel,ce4100-cp"; | ||
27 | |||
28 | The PCI node | ||
29 | ------------ | ||
30 | This node describes the PCI bus on the SoC. Its property should be | ||
31 | compatible = "intel,ce4100-pci", "pci"; | ||
32 | |||
33 | If the OS is using the IO-APIC for interrupt routing then the reported | ||
34 | interrupt numbers for devices is no longer true. In order to obtain the | ||
35 | correct interrupt number, the child node which represents the device has | ||
36 | to contain the interrupt property. Besides the interrupt property it has | ||
37 | to contain at least the reg property containing the PCI bus address and | ||
38 | compatible property according to "PCI Bus Binding Revision 2.1". | ||
diff --git a/Documentation/devicetree/bindings/x86/interrupt.txt b/Documentation/devicetree/bindings/x86/interrupt.txt new file mode 100644 index 000000000000..7d19f494f19a --- /dev/null +++ b/Documentation/devicetree/bindings/x86/interrupt.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | Interrupt chips | ||
2 | --------------- | ||
3 | |||
4 | * Intel I/O Advanced Programmable Interrupt Controller (IO APIC) | ||
5 | |||
6 | Required properties: | ||
7 | -------------------- | ||
8 | compatible = "intel,ce4100-ioapic"; | ||
9 | #interrupt-cells = <2>; | ||
10 | |||
11 | Device's interrupt property: | ||
12 | |||
13 | interrupts = <P S>; | ||
14 | |||
15 | The first number (P) represents the interrupt pin which is wired to the | ||
16 | IO APIC. The second number (S) represents the sense of interrupt which | ||
17 | should be configured and can be one of: | ||
18 | 0 - Edge Rising | ||
19 | 1 - Level Low | ||
20 | 2 - Level High | ||
21 | 3 - Edge Falling | ||
22 | |||
23 | * Local APIC | ||
24 | Required property: | ||
25 | |||
26 | compatible = "intel,ce4100-lapic"; | ||
diff --git a/Documentation/devicetree/bindings/x86/timer.txt b/Documentation/devicetree/bindings/x86/timer.txt new file mode 100644 index 000000000000..c688af58e3bd --- /dev/null +++ b/Documentation/devicetree/bindings/x86/timer.txt | |||
@@ -0,0 +1,6 @@ | |||
1 | Timers | ||
2 | ------ | ||
3 | |||
4 | * High Precision Event Timer (HPET) | ||
5 | Required property: | ||
6 | compatible = "intel,ce4100-hpet"; | ||
diff --git a/Documentation/powerpc/dts-bindings/xilinx.txt b/Documentation/devicetree/bindings/xilinx.txt index 299d0923537b..299d0923537b 100644 --- a/Documentation/powerpc/dts-bindings/xilinx.txt +++ b/Documentation/devicetree/bindings/xilinx.txt | |||
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt index 7400d7555dc3..55fd2623445b 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/devicetree/booting-without-of.txt | |||
@@ -13,7 +13,7 @@ Table of Contents | |||
13 | 13 | ||
14 | I - Introduction | 14 | I - Introduction |
15 | 1) Entry point for arch/powerpc | 15 | 1) Entry point for arch/powerpc |
16 | 2) Board support | 16 | 2) Entry point for arch/x86 |
17 | 17 | ||
18 | II - The DT block format | 18 | II - The DT block format |
19 | 1) Header | 19 | 1) Header |
@@ -41,13 +41,6 @@ Table of Contents | |||
41 | VI - System-on-a-chip devices and nodes | 41 | VI - System-on-a-chip devices and nodes |
42 | 1) Defining child nodes of an SOC | 42 | 1) Defining child nodes of an SOC |
43 | 2) Representing devices without a current OF specification | 43 | 2) Representing devices without a current OF specification |
44 | a) PHY nodes | ||
45 | b) Interrupt controllers | ||
46 | c) 4xx/Axon EMAC ethernet nodes | ||
47 | d) Xilinx IP cores | ||
48 | e) USB EHCI controllers | ||
49 | f) MDIO on GPIOs | ||
50 | g) SPI busses | ||
51 | 44 | ||
52 | VII - Specifying interrupt information for devices | 45 | VII - Specifying interrupt information for devices |
53 | 1) interrupts property | 46 | 1) interrupts property |
@@ -123,7 +116,7 @@ Revision Information | |||
123 | I - Introduction | 116 | I - Introduction |
124 | ================ | 117 | ================ |
125 | 118 | ||
126 | During the recent development of the Linux/ppc64 kernel, and more | 119 | During the development of the Linux/ppc64 kernel, and more |
127 | specifically, the addition of new platform types outside of the old | 120 | specifically, the addition of new platform types outside of the old |
128 | IBM pSeries/iSeries pair, it was decided to enforce some strict rules | 121 | IBM pSeries/iSeries pair, it was decided to enforce some strict rules |
129 | regarding the kernel entry and bootloader <-> kernel interfaces, in | 122 | regarding the kernel entry and bootloader <-> kernel interfaces, in |
@@ -146,7 +139,7 @@ section III, but, for example, the kernel does not require you to | |||
146 | create a node for every PCI device in the system. It is a requirement | 139 | create a node for every PCI device in the system. It is a requirement |
147 | to have a node for PCI host bridges in order to provide interrupt | 140 | to have a node for PCI host bridges in order to provide interrupt |
148 | routing informations and memory/IO ranges, among others. It is also | 141 | routing informations and memory/IO ranges, among others. It is also |
149 | recommended to define nodes for on chip devices and other busses that | 142 | recommended to define nodes for on chip devices and other buses that |
150 | don't specifically fit in an existing OF specification. This creates a | 143 | don't specifically fit in an existing OF specification. This creates a |
151 | great flexibility in the way the kernel can then probe those and match | 144 | great flexibility in the way the kernel can then probe those and match |
152 | drivers to device, without having to hard code all sorts of tables. It | 145 | drivers to device, without having to hard code all sorts of tables. It |
@@ -158,7 +151,7 @@ it with special cases. | |||
158 | 1) Entry point for arch/powerpc | 151 | 1) Entry point for arch/powerpc |
159 | ------------------------------- | 152 | ------------------------------- |
160 | 153 | ||
161 | There is one and one single entry point to the kernel, at the start | 154 | There is one single entry point to the kernel, at the start |
162 | of the kernel image. That entry point supports two calling | 155 | of the kernel image. That entry point supports two calling |
163 | conventions: | 156 | conventions: |
164 | 157 | ||
@@ -210,12 +203,6 @@ it with special cases. | |||
210 | with all CPUs. The way to do that with method b) will be | 203 | with all CPUs. The way to do that with method b) will be |
211 | described in a later revision of this document. | 204 | described in a later revision of this document. |
212 | 205 | ||
213 | |||
214 | 2) Board support | ||
215 | ---------------- | ||
216 | |||
217 | 64-bit kernels: | ||
218 | |||
219 | Board supports (platforms) are not exclusive config options. An | 206 | Board supports (platforms) are not exclusive config options. An |
220 | arbitrary set of board supports can be built in a single kernel | 207 | arbitrary set of board supports can be built in a single kernel |
221 | image. The kernel will "know" what set of functions to use for a | 208 | image. The kernel will "know" what set of functions to use for a |
@@ -234,48 +221,30 @@ it with special cases. | |||
234 | containing the various callbacks that the generic code will | 221 | containing the various callbacks that the generic code will |
235 | use to get to your platform specific code | 222 | use to get to your platform specific code |
236 | 223 | ||
237 | c) Add a reference to your "ppc_md" structure in the | 224 | A kernel image may support multiple platforms, but only if the |
238 | "machines" table in arch/powerpc/kernel/setup_64.c if you are | ||
239 | a 64-bit platform. | ||
240 | |||
241 | d) request and get assigned a platform number (see PLATFORM_* | ||
242 | constants in arch/powerpc/include/asm/processor.h | ||
243 | |||
244 | 32-bit embedded kernels: | ||
245 | |||
246 | Currently, board support is essentially an exclusive config option. | ||
247 | The kernel is configured for a single platform. Part of the reason | ||
248 | for this is to keep kernels on embedded systems small and efficient; | ||
249 | part of this is due to the fact the code is already that way. In the | ||
250 | future, a kernel may support multiple platforms, but only if the | ||
251 | platforms feature the same core architecture. A single kernel build | 225 | platforms feature the same core architecture. A single kernel build |
252 | cannot support both configurations with Book E and configurations | 226 | cannot support both configurations with Book E and configurations |
253 | with classic Powerpc architectures. | 227 | with classic Powerpc architectures. |
254 | 228 | ||
255 | 32-bit embedded platforms that are moved into arch/powerpc using a | 229 | 2) Entry point for arch/x86 |
256 | flattened device tree should adopt the merged tree practice of | 230 | ------------------------------- |
257 | setting ppc_md up dynamically, even though the kernel is currently | ||
258 | built with support for only a single platform at a time. This allows | ||
259 | unification of the setup code, and will make it easier to go to a | ||
260 | multiple-platform-support model in the future. | ||
261 | |||
262 | NOTE: I believe the above will be true once Ben's done with the merge | ||
263 | of the boot sequences.... someone speak up if this is wrong! | ||
264 | |||
265 | To add a 32-bit embedded platform support, follow the instructions | ||
266 | for 64-bit platforms above, with the exception that the Kconfig | ||
267 | option should be set up such that the kernel builds exclusively for | ||
268 | the platform selected. The processor type for the platform should | ||
269 | enable another config option to select the specific board | ||
270 | supported. | ||
271 | |||
272 | NOTE: If Ben doesn't merge the setup files, may need to change this to | ||
273 | point to setup_32.c | ||
274 | 231 | ||
232 | There is one single 32bit entry point to the kernel at code32_start, | ||
233 | the decompressor (the real mode entry point goes to the same 32bit | ||
234 | entry point once it switched into protected mode). That entry point | ||
235 | supports one calling convention which is documented in | ||
236 | Documentation/x86/boot.txt | ||
237 | The physical pointer to the device-tree block (defined in chapter II) | ||
238 | is passed via setup_data which requires at least boot protocol 2.09. | ||
239 | The type filed is defined as | ||
275 | 240 | ||
276 | I will describe later the boot process and various callbacks that | 241 | #define SETUP_DTB 2 |
277 | your platform should implement. | ||
278 | 242 | ||
243 | This device-tree is used as an extension to the "boot page". As such it | ||
244 | does not parse / consider data which is already covered by the boot | ||
245 | page. This includes memory size, reserved ranges, command line arguments | ||
246 | or initrd address. It simply holds information which can not be retrieved | ||
247 | otherwise like interrupt routing or a list of devices behind an I2C bus. | ||
279 | 248 | ||
280 | II - The DT block format | 249 | II - The DT block format |
281 | ======================== | 250 | ======================== |
@@ -300,8 +269,8 @@ the block to RAM before passing it to the kernel. | |||
300 | 1) Header | 269 | 1) Header |
301 | --------- | 270 | --------- |
302 | 271 | ||
303 | The kernel is entered with r3 pointing to an area of memory that is | 272 | The kernel is passed the physical address pointing to an area of memory |
304 | roughly described in arch/powerpc/include/asm/prom.h by the structure | 273 | that is roughly described in include/linux/of_fdt.h by the structure |
305 | boot_param_header: | 274 | boot_param_header: |
306 | 275 | ||
307 | struct boot_param_header { | 276 | struct boot_param_header { |
@@ -339,7 +308,7 @@ struct boot_param_header { | |||
339 | All values in this header are in big endian format, the various | 308 | All values in this header are in big endian format, the various |
340 | fields in this header are defined more precisely below. All | 309 | fields in this header are defined more precisely below. All |
341 | "offset" values are in bytes from the start of the header; that is | 310 | "offset" values are in bytes from the start of the header; that is |
342 | from the value of r3. | 311 | from the physical base address of the device tree block. |
343 | 312 | ||
344 | - magic | 313 | - magic |
345 | 314 | ||
@@ -437,7 +406,7 @@ struct boot_param_header { | |||
437 | 406 | ||
438 | 407 | ||
439 | ------------------------------ | 408 | ------------------------------ |
440 | r3 -> | struct boot_param_header | | 409 | base -> | struct boot_param_header | |
441 | ------------------------------ | 410 | ------------------------------ |
442 | | (alignment gap) (*) | | 411 | | (alignment gap) (*) | |
443 | ------------------------------ | 412 | ------------------------------ |
@@ -457,7 +426,7 @@ struct boot_param_header { | |||
457 | -----> ------------------------------ | 426 | -----> ------------------------------ |
458 | | | 427 | | |
459 | | | 428 | | |
460 | --- (r3 + totalsize) | 429 | --- (base + totalsize) |
461 | 430 | ||
462 | (*) The alignment gaps are not necessarily present; their presence | 431 | (*) The alignment gaps are not necessarily present; their presence |
463 | and size are dependent on the various alignment requirements of | 432 | and size are dependent on the various alignment requirements of |
@@ -500,7 +469,7 @@ the device-tree structure. It is typically used to represent "path" in | |||
500 | the device-tree. More details about the actual format of these will be | 469 | the device-tree. More details about the actual format of these will be |
501 | below. | 470 | below. |
502 | 471 | ||
503 | The kernel powerpc generic code does not make any formal use of the | 472 | The kernel generic code does not make any formal use of the |
504 | unit address (though some board support code may do) so the only real | 473 | unit address (though some board support code may do) so the only real |
505 | requirement here for the unit address is to ensure uniqueness of | 474 | requirement here for the unit address is to ensure uniqueness of |
506 | the node unit name at a given level of the tree. Nodes with no notion | 475 | the node unit name at a given level of the tree. Nodes with no notion |
@@ -518,20 +487,21 @@ path to the root node is "/". | |||
518 | 487 | ||
519 | Every node which actually represents an actual device (that is, a node | 488 | Every node which actually represents an actual device (that is, a node |
520 | which isn't only a virtual "container" for more nodes, like "/cpus" | 489 | which isn't only a virtual "container" for more nodes, like "/cpus" |
521 | is) is also required to have a "device_type" property indicating the | 490 | is) is also required to have a "compatible" property indicating the |
522 | type of node . | 491 | specific hardware and an optional list of devices it is fully |
492 | backwards compatible with. | ||
523 | 493 | ||
524 | Finally, every node that can be referenced from a property in another | 494 | Finally, every node that can be referenced from a property in another |
525 | node is required to have a "linux,phandle" property. Real open | 495 | node is required to have either a "phandle" or a "linux,phandle" |
526 | firmware implementations provide a unique "phandle" value for every | 496 | property. Real Open Firmware implementations provide a unique |
527 | node that the "prom_init()" trampoline code turns into | 497 | "phandle" value for every node that the "prom_init()" trampoline code |
528 | "linux,phandle" properties. However, this is made optional if the | 498 | turns into "linux,phandle" properties. However, this is made optional |
529 | flattened device tree is used directly. An example of a node | 499 | if the flattened device tree is used directly. An example of a node |
530 | referencing another node via "phandle" is when laying out the | 500 | referencing another node via "phandle" is when laying out the |
531 | interrupt tree which will be described in a further version of this | 501 | interrupt tree which will be described in a further version of this |
532 | document. | 502 | document. |
533 | 503 | ||
534 | This "linux, phandle" property is a 32-bit value that uniquely | 504 | The "phandle" property is a 32-bit value that uniquely |
535 | identifies a node. You are free to use whatever values or system of | 505 | identifies a node. You are free to use whatever values or system of |
536 | values, internal pointers, or whatever to generate these, the only | 506 | values, internal pointers, or whatever to generate these, the only |
537 | requirement is that every node for which you provide that property has | 507 | requirement is that every node for which you provide that property has |
@@ -694,7 +664,7 @@ made of 3 cells, the bottom two containing the actual address itself | |||
694 | while the top cell contains address space indication, flags, and pci | 664 | while the top cell contains address space indication, flags, and pci |
695 | bus & device numbers. | 665 | bus & device numbers. |
696 | 666 | ||
697 | For busses that support dynamic allocation, it's the accepted practice | 667 | For buses that support dynamic allocation, it's the accepted practice |
698 | to then not provide the address in "reg" (keep it 0) though while | 668 | to then not provide the address in "reg" (keep it 0) though while |
699 | providing a flag indicating the address is dynamically allocated, and | 669 | providing a flag indicating the address is dynamically allocated, and |
700 | then, to provide a separate "assigned-addresses" property that | 670 | then, to provide a separate "assigned-addresses" property that |
@@ -711,7 +681,7 @@ prom_parse.c file of the recent kernels for your bus type. | |||
711 | The "reg" property only defines addresses and sizes (if #size-cells is | 681 | The "reg" property only defines addresses and sizes (if #size-cells is |
712 | non-0) within a given bus. In order to translate addresses upward | 682 | non-0) within a given bus. In order to translate addresses upward |
713 | (that is into parent bus addresses, and possibly into CPU physical | 683 | (that is into parent bus addresses, and possibly into CPU physical |
714 | addresses), all busses must contain a "ranges" property. If the | 684 | addresses), all buses must contain a "ranges" property. If the |
715 | "ranges" property is missing at a given level, it's assumed that | 685 | "ranges" property is missing at a given level, it's assumed that |
716 | translation isn't possible, i.e., the registers are not visible on the | 686 | translation isn't possible, i.e., the registers are not visible on the |
717 | parent bus. The format of the "ranges" property for a bus is a list | 687 | parent bus. The format of the "ranges" property for a bus is a list |
@@ -727,9 +697,9 @@ example, for a PCI host controller, that would be a CPU address. For a | |||
727 | PCI<->ISA bridge, that would be a PCI address. It defines the base | 697 | PCI<->ISA bridge, that would be a PCI address. It defines the base |
728 | address in the parent bus where the beginning of that range is mapped. | 698 | address in the parent bus where the beginning of that range is mapped. |
729 | 699 | ||
730 | For a new 64-bit powerpc board, I recommend either the 2/2 format or | 700 | For new 64-bit board support, I recommend either the 2/2 format or |
731 | Apple's 2/1 format which is slightly more compact since sizes usually | 701 | Apple's 2/1 format which is slightly more compact since sizes usually |
732 | fit in a single 32-bit word. New 32-bit powerpc boards should use a | 702 | fit in a single 32-bit word. New 32-bit board support should use a |
733 | 1/1 format, unless the processor supports physical addresses greater | 703 | 1/1 format, unless the processor supports physical addresses greater |
734 | than 32-bits, in which case a 2/1 format is recommended. | 704 | than 32-bits, in which case a 2/1 format is recommended. |
735 | 705 | ||
@@ -754,7 +724,7 @@ of their actual names. | |||
754 | While earlier users of Open Firmware like OldWorld macintoshes tended | 724 | While earlier users of Open Firmware like OldWorld macintoshes tended |
755 | to use the actual device name for the "name" property, it's nowadays | 725 | to use the actual device name for the "name" property, it's nowadays |
756 | considered a good practice to use a name that is closer to the device | 726 | considered a good practice to use a name that is closer to the device |
757 | class (often equal to device_type). For example, nowadays, ethernet | 727 | class (often equal to device_type). For example, nowadays, Ethernet |
758 | controllers are named "ethernet", an additional "model" property | 728 | controllers are named "ethernet", an additional "model" property |
759 | defining precisely the chip type/model, and "compatible" property | 729 | defining precisely the chip type/model, and "compatible" property |
760 | defining the family in case a single driver can driver more than one | 730 | defining the family in case a single driver can driver more than one |
@@ -772,7 +742,7 @@ is present). | |||
772 | 4) Note about node and property names and character set | 742 | 4) Note about node and property names and character set |
773 | ------------------------------------------------------- | 743 | ------------------------------------------------------- |
774 | 744 | ||
775 | While open firmware provides more flexible usage of 8859-1, this | 745 | While Open Firmware provides more flexible usage of 8859-1, this |
776 | specification enforces more strict rules. Nodes and properties should | 746 | specification enforces more strict rules. Nodes and properties should |
777 | be comprised only of ASCII characters 'a' to 'z', '0' to | 747 | be comprised only of ASCII characters 'a' to 'z', '0' to |
778 | '9', ',', '.', '_', '+', '#', '?', and '-'. Node names additionally | 748 | '9', ',', '.', '_', '+', '#', '?', and '-'. Node names additionally |
@@ -792,7 +762,7 @@ address which can extend beyond that limit. | |||
792 | -------------------------------- | 762 | -------------------------------- |
793 | These are all that are currently required. However, it is strongly | 763 | These are all that are currently required. However, it is strongly |
794 | recommended that you expose PCI host bridges as documented in the | 764 | recommended that you expose PCI host bridges as documented in the |
795 | PCI binding to open firmware, and your interrupt tree as documented | 765 | PCI binding to Open Firmware, and your interrupt tree as documented |
796 | in OF interrupt tree specification. | 766 | in OF interrupt tree specification. |
797 | 767 | ||
798 | a) The root node | 768 | a) The root node |
@@ -802,20 +772,12 @@ address which can extend beyond that limit. | |||
802 | - model : this is your board name/model | 772 | - model : this is your board name/model |
803 | - #address-cells : address representation for "root" devices | 773 | - #address-cells : address representation for "root" devices |
804 | - #size-cells: the size representation for "root" devices | 774 | - #size-cells: the size representation for "root" devices |
805 | - device_type : This property shouldn't be necessary. However, if | ||
806 | you decide to create a device_type for your root node, make sure it | ||
807 | is _not_ "chrp" unless your platform is a pSeries or PAPR compliant | ||
808 | one for 64-bit, or a CHRP-type machine for 32-bit as this will | ||
809 | matched by the kernel this way. | ||
810 | |||
811 | Additionally, some recommended properties are: | ||
812 | |||
813 | - compatible : the board "family" generally finds its way here, | 775 | - compatible : the board "family" generally finds its way here, |
814 | for example, if you have 2 board models with a similar layout, | 776 | for example, if you have 2 board models with a similar layout, |
815 | that typically get driven by the same platform code in the | 777 | that typically get driven by the same platform code in the |
816 | kernel, you would use a different "model" property but put a | 778 | kernel, you would specify the exact board model in the |
817 | value in "compatible". The kernel doesn't directly use that | 779 | compatible property followed by an entry that represents the SoC |
818 | value but it is generally useful. | 780 | model. |
819 | 781 | ||
820 | The root node is also generally where you add additional properties | 782 | The root node is also generally where you add additional properties |
821 | specific to your board like the serial number if any, that sort of | 783 | specific to your board like the serial number if any, that sort of |
@@ -841,8 +803,11 @@ address which can extend beyond that limit. | |||
841 | 803 | ||
842 | So under /cpus, you are supposed to create a node for every CPU on | 804 | So under /cpus, you are supposed to create a node for every CPU on |
843 | the machine. There is no specific restriction on the name of the | 805 | the machine. There is no specific restriction on the name of the |
844 | CPU, though It's common practice to call it PowerPC,<name>. For | 806 | CPU, though it's common to call it <architecture>,<core>. For |
845 | example, Apple uses PowerPC,G5 while IBM uses PowerPC,970FX. | 807 | example, Apple uses PowerPC,G5 while IBM uses PowerPC,970FX. |
808 | However, the Generic Names convention suggests that it would be | ||
809 | better to simply use 'cpu' for each cpu node and use the compatible | ||
810 | property to identify the specific cpu core. | ||
846 | 811 | ||
847 | Required properties: | 812 | Required properties: |
848 | 813 | ||
@@ -923,7 +888,7 @@ compatibility. | |||
923 | 888 | ||
924 | e) The /chosen node | 889 | e) The /chosen node |
925 | 890 | ||
926 | This node is a bit "special". Normally, that's where open firmware | 891 | This node is a bit "special". Normally, that's where Open Firmware |
927 | puts some variable environment information, like the arguments, or | 892 | puts some variable environment information, like the arguments, or |
928 | the default input/output devices. | 893 | the default input/output devices. |
929 | 894 | ||
@@ -940,11 +905,7 @@ compatibility. | |||
940 | console device if any. Typically, if you have serial devices on | 905 | console device if any. Typically, if you have serial devices on |
941 | your board, you may want to put the full path to the one set as | 906 | your board, you may want to put the full path to the one set as |
942 | the default console in the firmware here, for the kernel to pick | 907 | the default console in the firmware here, for the kernel to pick |
943 | it up as its own default console. If you look at the function | 908 | it up as its own default console. |
944 | set_preferred_console() in arch/ppc64/kernel/setup.c, you'll see | ||
945 | that the kernel tries to find out the default console and has | ||
946 | knowledge of various types like 8250 serial ports. You may want | ||
947 | to extend this function to add your own. | ||
948 | 909 | ||
949 | Note that u-boot creates and fills in the chosen node for platforms | 910 | Note that u-boot creates and fills in the chosen node for platforms |
950 | that use it. | 911 | that use it. |
@@ -955,23 +916,23 @@ compatibility. | |||
955 | 916 | ||
956 | f) the /soc<SOCname> node | 917 | f) the /soc<SOCname> node |
957 | 918 | ||
958 | This node is used to represent a system-on-a-chip (SOC) and must be | 919 | This node is used to represent a system-on-a-chip (SoC) and must be |
959 | present if the processor is a SOC. The top-level soc node contains | 920 | present if the processor is a SoC. The top-level soc node contains |
960 | information that is global to all devices on the SOC. The node name | 921 | information that is global to all devices on the SoC. The node name |
961 | should contain a unit address for the SOC, which is the base address | 922 | should contain a unit address for the SoC, which is the base address |
962 | of the memory-mapped register set for the SOC. The name of an soc | 923 | of the memory-mapped register set for the SoC. The name of an SoC |
963 | node should start with "soc", and the remainder of the name should | 924 | node should start with "soc", and the remainder of the name should |
964 | represent the part number for the soc. For example, the MPC8540's | 925 | represent the part number for the soc. For example, the MPC8540's |
965 | soc node would be called "soc8540". | 926 | soc node would be called "soc8540". |
966 | 927 | ||
967 | Required properties: | 928 | Required properties: |
968 | 929 | ||
969 | - device_type : Should be "soc" | ||
970 | - ranges : Should be defined as specified in 1) to describe the | 930 | - ranges : Should be defined as specified in 1) to describe the |
971 | translation of SOC addresses for memory mapped SOC registers. | 931 | translation of SoC addresses for memory mapped SoC registers. |
972 | - bus-frequency: Contains the bus frequency for the SOC node. | 932 | - bus-frequency: Contains the bus frequency for the SoC node. |
973 | Typically, the value of this field is filled in by the boot | 933 | Typically, the value of this field is filled in by the boot |
974 | loader. | 934 | loader. |
935 | - compatible : Exact model of the SoC | ||
975 | 936 | ||
976 | 937 | ||
977 | Recommended properties: | 938 | Recommended properties: |
@@ -1155,12 +1116,13 @@ while all this has been defined and implemented. | |||
1155 | 1116 | ||
1156 | - An example of code for iterating nodes & retrieving properties | 1117 | - An example of code for iterating nodes & retrieving properties |
1157 | directly from the flattened tree format can be found in the kernel | 1118 | directly from the flattened tree format can be found in the kernel |
1158 | file arch/ppc64/kernel/prom.c, look at scan_flat_dt() function, | 1119 | file drivers/of/fdt.c. Look at the of_scan_flat_dt() function, |
1159 | its usage in early_init_devtree(), and the corresponding various | 1120 | its usage in early_init_devtree(), and the corresponding various |
1160 | early_init_dt_scan_*() callbacks. That code can be re-used in a | 1121 | early_init_dt_scan_*() callbacks. That code can be re-used in a |
1161 | GPL bootloader, and as the author of that code, I would be happy | 1122 | GPL bootloader, and as the author of that code, I would be happy |
1162 | to discuss possible free licensing to any vendor who wishes to | 1123 | to discuss possible free licensing to any vendor who wishes to |
1163 | integrate all or part of this code into a non-GPL bootloader. | 1124 | integrate all or part of this code into a non-GPL bootloader. |
1125 | (reference needed; who is 'I' here? ---gcl Jan 31, 2011) | ||
1164 | 1126 | ||
1165 | 1127 | ||
1166 | 1128 | ||
@@ -1203,18 +1165,19 @@ MPC8540. | |||
1203 | 2) Representing devices without a current OF specification | 1165 | 2) Representing devices without a current OF specification |
1204 | ---------------------------------------------------------- | 1166 | ---------------------------------------------------------- |
1205 | 1167 | ||
1206 | Currently, there are many devices on SOCs that do not have a standard | 1168 | Currently, there are many devices on SoCs that do not have a standard |
1207 | representation pre-defined as part of the open firmware | 1169 | representation defined as part of the Open Firmware specifications, |
1208 | specifications, mainly because the boards that contain these SOCs are | 1170 | mainly because the boards that contain these SoCs are not currently |
1209 | not currently booted using open firmware. This section contains | 1171 | booted using Open Firmware. Binding documentation for new devices |
1210 | descriptions for the SOC devices for which new nodes have been | 1172 | should be added to the Documentation/devicetree/bindings directory. |
1211 | defined; this list will expand as more and more SOC-containing | 1173 | That directory will expand as device tree support is added to more and |
1212 | platforms are moved over to use the flattened-device-tree model. | 1174 | more SoCs. |
1175 | |||
1213 | 1176 | ||
1214 | VII - Specifying interrupt information for devices | 1177 | VII - Specifying interrupt information for devices |
1215 | =================================================== | 1178 | =================================================== |
1216 | 1179 | ||
1217 | The device tree represents the busses and devices of a hardware | 1180 | The device tree represents the buses and devices of a hardware |
1218 | system in a form similar to the physical bus topology of the | 1181 | system in a form similar to the physical bus topology of the |
1219 | hardware. | 1182 | hardware. |
1220 | 1183 | ||
diff --git a/Documentation/dynamic-debug-howto.txt b/Documentation/dynamic-debug-howto.txt index 58ea64a96165..e6c4b757025b 100644 --- a/Documentation/dynamic-debug-howto.txt +++ b/Documentation/dynamic-debug-howto.txt | |||
@@ -205,12 +205,20 @@ of the characters: | |||
205 | 205 | ||
206 | The flags are: | 206 | The flags are: |
207 | 207 | ||
208 | f | ||
209 | Include the function name in the printed message | ||
210 | l | ||
211 | Include line number in the printed message | ||
212 | m | ||
213 | Include module name in the printed message | ||
208 | p | 214 | p |
209 | Causes a printk() message to be emitted to dmesg | 215 | Causes a printk() message to be emitted to dmesg |
216 | t | ||
217 | Include thread ID in messages not generated from interrupt context | ||
210 | 218 | ||
211 | Note the regexp ^[-+=][scp]+$ matches a flags specification. | 219 | Note the regexp ^[-+=][flmpt]+$ matches a flags specification. |
212 | Note also that there is no convenient syntax to remove all | 220 | Note also that there is no convenient syntax to remove all |
213 | the flags at once, you need to use "-psc". | 221 | the flags at once, you need to use "-flmpt". |
214 | 222 | ||
215 | 223 | ||
216 | Debug messages during boot process | 224 | Debug messages during boot process |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index b3f35e5f9c95..f487c6918d78 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -35,6 +35,17 @@ Who: Luis R. Rodriguez <lrodriguez@atheros.com> | |||
35 | 35 | ||
36 | --------------------------- | 36 | --------------------------- |
37 | 37 | ||
38 | What: AR9170USB | ||
39 | When: 2.6.40 | ||
40 | |||
41 | Why: This driver is deprecated and the firmware is no longer | ||
42 | maintained. The replacement driver "carl9170" has been | ||
43 | around for a while, so the devices are still supported. | ||
44 | |||
45 | Who: Christian Lamparter <chunkeey@googlemail.com> | ||
46 | |||
47 | --------------------------- | ||
48 | |||
38 | What: IRQF_SAMPLE_RANDOM | 49 | What: IRQF_SAMPLE_RANDOM |
39 | Check: IRQF_SAMPLE_RANDOM | 50 | Check: IRQF_SAMPLE_RANDOM |
40 | When: July 2009 | 51 | When: July 2009 |
@@ -604,6 +615,13 @@ Who: Jean Delvare <khali@linux-fr.org> | |||
604 | 615 | ||
605 | ---------------------------- | 616 | ---------------------------- |
606 | 617 | ||
618 | What: xt_connlimit rev 0 | ||
619 | When: 2012 | ||
620 | Who: Jan Engelhardt <jengelh@medozas.de> | ||
621 | Files: net/netfilter/xt_connlimit.c | ||
622 | |||
623 | ---------------------------- | ||
624 | |||
607 | What: noswapaccount kernel command line parameter | 625 | What: noswapaccount kernel command line parameter |
608 | When: 2.6.40 | 626 | When: 2.6.40 |
609 | Why: The original implementation of memsw feature enabled by | 627 | Why: The original implementation of memsw feature enabled by |
@@ -619,3 +637,11 @@ Why: The original implementation of memsw feature enabled by | |||
619 | Who: Michal Hocko <mhocko@suse.cz> | 637 | Who: Michal Hocko <mhocko@suse.cz> |
620 | 638 | ||
621 | ---------------------------- | 639 | ---------------------------- |
640 | |||
641 | What: ipt_addrtype match include file | ||
642 | When: 2012 | ||
643 | Why: superseded by xt_addrtype | ||
644 | Who: Florian Westphal <fw@strlen.de> | ||
645 | Files: include/linux/netfilter_ipv4/ipt_addrtype.h | ||
646 | |||
647 | ---------------------------- | ||
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 4471a416c274..2e994efe12cb 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -166,13 +166,11 @@ prototypes: | |||
166 | void (*kill_sb) (struct super_block *); | 166 | void (*kill_sb) (struct super_block *); |
167 | locking rules: | 167 | locking rules: |
168 | may block | 168 | may block |
169 | get_sb yes | ||
170 | mount yes | 169 | mount yes |
171 | kill_sb yes | 170 | kill_sb yes |
172 | 171 | ||
173 | ->get_sb() returns error or 0 with locked superblock attached to the vfsmount | 172 | ->mount() returns ERR_PTR or the root dentry; its superblock should be locked |
174 | (exclusive on ->s_umount). | 173 | on return. |
175 | ->mount() returns ERR_PTR or the root dentry. | ||
176 | ->kill_sb() takes a write-locked superblock, does all shutdown work on it, | 174 | ->kill_sb() takes a write-locked superblock, does all shutdown work on it, |
177 | unlocks and drops the reference. | 175 | unlocks and drops the reference. |
178 | 176 | ||
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index bc0b9cfe095b..983e14abe7e9 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
@@ -46,3 +46,10 @@ data server cache | |||
46 | file driver devices refer to data servers, which are kept in a module | 46 | file driver devices refer to data servers, which are kept in a module |
47 | level cache. Its reference is held over the lifetime of the deviceid | 47 | level cache. Its reference is held over the lifetime of the deviceid |
48 | pointing to it. | 48 | pointing to it. |
49 | |||
50 | lseg | ||
51 | ---- | ||
52 | lseg maintains an extra reference corresponding to the NFS_LSEG_VALID | ||
53 | bit which holds it in the pnfs_layout_hdr's list. When the final lseg | ||
54 | is removed from the pnfs_layout_hdr's list, the NFS_LAYOUT_DESTROYED | ||
55 | bit is set, preventing any new lsegs from being added. | ||
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index dfbcd1b00b0a..0c986c9e8519 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -394,3 +394,10 @@ file) you must return -EOPNOTSUPP if FALLOC_FL_PUNCH_HOLE is set in mode. | |||
394 | Currently you can only have FALLOC_FL_PUNCH_HOLE with FALLOC_FL_KEEP_SIZE set, | 394 | Currently you can only have FALLOC_FL_PUNCH_HOLE with FALLOC_FL_KEEP_SIZE set, |
395 | so the i_size should not change when hole punching, even when puching the end of | 395 | so the i_size should not change when hole punching, even when puching the end of |
396 | a file off. | 396 | a file off. |
397 | |||
398 | -- | ||
399 | [mandatory] | ||
400 | ->get_sb() is gone. Switch to use of ->mount(). Typically it's just | ||
401 | a matter of switching from calling get_sb_... to mount_... and changing the | ||
402 | function type. If you were doing it manually, just switch from setting ->mnt_root | ||
403 | to some pointer to returning that pointer. On errors return ERR_PTR(...). | ||
diff --git a/Documentation/filesystems/romfs.txt b/Documentation/filesystems/romfs.txt index 2d2a7b2a16b9..e2b07cc9120a 100644 --- a/Documentation/filesystems/romfs.txt +++ b/Documentation/filesystems/romfs.txt | |||
@@ -17,8 +17,7 @@ comparison, an actual rescue disk used up 3202 blocks with ext2, while | |||
17 | with romfs, it needed 3079 blocks. | 17 | with romfs, it needed 3079 blocks. |
18 | 18 | ||
19 | To create such a file system, you'll need a user program named | 19 | To create such a file system, you'll need a user program named |
20 | genromfs. It is available via anonymous ftp on sunsite.unc.edu and | 20 | genromfs. It is available on http://romfs.sourceforge.net/ |
21 | its mirrors, in the /pub/Linux/system/recovery/ directory. | ||
22 | 21 | ||
23 | As the name suggests, romfs could be also used (space-efficiently) on | 22 | As the name suggests, romfs could be also used (space-efficiently) on |
24 | various read-only media, like (E)EPROM disks if someone will have the | 23 | various read-only media, like (E)EPROM disks if someone will have the |
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt index 5d1335faec2d..f806e50aaa63 100644 --- a/Documentation/filesystems/sysfs.txt +++ b/Documentation/filesystems/sysfs.txt | |||
@@ -39,10 +39,12 @@ userspace. Top-level directories in sysfs represent the common | |||
39 | ancestors of object hierarchies; i.e. the subsystems the objects | 39 | ancestors of object hierarchies; i.e. the subsystems the objects |
40 | belong to. | 40 | belong to. |
41 | 41 | ||
42 | Sysfs internally stores the kobject that owns the directory in the | 42 | Sysfs internally stores a pointer to the kobject that implements a |
43 | ->d_fsdata pointer of the directory's dentry. This allows sysfs to do | 43 | directory in the sysfs_dirent object associated with the directory. In |
44 | reference counting directly on the kobject when the file is opened and | 44 | the past this kobject pointer has been used by sysfs to do reference |
45 | closed. | 45 | counting directly on the kobject whenever the file is opened or closed. |
46 | With the current sysfs implementation the kobject reference count is | ||
47 | only modified directly by the function sysfs_schedule_callback(). | ||
46 | 48 | ||
47 | 49 | ||
48 | Attributes | 50 | Attributes |
@@ -208,9 +210,9 @@ Other notes: | |||
208 | is 4096. | 210 | is 4096. |
209 | 211 | ||
210 | - show() methods should return the number of bytes printed into the | 212 | - show() methods should return the number of bytes printed into the |
211 | buffer. This is the return value of snprintf(). | 213 | buffer. This is the return value of scnprintf(). |
212 | 214 | ||
213 | - show() should always use snprintf(). | 215 | - show() should always use scnprintf(). |
214 | 216 | ||
215 | - store() should return the number of bytes used from the buffer. If the | 217 | - store() should return the number of bytes used from the buffer. If the |
216 | entire buffer has been used, just return the count argument. | 218 | entire buffer has been used, just return the count argument. |
@@ -229,7 +231,7 @@ A very simple (and naive) implementation of a device attribute is: | |||
229 | static ssize_t show_name(struct device *dev, struct device_attribute *attr, | 231 | static ssize_t show_name(struct device *dev, struct device_attribute *attr, |
230 | char *buf) | 232 | char *buf) |
231 | { | 233 | { |
232 | return snprintf(buf, PAGE_SIZE, "%s\n", dev->name); | 234 | return scnprintf(buf, PAGE_SIZE, "%s\n", dev->name); |
233 | } | 235 | } |
234 | 236 | ||
235 | static ssize_t store_name(struct device *dev, struct device_attribute *attr, | 237 | static ssize_t store_name(struct device *dev, struct device_attribute *attr, |
diff --git a/Documentation/filesystems/ubifs.txt b/Documentation/filesystems/ubifs.txt index 12fedb7834c6..d7b13b01e980 100644 --- a/Documentation/filesystems/ubifs.txt +++ b/Documentation/filesystems/ubifs.txt | |||
@@ -82,12 +82,12 @@ Mount options | |||
82 | bulk_read read more in one go to take advantage of flash | 82 | bulk_read read more in one go to take advantage of flash |
83 | media that read faster sequentially | 83 | media that read faster sequentially |
84 | no_bulk_read (*) do not bulk-read | 84 | no_bulk_read (*) do not bulk-read |
85 | no_chk_data_crc skip checking of CRCs on data nodes in order to | 85 | no_chk_data_crc (*) skip checking of CRCs on data nodes in order to |
86 | improve read performance. Use this option only | 86 | improve read performance. Use this option only |
87 | if the flash media is highly reliable. The effect | 87 | if the flash media is highly reliable. The effect |
88 | of this option is that corruption of the contents | 88 | of this option is that corruption of the contents |
89 | of a file can go unnoticed. | 89 | of a file can go unnoticed. |
90 | chk_data_crc (*) do not skip checking CRCs on data nodes | 90 | chk_data_crc do not skip checking CRCs on data nodes |
91 | compr=none override default compressor and set it to "none" | 91 | compr=none override default compressor and set it to "none" |
92 | compr=lzo override default compressor and set it to "lzo" | 92 | compr=lzo override default compressor and set it to "lzo" |
93 | compr=zlib override default compressor and set it to "zlib" | 93 | compr=zlib override default compressor and set it to "zlib" |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 94cf97b901d7..306f0ae8df09 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -95,10 +95,11 @@ functions: | |||
95 | extern int unregister_filesystem(struct file_system_type *); | 95 | extern int unregister_filesystem(struct file_system_type *); |
96 | 96 | ||
97 | The passed struct file_system_type describes your filesystem. When a | 97 | The passed struct file_system_type describes your filesystem. When a |
98 | request is made to mount a device onto a directory in your filespace, | 98 | request is made to mount a filesystem onto a directory in your namespace, |
99 | the VFS will call the appropriate get_sb() method for the specific | 99 | the VFS will call the appropriate mount() method for the specific |
100 | filesystem. The dentry for the mount point will then be updated to | 100 | filesystem. New vfsmount refering to the tree returned by ->mount() |
101 | point to the root inode for the new filesystem. | 101 | will be attached to the mountpoint, so that when pathname resolution |
102 | reaches the mountpoint it will jump into the root of that vfsmount. | ||
102 | 103 | ||
103 | You can see all filesystems that are registered to the kernel in the | 104 | You can see all filesystems that are registered to the kernel in the |
104 | file /proc/filesystems. | 105 | file /proc/filesystems. |
@@ -107,14 +108,14 @@ file /proc/filesystems. | |||
107 | struct file_system_type | 108 | struct file_system_type |
108 | ----------------------- | 109 | ----------------------- |
109 | 110 | ||
110 | This describes the filesystem. As of kernel 2.6.22, the following | 111 | This describes the filesystem. As of kernel 2.6.39, the following |
111 | members are defined: | 112 | members are defined: |
112 | 113 | ||
113 | struct file_system_type { | 114 | struct file_system_type { |
114 | const char *name; | 115 | const char *name; |
115 | int fs_flags; | 116 | int fs_flags; |
116 | int (*get_sb) (struct file_system_type *, int, | 117 | struct dentry (*mount) (struct file_system_type *, int, |
117 | const char *, void *, struct vfsmount *); | 118 | const char *, void *); |
118 | void (*kill_sb) (struct super_block *); | 119 | void (*kill_sb) (struct super_block *); |
119 | struct module *owner; | 120 | struct module *owner; |
120 | struct file_system_type * next; | 121 | struct file_system_type * next; |
@@ -128,11 +129,11 @@ struct file_system_type { | |||
128 | 129 | ||
129 | fs_flags: various flags (i.e. FS_REQUIRES_DEV, FS_NO_DCACHE, etc.) | 130 | fs_flags: various flags (i.e. FS_REQUIRES_DEV, FS_NO_DCACHE, etc.) |
130 | 131 | ||
131 | get_sb: the method to call when a new instance of this | 132 | mount: the method to call when a new instance of this |
132 | filesystem should be mounted | 133 | filesystem should be mounted |
133 | 134 | ||
134 | kill_sb: the method to call when an instance of this filesystem | 135 | kill_sb: the method to call when an instance of this filesystem |
135 | should be unmounted | 136 | should be shut down |
136 | 137 | ||
137 | owner: for internal VFS use: you should initialize this to THIS_MODULE in | 138 | owner: for internal VFS use: you should initialize this to THIS_MODULE in |
138 | most cases. | 139 | most cases. |
@@ -141,7 +142,7 @@ struct file_system_type { | |||
141 | 142 | ||
142 | s_lock_key, s_umount_key: lockdep-specific | 143 | s_lock_key, s_umount_key: lockdep-specific |
143 | 144 | ||
144 | The get_sb() method has the following arguments: | 145 | The mount() method has the following arguments: |
145 | 146 | ||
146 | struct file_system_type *fs_type: describes the filesystem, partly initialized | 147 | struct file_system_type *fs_type: describes the filesystem, partly initialized |
147 | by the specific filesystem code | 148 | by the specific filesystem code |
@@ -153,32 +154,39 @@ The get_sb() method has the following arguments: | |||
153 | void *data: arbitrary mount options, usually comes as an ASCII | 154 | void *data: arbitrary mount options, usually comes as an ASCII |
154 | string (see "Mount Options" section) | 155 | string (see "Mount Options" section) |
155 | 156 | ||
156 | struct vfsmount *mnt: a vfs-internal representation of a mount point | 157 | The mount() method must return the root dentry of the tree requested by |
158 | caller. An active reference to its superblock must be grabbed and the | ||
159 | superblock must be locked. On failure it should return ERR_PTR(error). | ||
157 | 160 | ||
158 | The get_sb() method must determine if the block device specified | 161 | The arguments match those of mount(2) and their interpretation |
159 | in the dev_name and fs_type contains a filesystem of the type the method | 162 | depends on filesystem type. E.g. for block filesystems, dev_name is |
160 | supports. If it succeeds in opening the named block device, it initializes a | 163 | interpreted as block device name, that device is opened and if it |
161 | struct super_block descriptor for the filesystem contained by the block device. | 164 | contains a suitable filesystem image the method creates and initializes |
162 | On failure it returns an error. | 165 | struct super_block accordingly, returning its root dentry to caller. |
166 | |||
167 | ->mount() may choose to return a subtree of existing filesystem - it | ||
168 | doesn't have to create a new one. The main result from the caller's | ||
169 | point of view is a reference to dentry at the root of (sub)tree to | ||
170 | be attached; creation of new superblock is a common side effect. | ||
163 | 171 | ||
164 | The most interesting member of the superblock structure that the | 172 | The most interesting member of the superblock structure that the |
165 | get_sb() method fills in is the "s_op" field. This is a pointer to | 173 | mount() method fills in is the "s_op" field. This is a pointer to |
166 | a "struct super_operations" which describes the next level of the | 174 | a "struct super_operations" which describes the next level of the |
167 | filesystem implementation. | 175 | filesystem implementation. |
168 | 176 | ||
169 | Usually, a filesystem uses one of the generic get_sb() implementations | 177 | Usually, a filesystem uses one of the generic mount() implementations |
170 | and provides a fill_super() method instead. The generic methods are: | 178 | and provides a fill_super() callback instead. The generic variants are: |
171 | 179 | ||
172 | get_sb_bdev: mount a filesystem residing on a block device | 180 | mount_bdev: mount a filesystem residing on a block device |
173 | 181 | ||
174 | get_sb_nodev: mount a filesystem that is not backed by a device | 182 | mount_nodev: mount a filesystem that is not backed by a device |
175 | 183 | ||
176 | get_sb_single: mount a filesystem which shares the instance between | 184 | mount_single: mount a filesystem which shares the instance between |
177 | all mounts | 185 | all mounts |
178 | 186 | ||
179 | A fill_super() method implementation has the following arguments: | 187 | A fill_super() callback implementation has the following arguments: |
180 | 188 | ||
181 | struct super_block *sb: the superblock structure. The method fill_super() | 189 | struct super_block *sb: the superblock structure. The callback |
182 | must initialize this properly. | 190 | must initialize this properly. |
183 | 191 | ||
184 | void *data: arbitrary mount options, usually comes as an ASCII | 192 | void *data: arbitrary mount options, usually comes as an ASCII |
@@ -865,7 +873,7 @@ struct dentry_operations { | |||
865 | void (*d_iput)(struct dentry *, struct inode *); | 873 | void (*d_iput)(struct dentry *, struct inode *); |
866 | char *(*d_dname)(struct dentry *, char *, int); | 874 | char *(*d_dname)(struct dentry *, char *, int); |
867 | struct vfsmount *(*d_automount)(struct path *); | 875 | struct vfsmount *(*d_automount)(struct path *); |
868 | int (*d_manage)(struct dentry *, bool, bool); | 876 | int (*d_manage)(struct dentry *, bool); |
869 | }; | 877 | }; |
870 | 878 | ||
871 | d_revalidate: called when the VFS needs to revalidate a dentry. This | 879 | d_revalidate: called when the VFS needs to revalidate a dentry. This |
@@ -961,10 +969,6 @@ struct dentry_operations { | |||
961 | mounted on it and not to check the automount flag. Any other error | 969 | mounted on it and not to check the automount flag. Any other error |
962 | code will abort pathwalk completely. | 970 | code will abort pathwalk completely. |
963 | 971 | ||
964 | If the 'mounting_here' parameter is true, then namespace_sem is being | ||
965 | held by the caller and the function should not initiate any mounts or | ||
966 | unmounts that it will then wait for. | ||
967 | |||
968 | If the 'rcu_walk' parameter is true, then the caller is doing a | 972 | If the 'rcu_walk' parameter is true, then the caller is doing a |
969 | pathwalk in RCU-walk mode. Sleeping is not permitted in this mode, | 973 | pathwalk in RCU-walk mode. Sleeping is not permitted in this mode, |
970 | and the caller can be asked to leave it and call again by returing | 974 | and the caller can be asked to leave it and call again by returing |
diff --git a/Documentation/hwmon/f71882fg b/Documentation/hwmon/f71882fg index a7952c2bd959..4d0bc70f1852 100644 --- a/Documentation/hwmon/f71882fg +++ b/Documentation/hwmon/f71882fg | |||
@@ -10,6 +10,10 @@ Supported chips: | |||
10 | Prefix: 'f71862fg' | 10 | Prefix: 'f71862fg' |
11 | Addresses scanned: none, address read from Super I/O config space | 11 | Addresses scanned: none, address read from Super I/O config space |
12 | Datasheet: Available from the Fintek website | 12 | Datasheet: Available from the Fintek website |
13 | * Fintek F71869F and F71869E | ||
14 | Prefix: 'f71869' | ||
15 | Addresses scanned: none, address read from Super I/O config space | ||
16 | Datasheet: Available from the Fintek website | ||
13 | * Fintek F71882FG and F71883FG | 17 | * Fintek F71882FG and F71883FG |
14 | Prefix: 'f71882fg' | 18 | Prefix: 'f71882fg' |
15 | Addresses scanned: none, address read from Super I/O config space | 19 | Addresses scanned: none, address read from Super I/O config space |
@@ -17,6 +21,10 @@ Supported chips: | |||
17 | * Fintek F71889FG | 21 | * Fintek F71889FG |
18 | Prefix: 'f71889fg' | 22 | Prefix: 'f71889fg' |
19 | Addresses scanned: none, address read from Super I/O config space | 23 | Addresses scanned: none, address read from Super I/O config space |
24 | Datasheet: Available from the Fintek website | ||
25 | * Fintek F71889ED | ||
26 | Prefix: 'f71889ed' | ||
27 | Addresses scanned: none, address read from Super I/O config space | ||
20 | Datasheet: Should become available on the Fintek website soon | 28 | Datasheet: Should become available on the Fintek website soon |
21 | * Fintek F8000 | 29 | * Fintek F8000 |
22 | Prefix: 'f8000' | 30 | Prefix: 'f8000' |
@@ -29,9 +37,9 @@ Author: Hans de Goede <hdegoede@redhat.com> | |||
29 | Description | 37 | Description |
30 | ----------- | 38 | ----------- |
31 | 39 | ||
32 | Fintek F718xxFG/F8000 Super I/O chips include complete hardware monitoring | 40 | Fintek F718xx/F8000 Super I/O chips include complete hardware monitoring |
33 | capabilities. They can monitor up to 9 voltages (3 for the F8000), 4 fans and | 41 | capabilities. They can monitor up to 9 voltages, 4 fans and 3 temperature |
34 | 3 temperature sensors. | 42 | sensors. |
35 | 43 | ||
36 | These chips also have fan controlling features, using either DC or PWM, in | 44 | These chips also have fan controlling features, using either DC or PWM, in |
37 | three different modes (one manual, two automatic). | 45 | three different modes (one manual, two automatic). |
@@ -99,5 +107,5 @@ Writing an unsupported mode will result in an invalid parameter error. | |||
99 | The fan speed is regulated to keep the temp the fan is mapped to between | 107 | The fan speed is regulated to keep the temp the fan is mapped to between |
100 | temp#_auto_point2_temp and temp#_auto_point3_temp. | 108 | temp#_auto_point2_temp and temp#_auto_point3_temp. |
101 | 109 | ||
102 | Both of the automatic modes require that pwm1 corresponds to fan1, pwm2 to | 110 | All of the automatic modes require that pwm1 corresponds to fan1, pwm2 to |
103 | fan2 and pwm3 to fan3. | 111 | fan2 and pwm3 to fan3. |
diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42 index 0e76ef12e4c6..a22ecf48f255 100644 --- a/Documentation/hwmon/jc42 +++ b/Documentation/hwmon/jc42 | |||
@@ -51,7 +51,8 @@ Supported chips: | |||
51 | * JEDEC JC 42.4 compliant temperature sensor chips | 51 | * JEDEC JC 42.4 compliant temperature sensor chips |
52 | Prefix: 'jc42' | 52 | Prefix: 'jc42' |
53 | Addresses scanned: I2C 0x18 - 0x1f | 53 | Addresses scanned: I2C 0x18 - 0x1f |
54 | Datasheet: - | 54 | Datasheet: |
55 | http://www.jedec.org/sites/default/files/docs/4_01_04R19.pdf | ||
55 | 56 | ||
56 | Author: | 57 | Author: |
57 | Guenter Roeck <guenter.roeck@ericsson.com> | 58 | Guenter Roeck <guenter.roeck@ericsson.com> |
@@ -60,7 +61,11 @@ Author: | |||
60 | Description | 61 | Description |
61 | ----------- | 62 | ----------- |
62 | 63 | ||
63 | This driver implements support for JEDEC JC 42.4 compliant temperature sensors. | 64 | This driver implements support for JEDEC JC 42.4 compliant temperature sensors, |
65 | which are used on many DDR3 memory modules for mobile devices and servers. Some | ||
66 | systems use the sensor to prevent memory overheating by automatically throttling | ||
67 | the memory controller. | ||
68 | |||
64 | The driver auto-detects the chips listed above, but can be manually instantiated | 69 | The driver auto-detects the chips listed above, but can be manually instantiated |
65 | to support other JC 42.4 compliant chips. | 70 | to support other JC 42.4 compliant chips. |
66 | 71 | ||
@@ -81,15 +86,19 @@ limits. The chip supports only a single register to configure the hysteresis, | |||
81 | which applies to all limits. This register can be written by writing into | 86 | which applies to all limits. This register can be written by writing into |
82 | temp1_crit_hyst. Other hysteresis attributes are read-only. | 87 | temp1_crit_hyst. Other hysteresis attributes are read-only. |
83 | 88 | ||
89 | If the BIOS has configured the sensor for automatic temperature management, it | ||
90 | is likely that it has locked the registers, i.e., that the temperature limits | ||
91 | cannot be changed. | ||
92 | |||
84 | Sysfs entries | 93 | Sysfs entries |
85 | ------------- | 94 | ------------- |
86 | 95 | ||
87 | temp1_input Temperature (RO) | 96 | temp1_input Temperature (RO) |
88 | temp1_min Minimum temperature (RW) | 97 | temp1_min Minimum temperature (RO or RW) |
89 | temp1_max Maximum temperature (RW) | 98 | temp1_max Maximum temperature (RO or RW) |
90 | temp1_crit Critical high temperature (RW) | 99 | temp1_crit Critical high temperature (RO or RW) |
91 | 100 | ||
92 | temp1_crit_hyst Critical hysteresis temperature (RW) | 101 | temp1_crit_hyst Critical hysteresis temperature (RO or RW) |
93 | temp1_max_hyst Maximum hysteresis temperature (RO) | 102 | temp1_max_hyst Maximum hysteresis temperature (RO) |
94 | 103 | ||
95 | temp1_min_alarm Temperature low alarm | 104 | temp1_min_alarm Temperature low alarm |
diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp index 6526eee525a6..d2b56a4fd1f5 100644 --- a/Documentation/hwmon/k10temp +++ b/Documentation/hwmon/k10temp | |||
@@ -9,6 +9,8 @@ Supported chips: | |||
9 | Socket S1G3: Athlon II, Sempron, Turion II | 9 | Socket S1G3: Athlon II, Sempron, Turion II |
10 | * AMD Family 11h processors: | 10 | * AMD Family 11h processors: |
11 | Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra) | 11 | Socket S1G2: Athlon (X2), Sempron (X2), Turion X2 (Ultra) |
12 | * AMD Family 12h processors: "Llano" | ||
13 | * AMD Family 14h processors: "Brazos" (C/E/G-Series) | ||
12 | 14 | ||
13 | Prefix: 'k10temp' | 15 | Prefix: 'k10temp' |
14 | Addresses scanned: PCI space | 16 | Addresses scanned: PCI space |
@@ -17,10 +19,14 @@ Supported chips: | |||
17 | http://support.amd.com/us/Processor_TechDocs/31116.pdf | 19 | http://support.amd.com/us/Processor_TechDocs/31116.pdf |
18 | BIOS and Kernel Developer's Guide (BKDG) for AMD Family 11h Processors: | 20 | BIOS and Kernel Developer's Guide (BKDG) for AMD Family 11h Processors: |
19 | http://support.amd.com/us/Processor_TechDocs/41256.pdf | 21 | http://support.amd.com/us/Processor_TechDocs/41256.pdf |
22 | BIOS and Kernel Developer's Guide (BKDG) for AMD Family 14h Models 00h-0Fh Processors: | ||
23 | http://support.amd.com/us/Processor_TechDocs/43170.pdf | ||
20 | Revision Guide for AMD Family 10h Processors: | 24 | Revision Guide for AMD Family 10h Processors: |
21 | http://support.amd.com/us/Processor_TechDocs/41322.pdf | 25 | http://support.amd.com/us/Processor_TechDocs/41322.pdf |
22 | Revision Guide for AMD Family 11h Processors: | 26 | Revision Guide for AMD Family 11h Processors: |
23 | http://support.amd.com/us/Processor_TechDocs/41788.pdf | 27 | http://support.amd.com/us/Processor_TechDocs/41788.pdf |
28 | Revision Guide for AMD Family 14h Models 00h-0Fh Processors: | ||
29 | http://support.amd.com/us/Processor_TechDocs/47534.pdf | ||
24 | AMD Family 11h Processor Power and Thermal Data Sheet for Notebooks: | 30 | AMD Family 11h Processor Power and Thermal Data Sheet for Notebooks: |
25 | http://support.amd.com/us/Processor_TechDocs/43373.pdf | 31 | http://support.amd.com/us/Processor_TechDocs/43373.pdf |
26 | AMD Family 10h Server and Workstation Processor Power and Thermal Data Sheet: | 32 | AMD Family 10h Server and Workstation Processor Power and Thermal Data Sheet: |
@@ -34,7 +40,7 @@ Description | |||
34 | ----------- | 40 | ----------- |
35 | 41 | ||
36 | This driver permits reading of the internal temperature sensor of AMD | 42 | This driver permits reading of the internal temperature sensor of AMD |
37 | Family 10h and 11h processors. | 43 | Family 10h/11h/12h/14h processors. |
38 | 44 | ||
39 | All these processors have a sensor, but on those for Socket F or AM2+, | 45 | All these processors have a sensor, but on those for Socket F or AM2+, |
40 | the sensor may return inconsistent values (erratum 319). The driver | 46 | the sensor may return inconsistent values (erratum 319). The driver |
diff --git a/Documentation/hwmon/lineage-pem b/Documentation/hwmon/lineage-pem new file mode 100644 index 000000000000..2ba5ed126858 --- /dev/null +++ b/Documentation/hwmon/lineage-pem | |||
@@ -0,0 +1,77 @@ | |||
1 | Kernel driver lineage-pem | ||
2 | ========================= | ||
3 | |||
4 | Supported devices: | ||
5 | * Lineage Compact Power Line Power Entry Modules | ||
6 | Prefix: 'lineage-pem' | ||
7 | Addresses scanned: - | ||
8 | Documentation: | ||
9 | http://www.lineagepower.com/oem/pdf/CPLI2C.pdf | ||
10 | |||
11 | Author: Guenter Roeck <guenter.roeck@ericsson.com> | ||
12 | |||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | This driver supports various Lineage Compact Power Line DC/DC and AC/DC | ||
18 | converters such as CP1800, CP2000AC, CP2000DC, CP2100DC, and others. | ||
19 | |||
20 | Lineage CPL power entry modules are nominally PMBus compliant. However, most | ||
21 | standard PMBus commands are not supported. Specifically, all hardware monitoring | ||
22 | and status reporting commands are non-standard. For this reason, a standard | ||
23 | PMBus driver can not be used. | ||
24 | |||
25 | |||
26 | Usage Notes | ||
27 | ----------- | ||
28 | |||
29 | This driver does not probe for Lineage CPL devices, since there is no register | ||
30 | which can be safely used to identify the chip. You will have to instantiate | ||
31 | the devices explicitly. | ||
32 | |||
33 | Example: the following will load the driver for a Lineage PEM at address 0x40 | ||
34 | on I2C bus #1: | ||
35 | $ modprobe lineage-pem | ||
36 | $ echo lineage-pem 0x40 > /sys/bus/i2c/devices/i2c-1/new_device | ||
37 | |||
38 | All Lineage CPL power entry modules have a built-in I2C bus master selector | ||
39 | (PCA9541). To ensure device access, this driver should only be used as client | ||
40 | driver to the pca9541 I2C master selector driver. | ||
41 | |||
42 | |||
43 | Sysfs entries | ||
44 | ------------- | ||
45 | |||
46 | All Lineage CPL devices report output voltage and device temperature as well as | ||
47 | alarms for output voltage, temperature, input voltage, input current, input power, | ||
48 | and fan status. | ||
49 | |||
50 | Input voltage, input current, input power, and fan speed measurement is only | ||
51 | supported on newer devices. The driver detects if those attributes are supported, | ||
52 | and only creates respective sysfs entries if they are. | ||
53 | |||
54 | in1_input Output voltage (mV) | ||
55 | in1_min_alarm Output undervoltage alarm | ||
56 | in1_max_alarm Output overvoltage alarm | ||
57 | in1_crit Output voltage critical alarm | ||
58 | |||
59 | in2_input Input voltage (mV, optional) | ||
60 | in2_alarm Input voltage alarm | ||
61 | |||
62 | curr1_input Input current (mA, optional) | ||
63 | curr1_alarm Input overcurrent alarm | ||
64 | |||
65 | power1_input Input power (uW, optional) | ||
66 | power1_alarm Input power alarm | ||
67 | |||
68 | fan1_input Fan 1 speed (rpm, optional) | ||
69 | fan2_input Fan 2 speed (rpm, optional) | ||
70 | fan3_input Fan 3 speed (rpm, optional) | ||
71 | |||
72 | temp1_input | ||
73 | temp1_max | ||
74 | temp1_crit | ||
75 | temp1_alarm | ||
76 | temp1_crit_alarm | ||
77 | temp1_fault | ||
diff --git a/Documentation/hwmon/lm85 b/Documentation/hwmon/lm85 index 239258a63c81..7c49feaa79d2 100644 --- a/Documentation/hwmon/lm85 +++ b/Documentation/hwmon/lm85 | |||
@@ -26,6 +26,14 @@ Supported chips: | |||
26 | Prefix: 'emc6d102' | 26 | Prefix: 'emc6d102' |
27 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | 27 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e |
28 | Datasheet: http://www.smsc.com/main/catalog/emc6d102.html | 28 | Datasheet: http://www.smsc.com/main/catalog/emc6d102.html |
29 | * SMSC EMC6D103 | ||
30 | Prefix: 'emc6d103' | ||
31 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
32 | Datasheet: http://www.smsc.com/main/catalog/emc6d103.html | ||
33 | * SMSC EMC6D103S | ||
34 | Prefix: 'emc6d103s' | ||
35 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
36 | Datasheet: http://www.smsc.com/main/catalog/emc6d103s.html | ||
29 | 37 | ||
30 | Authors: | 38 | Authors: |
31 | Philip Pokorny <ppokorny@penguincomputing.com>, | 39 | Philip Pokorny <ppokorny@penguincomputing.com>, |
@@ -122,9 +130,11 @@ to be register compatible. The EMC6D100 offers all the features of the | |||
122 | EMC6D101 plus additional voltage monitoring and system control features. | 130 | EMC6D101 plus additional voltage monitoring and system control features. |
123 | Unfortunately it is not possible to distinguish between the package | 131 | Unfortunately it is not possible to distinguish between the package |
124 | versions on register level so these additional voltage inputs may read | 132 | versions on register level so these additional voltage inputs may read |
125 | zero. The EMC6D102 features addtional ADC bits thus extending precision | 133 | zero. EMC6D102 and EMC6D103 feature additional ADC bits thus extending precision |
126 | of voltage and temperature channels. | 134 | of voltage and temperature channels. |
127 | 135 | ||
136 | SMSC EMC6D103S is similar to EMC6D103, but does not support pwm#_auto_pwm_minctl | ||
137 | and temp#_auto_temp_off. | ||
128 | 138 | ||
129 | Hardware Configurations | 139 | Hardware Configurations |
130 | ----------------------- | 140 | ----------------------- |
diff --git a/Documentation/hwmon/ltc4151 b/Documentation/hwmon/ltc4151 new file mode 100644 index 000000000000..43c667e6677a --- /dev/null +++ b/Documentation/hwmon/ltc4151 | |||
@@ -0,0 +1,47 @@ | |||
1 | Kernel driver ltc4151 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Linear Technology LTC4151 | ||
6 | Prefix: 'ltc4151' | ||
7 | Addresses scanned: - | ||
8 | Datasheet: | ||
9 | http://www.linear.com/docs/Datasheet/4151fc.pdf | ||
10 | |||
11 | Author: Per Dalen <per.dalen@appeartv.com> | ||
12 | |||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | The LTC4151 is a High Voltage I2C Current and Voltage Monitor. | ||
18 | |||
19 | |||
20 | Usage Notes | ||
21 | ----------- | ||
22 | |||
23 | This driver does not probe for LTC4151 devices, since there is no register | ||
24 | which can be safely used to identify the chip. You will have to instantiate | ||
25 | the devices explicitly. | ||
26 | |||
27 | Example: the following will load the driver for an LTC4151 at address 0x6f | ||
28 | on I2C bus #0: | ||
29 | # modprobe ltc4151 | ||
30 | # echo ltc4151 0x6f > /sys/bus/i2c/devices/i2c-0/new_device | ||
31 | |||
32 | |||
33 | Sysfs entries | ||
34 | ------------- | ||
35 | |||
36 | Voltage readings provided by this driver are reported as obtained from the ADIN | ||
37 | and VIN registers. | ||
38 | |||
39 | Current reading provided by this driver is reported as obtained from the Current | ||
40 | Sense register. The reported value assumes that a 1 mOhm sense resistor is | ||
41 | installed. | ||
42 | |||
43 | in1_input VDIN voltage (mV) | ||
44 | |||
45 | in2_input ADIN voltage (mV) | ||
46 | |||
47 | curr1_input SENSE current (mA) | ||
diff --git a/Documentation/hwmon/max6639 b/Documentation/hwmon/max6639 new file mode 100644 index 000000000000..dc49f8be7167 --- /dev/null +++ b/Documentation/hwmon/max6639 | |||
@@ -0,0 +1,49 @@ | |||
1 | Kernel driver max6639 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Maxim MAX6639 | ||
6 | Prefix: 'max6639' | ||
7 | Addresses scanned: I2C 0x2c, 0x2e, 0x2f | ||
8 | Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6639.pdf | ||
9 | |||
10 | Authors: | ||
11 | He Changqing <hechangqing@semptian.com> | ||
12 | Roland Stigge <stigge@antcom.de> | ||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | This driver implements support for the Maxim MAX6639. This chip is a 2-channel | ||
18 | temperature monitor with dual PWM fan speed controller. It can monitor its own | ||
19 | temperature and one external diode-connected transistor or two external | ||
20 | diode-connected transistors. | ||
21 | |||
22 | The following device attributes are implemented via sysfs: | ||
23 | |||
24 | Attribute R/W Contents | ||
25 | ---------------------------------------------------------------------------- | ||
26 | temp1_input R Temperature channel 1 input (0..150 C) | ||
27 | temp2_input R Temperature channel 2 input (0..150 C) | ||
28 | temp1_fault R Temperature channel 1 diode fault | ||
29 | temp2_fault R Temperature channel 2 diode fault | ||
30 | temp1_max RW Set THERM temperature for input 1 | ||
31 | (in C, see datasheet) | ||
32 | temp2_max RW Set THERM temperature for input 2 | ||
33 | temp1_crit RW Set ALERT temperature for input 1 | ||
34 | temp2_crit RW Set ALERT temperature for input 2 | ||
35 | temp1_emergency RW Set OT temperature for input 1 | ||
36 | (in C, see datasheet) | ||
37 | temp2_emergency RW Set OT temperature for input 2 | ||
38 | pwm1 RW Fan 1 target duty cycle (0..255) | ||
39 | pwm2 RW Fan 2 target duty cycle (0..255) | ||
40 | fan1_input R TACH1 fan tachometer input (in RPM) | ||
41 | fan2_input R TACH2 fan tachometer input (in RPM) | ||
42 | fan1_fault R Fan 1 fault | ||
43 | fan2_fault R Fan 2 fault | ||
44 | temp1_max_alarm R Alarm on THERM temperature on channel 1 | ||
45 | temp2_max_alarm R Alarm on THERM temperature on channel 2 | ||
46 | temp1_crit_alarm R Alarm on ALERT temperature on channel 1 | ||
47 | temp2_crit_alarm R Alarm on ALERT temperature on channel 2 | ||
48 | temp1_emergency_alarm R Alarm on OT temperature on channel 1 | ||
49 | temp2_emergency_alarm R Alarm on OT temperature on channel 2 | ||
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus new file mode 100644 index 000000000000..f2d42e8bdf48 --- /dev/null +++ b/Documentation/hwmon/pmbus | |||
@@ -0,0 +1,215 @@ | |||
1 | Kernel driver pmbus | ||
2 | ==================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Ericsson BMR45X series | ||
6 | DC/DC Converter | ||
7 | Prefixes: 'bmr450', 'bmr451', 'bmr453', 'bmr454' | ||
8 | Addresses scanned: - | ||
9 | Datasheet: | ||
10 | http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146395 | ||
11 | * Linear Technology LTC2978 | ||
12 | Octal PMBus Power Supply Monitor and Controller | ||
13 | Prefix: 'ltc2978' | ||
14 | Addresses scanned: - | ||
15 | Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf | ||
16 | * Maxim MAX16064 | ||
17 | Quad Power-Supply Controller | ||
18 | Prefix: 'max16064' | ||
19 | Addresses scanned: - | ||
20 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf | ||
21 | * Maxim MAX34440 | ||
22 | PMBus 6-Channel Power-Supply Manager | ||
23 | Prefixes: 'max34440' | ||
24 | Addresses scanned: - | ||
25 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34440.pdf | ||
26 | * Maxim MAX34441 | ||
27 | PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller | ||
28 | Prefixes: 'max34441' | ||
29 | Addresses scanned: - | ||
30 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX34441.pdf | ||
31 | * Maxim MAX8688 | ||
32 | Digital Power-Supply Controller/Monitor | ||
33 | Prefix: 'max8688' | ||
34 | Addresses scanned: - | ||
35 | Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf | ||
36 | * Generic PMBus devices | ||
37 | Prefix: 'pmbus' | ||
38 | Addresses scanned: - | ||
39 | Datasheet: n.a. | ||
40 | |||
41 | Author: Guenter Roeck <guenter.roeck@ericsson.com> | ||
42 | |||
43 | |||
44 | Description | ||
45 | ----------- | ||
46 | |||
47 | This driver supports hardware montoring for various PMBus compliant devices. | ||
48 | It supports voltage, current, power, and temperature sensors as supported | ||
49 | by the device. | ||
50 | |||
51 | Each monitored channel has its own high and low limits, plus a critical | ||
52 | limit. | ||
53 | |||
54 | Fan support will be added in a later version of this driver. | ||
55 | |||
56 | |||
57 | Usage Notes | ||
58 | ----------- | ||
59 | |||
60 | This driver does not probe for PMBus devices, since there is no register | ||
61 | which can be safely used to identify the chip (The MFG_ID register is not | ||
62 | supported by all chips), and since there is no well defined address range for | ||
63 | PMBus devices. You will have to instantiate the devices explicitly. | ||
64 | |||
65 | Example: the following will load the driver for an LTC2978 at address 0x60 | ||
66 | on I2C bus #1: | ||
67 | $ modprobe pmbus | ||
68 | $ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device | ||
69 | |||
70 | |||
71 | Platform data support | ||
72 | --------------------- | ||
73 | |||
74 | Support for additional PMBus chips can be added by defining chip parameters in | ||
75 | a new chip specific driver file. For example, (untested) code to add support for | ||
76 | Emerson DS1200 power modules might look as follows. | ||
77 | |||
78 | static struct pmbus_driver_info ds1200_info = { | ||
79 | .pages = 1, | ||
80 | /* Note: All other sensors are in linear mode */ | ||
81 | .direct[PSC_VOLTAGE_OUT] = true, | ||
82 | .direct[PSC_TEMPERATURE] = true, | ||
83 | .direct[PSC_CURRENT_OUT] = true, | ||
84 | .m[PSC_VOLTAGE_IN] = 1, | ||
85 | .b[PSC_VOLTAGE_IN] = 0, | ||
86 | .R[PSC_VOLTAGE_IN] = 3, | ||
87 | .m[PSC_VOLTAGE_OUT] = 1, | ||
88 | .b[PSC_VOLTAGE_OUT] = 0, | ||
89 | .R[PSC_VOLTAGE_OUT] = 3, | ||
90 | .m[PSC_TEMPERATURE] = 1, | ||
91 | .b[PSC_TEMPERATURE] = 0, | ||
92 | .R[PSC_TEMPERATURE] = 3, | ||
93 | .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT | ||
94 | | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | ||
95 | | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | ||
96 | | PMBUS_HAVE_PIN | PMBUS_HAVE_POUT | ||
97 | | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP | ||
98 | | PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12, | ||
99 | }; | ||
100 | |||
101 | static int ds1200_probe(struct i2c_client *client, | ||
102 | const struct i2c_device_id *id) | ||
103 | { | ||
104 | return pmbus_do_probe(client, id, &ds1200_info); | ||
105 | } | ||
106 | |||
107 | static int ds1200_remove(struct i2c_client *client) | ||
108 | { | ||
109 | return pmbus_do_remove(client); | ||
110 | } | ||
111 | |||
112 | static const struct i2c_device_id ds1200_id[] = { | ||
113 | {"ds1200", 0}, | ||
114 | {} | ||
115 | }; | ||
116 | |||
117 | MODULE_DEVICE_TABLE(i2c, ds1200_id); | ||
118 | |||
119 | /* This is the driver that will be inserted */ | ||
120 | static struct i2c_driver ds1200_driver = { | ||
121 | .driver = { | ||
122 | .name = "ds1200", | ||
123 | }, | ||
124 | .probe = ds1200_probe, | ||
125 | .remove = ds1200_remove, | ||
126 | .id_table = ds1200_id, | ||
127 | }; | ||
128 | |||
129 | static int __init ds1200_init(void) | ||
130 | { | ||
131 | return i2c_add_driver(&ds1200_driver); | ||
132 | } | ||
133 | |||
134 | static void __exit ds1200_exit(void) | ||
135 | { | ||
136 | i2c_del_driver(&ds1200_driver); | ||
137 | } | ||
138 | |||
139 | |||
140 | Sysfs entries | ||
141 | ------------- | ||
142 | |||
143 | When probing the chip, the driver identifies which PMBus registers are | ||
144 | supported, and determines available sensors from this information. | ||
145 | Attribute files only exist if respective sensors are suported by the chip. | ||
146 | Labels are provided to inform the user about the sensor associated with | ||
147 | a given sysfs entry. | ||
148 | |||
149 | The following attributes are supported. Limits are read-write; all other | ||
150 | attributes are read-only. | ||
151 | |||
152 | inX_input Measured voltage. From READ_VIN or READ_VOUT register. | ||
153 | inX_min Minumum Voltage. | ||
154 | From VIN_UV_WARN_LIMIT or VOUT_UV_WARN_LIMIT register. | ||
155 | inX_max Maximum voltage. | ||
156 | From VIN_OV_WARN_LIMIT or VOUT_OV_WARN_LIMIT register. | ||
157 | inX_lcrit Critical minumum Voltage. | ||
158 | From VIN_UV_FAULT_LIMIT or VOUT_UV_FAULT_LIMIT register. | ||
159 | inX_crit Critical maximum voltage. | ||
160 | From VIN_OV_FAULT_LIMIT or VOUT_OV_FAULT_LIMIT register. | ||
161 | inX_min_alarm Voltage low alarm. From VOLTAGE_UV_WARNING status. | ||
162 | inX_max_alarm Voltage high alarm. From VOLTAGE_OV_WARNING status. | ||
163 | inX_lcrit_alarm Voltage critical low alarm. | ||
164 | From VOLTAGE_UV_FAULT status. | ||
165 | inX_crit_alarm Voltage critical high alarm. | ||
166 | From VOLTAGE_OV_FAULT status. | ||
167 | inX_label "vin", "vcap", or "voutY" | ||
168 | |||
169 | currX_input Measured current. From READ_IIN or READ_IOUT register. | ||
170 | currX_max Maximum current. | ||
171 | From IIN_OC_WARN_LIMIT or IOUT_OC_WARN_LIMIT register. | ||
172 | currX_lcrit Critical minumum output current. | ||
173 | From IOUT_UC_FAULT_LIMIT register. | ||
174 | currX_crit Critical maximum current. | ||
175 | From IIN_OC_FAULT_LIMIT or IOUT_OC_FAULT_LIMIT register. | ||
176 | currX_alarm Current high alarm. | ||
177 | From IIN_OC_WARNING or IOUT_OC_WARNING status. | ||
178 | currX_lcrit_alarm Output current critical low alarm. | ||
179 | From IOUT_UC_FAULT status. | ||
180 | currX_crit_alarm Current critical high alarm. | ||
181 | From IIN_OC_FAULT or IOUT_OC_FAULT status. | ||
182 | currX_label "iin" or "vinY" | ||
183 | |||
184 | powerX_input Measured power. From READ_PIN or READ_POUT register. | ||
185 | powerX_cap Output power cap. From POUT_MAX register. | ||
186 | powerX_max Power limit. From PIN_OP_WARN_LIMIT or | ||
187 | POUT_OP_WARN_LIMIT register. | ||
188 | powerX_crit Critical output power limit. | ||
189 | From POUT_OP_FAULT_LIMIT register. | ||
190 | powerX_alarm Power high alarm. | ||
191 | From PIN_OP_WARNING or POUT_OP_WARNING status. | ||
192 | powerX_crit_alarm Output power critical high alarm. | ||
193 | From POUT_OP_FAULT status. | ||
194 | powerX_label "pin" or "poutY" | ||
195 | |||
196 | tempX_input Measured tempererature. | ||
197 | From READ_TEMPERATURE_X register. | ||
198 | tempX_min Mimimum tempererature. From UT_WARN_LIMIT register. | ||
199 | tempX_max Maximum tempererature. From OT_WARN_LIMIT register. | ||
200 | tempX_lcrit Critical low tempererature. | ||
201 | From UT_FAULT_LIMIT register. | ||
202 | tempX_crit Critical high tempererature. | ||
203 | From OT_FAULT_LIMIT register. | ||
204 | tempX_min_alarm Chip temperature low alarm. Set by comparing | ||
205 | READ_TEMPERATURE_X with UT_WARN_LIMIT if | ||
206 | TEMP_UT_WARNING status is set. | ||
207 | tempX_max_alarm Chip temperature high alarm. Set by comparing | ||
208 | READ_TEMPERATURE_X with OT_WARN_LIMIT if | ||
209 | TEMP_OT_WARNING status is set. | ||
210 | tempX_lcrit_alarm Chip temperature critical low alarm. Set by comparing | ||
211 | READ_TEMPERATURE_X with UT_FAULT_LIMIT if | ||
212 | TEMP_UT_FAULT status is set. | ||
213 | tempX_crit_alarm Chip temperature critical high alarm. Set by comparing | ||
214 | READ_TEMPERATURE_X with OT_FAULT_LIMIT if | ||
215 | TEMP_OT_FAULT status is set. | ||
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface index c6559f153589..83a698773ade 100644 --- a/Documentation/hwmon/sysfs-interface +++ b/Documentation/hwmon/sysfs-interface | |||
@@ -187,6 +187,17 @@ fan[1-*]_div Fan divisor. | |||
187 | Note that this is actually an internal clock divisor, which | 187 | Note that this is actually an internal clock divisor, which |
188 | affects the measurable speed range, not the read value. | 188 | affects the measurable speed range, not the read value. |
189 | 189 | ||
190 | fan[1-*]_pulses Number of tachometer pulses per fan revolution. | ||
191 | Integer value, typically between 1 and 4. | ||
192 | RW | ||
193 | This value is a characteristic of the fan connected to the | ||
194 | device's input, so it has to be set in accordance with the fan | ||
195 | model. | ||
196 | Should only be created if the chip has a register to configure | ||
197 | the number of pulses. In the absence of such a register (and | ||
198 | thus attribute) the value assumed by all devices is 2 pulses | ||
199 | per fan revolution. | ||
200 | |||
190 | fan[1-*]_target | 201 | fan[1-*]_target |
191 | Desired fan speed | 202 | Desired fan speed |
192 | Unit: revolution/min (RPM) | 203 | Unit: revolution/min (RPM) |
diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf index 13d556112fc0..76ffef94ed75 100644 --- a/Documentation/hwmon/w83627ehf +++ b/Documentation/hwmon/w83627ehf | |||
@@ -5,13 +5,11 @@ Supported chips: | |||
5 | * Winbond W83627EHF/EHG (ISA access ONLY) | 5 | * Winbond W83627EHF/EHG (ISA access ONLY) |
6 | Prefix: 'w83627ehf' | 6 | Prefix: 'w83627ehf' |
7 | Addresses scanned: ISA address retrieved from Super I/O registers | 7 | Addresses scanned: ISA address retrieved from Super I/O registers |
8 | Datasheet: | 8 | Datasheet: not available |
9 | http://www.nuvoton.com.tw/NR/rdonlyres/A6A258F0-F0C9-4F97-81C0-C4D29E7E943E/0/W83627EHF.pdf | ||
10 | * Winbond W83627DHG | 9 | * Winbond W83627DHG |
11 | Prefix: 'w83627dhg' | 10 | Prefix: 'w83627dhg' |
12 | Addresses scanned: ISA address retrieved from Super I/O registers | 11 | Addresses scanned: ISA address retrieved from Super I/O registers |
13 | Datasheet: | 12 | Datasheet: not available |
14 | http://www.nuvoton.com.tw/NR/rdonlyres/7885623D-A487-4CF9-A47F-30C5F73D6FE6/0/W83627DHG.pdf | ||
15 | * Winbond W83627DHG-P | 13 | * Winbond W83627DHG-P |
16 | Prefix: 'w83627dhg' | 14 | Prefix: 'w83627dhg' |
17 | Addresses scanned: ISA address retrieved from Super I/O registers | 15 | Addresses scanned: ISA address retrieved from Super I/O registers |
@@ -24,6 +22,14 @@ Supported chips: | |||
24 | Prefix: 'w83667hg' | 22 | Prefix: 'w83667hg' |
25 | Addresses scanned: ISA address retrieved from Super I/O registers | 23 | Addresses scanned: ISA address retrieved from Super I/O registers |
26 | Datasheet: Available from Nuvoton upon request | 24 | Datasheet: Available from Nuvoton upon request |
25 | * Nuvoton NCT6775F/W83667HG-I | ||
26 | Prefix: 'nct6775' | ||
27 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
28 | Datasheet: Available from Nuvoton upon request | ||
29 | * Nuvoton NCT6776F | ||
30 | Prefix: 'nct6776' | ||
31 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
32 | Datasheet: Available from Nuvoton upon request | ||
27 | 33 | ||
28 | Authors: | 34 | Authors: |
29 | Jean Delvare <khali@linux-fr.org> | 35 | Jean Delvare <khali@linux-fr.org> |
@@ -36,19 +42,28 @@ Description | |||
36 | ----------- | 42 | ----------- |
37 | 43 | ||
38 | This driver implements support for the Winbond W83627EHF, W83627EHG, | 44 | This driver implements support for the Winbond W83627EHF, W83627EHG, |
39 | W83627DHG, W83627DHG-P, W83667HG and W83667HG-B super I/O chips. | 45 | W83627DHG, W83627DHG-P, W83667HG, W83667HG-B, W83667HG-I (NCT6775F), |
40 | We will refer to them collectively as Winbond chips. | 46 | and NCT6776F super I/O chips. We will refer to them collectively as |
41 | 47 | Winbond chips. | |
42 | The chips implement three temperature sensors, five fan rotation | 48 | |
43 | speed sensors, ten analog voltage sensors (only nine for the 627DHG), one | 49 | The chips implement three temperature sensors (up to four for 667HG-B, and nine |
44 | VID (6 pins for the 627EHF/EHG, 8 pins for the 627DHG and 667HG), alarms | 50 | for NCT6775F and NCT6776F), five fan rotation speed sensors, ten analog voltage |
45 | with beep warnings (control unimplemented), and some automatic fan | 51 | sensors (only nine for the 627DHG), one VID (6 pins for the 627EHF/EHG, 8 pins |
46 | regulation strategies (plus manual fan control mode). | 52 | for the 627DHG and 667HG), alarms with beep warnings (control unimplemented), |
53 | and some automatic fan regulation strategies (plus manual fan control mode). | ||
54 | |||
55 | The temperature sensor sources on W82677HG-B, NCT6775F, and NCT6776F are | ||
56 | configurable. temp4 and higher attributes are only reported if its temperature | ||
57 | source differs from the temperature sources of the already reported temperature | ||
58 | sensors. The configured source for each of the temperature sensors is provided | ||
59 | in tempX_label. | ||
47 | 60 | ||
48 | Temperatures are measured in degrees Celsius and measurement resolution is 1 | 61 | Temperatures are measured in degrees Celsius and measurement resolution is 1 |
49 | degC for temp1 and 0.5 degC for temp2 and temp3. An alarm is triggered when | 62 | degC for temp1 and and 0.5 degC for temp2 and temp3. For temp4 and higher, |
50 | the temperature gets higher than high limit; it stays on until the temperature | 63 | resolution is 1 degC for W83667HG-B and 0.0 degC for NCT6775F and NCT6776F. |
51 | falls below the hysteresis value. | 64 | An alarm is triggered when the temperature gets higher than high limit; |
65 | it stays on until the temperature falls below the hysteresis value. | ||
66 | Alarms are only supported for temp1, temp2, and temp3. | ||
52 | 67 | ||
53 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is | 68 | Fan rotation speeds are reported in RPM (rotations per minute). An alarm is |
54 | triggered if the rotation speed has dropped below a programmable limit. Fan | 69 | triggered if the rotation speed has dropped below a programmable limit. Fan |
@@ -80,7 +95,8 @@ prog -> pwm4 (not on 667HG and 667HG-B; the programmable setting is not | |||
80 | 95 | ||
81 | name - this is a standard hwmon device entry. For the W83627EHF and W83627EHG, | 96 | name - this is a standard hwmon device entry. For the W83627EHF and W83627EHG, |
82 | it is set to "w83627ehf", for the W83627DHG it is set to "w83627dhg", | 97 | it is set to "w83627ehf", for the W83627DHG it is set to "w83627dhg", |
83 | and for the W83667HG it is set to "w83667hg". | 98 | for the W83667HG and W83667HG-B it is set to "w83667hg", for NCT6775F it |
99 | is set to "nct6775", and for NCT6776F it is set to "nct6776". | ||
84 | 100 | ||
85 | pwm[1-4] - this file stores PWM duty cycle or DC value (fan speed) in range: | 101 | pwm[1-4] - this file stores PWM duty cycle or DC value (fan speed) in range: |
86 | 0 (stop) to 255 (full) | 102 | 0 (stop) to 255 (full) |
@@ -90,6 +106,18 @@ pwm[1-4]_enable - this file controls mode of fan/temperature control: | |||
90 | * 2 "Thermal Cruise" mode | 106 | * 2 "Thermal Cruise" mode |
91 | * 3 "Fan Speed Cruise" mode | 107 | * 3 "Fan Speed Cruise" mode |
92 | * 4 "Smart Fan III" mode | 108 | * 4 "Smart Fan III" mode |
109 | * 5 "Smart Fan IV" mode | ||
110 | |||
111 | SmartFan III mode is not supported on NCT6776F. | ||
112 | |||
113 | SmartFan IV mode is configurable only if it was configured at system | ||
114 | startup, and is only supported for W83677HG-B, NCT6775F, and NCT6776F. | ||
115 | SmartFan IV operational parameters can not be configured at this time, | ||
116 | and the various pwm attributes are not used in SmartFan IV mode. | ||
117 | The attributes can be written to, which is useful if you plan to | ||
118 | configure the system for a different pwm mode. However, the information | ||
119 | returned when reading pwm attributes is unrelated to SmartFan IV | ||
120 | operation. | ||
93 | 121 | ||
94 | pwm[1-4]_mode - controls if output is PWM or DC level | 122 | pwm[1-4]_mode - controls if output is PWM or DC level |
95 | * 0 DC output (0 - 12v) | 123 | * 0 DC output (0 - 12v) |
diff --git a/Documentation/hwspinlock.txt b/Documentation/hwspinlock.txt new file mode 100644 index 000000000000..7dcd1a4e726c --- /dev/null +++ b/Documentation/hwspinlock.txt | |||
@@ -0,0 +1,293 @@ | |||
1 | Hardware Spinlock Framework | ||
2 | |||
3 | 1. Introduction | ||
4 | |||
5 | Hardware spinlock modules provide hardware assistance for synchronization | ||
6 | and mutual exclusion between heterogeneous processors and those not operating | ||
7 | under a single, shared operating system. | ||
8 | |||
9 | For example, OMAP4 has dual Cortex-A9, dual Cortex-M3 and a C64x+ DSP, | ||
10 | each of which is running a different Operating System (the master, A9, | ||
11 | is usually running Linux and the slave processors, the M3 and the DSP, | ||
12 | are running some flavor of RTOS). | ||
13 | |||
14 | A generic hwspinlock framework allows platform-independent drivers to use | ||
15 | the hwspinlock device in order to access data structures that are shared | ||
16 | between remote processors, that otherwise have no alternative mechanism | ||
17 | to accomplish synchronization and mutual exclusion operations. | ||
18 | |||
19 | This is necessary, for example, for Inter-processor communications: | ||
20 | on OMAP4, cpu-intensive multimedia tasks are offloaded by the host to the | ||
21 | remote M3 and/or C64x+ slave processors (by an IPC subsystem called Syslink). | ||
22 | |||
23 | To achieve fast message-based communications, a minimal kernel support | ||
24 | is needed to deliver messages arriving from a remote processor to the | ||
25 | appropriate user process. | ||
26 | |||
27 | This communication is based on simple data structures that is shared between | ||
28 | the remote processors, and access to it is synchronized using the hwspinlock | ||
29 | module (remote processor directly places new messages in this shared data | ||
30 | structure). | ||
31 | |||
32 | A common hwspinlock interface makes it possible to have generic, platform- | ||
33 | independent, drivers. | ||
34 | |||
35 | 2. User API | ||
36 | |||
37 | struct hwspinlock *hwspin_lock_request(void); | ||
38 | - dynamically assign an hwspinlock and return its address, or NULL | ||
39 | in case an unused hwspinlock isn't available. Users of this | ||
40 | API will usually want to communicate the lock's id to the remote core | ||
41 | before it can be used to achieve synchronization. | ||
42 | Can be called from an atomic context (this function will not sleep) but | ||
43 | not from within interrupt context. | ||
44 | |||
45 | struct hwspinlock *hwspin_lock_request_specific(unsigned int id); | ||
46 | - assign a specific hwspinlock id and return its address, or NULL | ||
47 | if that hwspinlock is already in use. Usually board code will | ||
48 | be calling this function in order to reserve specific hwspinlock | ||
49 | ids for predefined purposes. | ||
50 | Can be called from an atomic context (this function will not sleep) but | ||
51 | not from within interrupt context. | ||
52 | |||
53 | int hwspin_lock_free(struct hwspinlock *hwlock); | ||
54 | - free a previously-assigned hwspinlock; returns 0 on success, or an | ||
55 | appropriate error code on failure (e.g. -EINVAL if the hwspinlock | ||
56 | is already free). | ||
57 | Can be called from an atomic context (this function will not sleep) but | ||
58 | not from within interrupt context. | ||
59 | |||
60 | int hwspin_lock_timeout(struct hwspinlock *hwlock, unsigned int timeout); | ||
61 | - lock a previously-assigned hwspinlock with a timeout limit (specified in | ||
62 | msecs). If the hwspinlock is already taken, the function will busy loop | ||
63 | waiting for it to be released, but give up when the timeout elapses. | ||
64 | Upon a successful return from this function, preemption is disabled so | ||
65 | the caller must not sleep, and is advised to release the hwspinlock as | ||
66 | soon as possible, in order to minimize remote cores polling on the | ||
67 | hardware interconnect. | ||
68 | Returns 0 when successful and an appropriate error code otherwise (most | ||
69 | notably -ETIMEDOUT if the hwspinlock is still busy after timeout msecs). | ||
70 | The function will never sleep. | ||
71 | |||
72 | int hwspin_lock_timeout_irq(struct hwspinlock *hwlock, unsigned int timeout); | ||
73 | - lock a previously-assigned hwspinlock with a timeout limit (specified in | ||
74 | msecs). If the hwspinlock is already taken, the function will busy loop | ||
75 | waiting for it to be released, but give up when the timeout elapses. | ||
76 | Upon a successful return from this function, preemption and the local | ||
77 | interrupts are disabled, so the caller must not sleep, and is advised to | ||
78 | release the hwspinlock as soon as possible. | ||
79 | Returns 0 when successful and an appropriate error code otherwise (most | ||
80 | notably -ETIMEDOUT if the hwspinlock is still busy after timeout msecs). | ||
81 | The function will never sleep. | ||
82 | |||
83 | int hwspin_lock_timeout_irqsave(struct hwspinlock *hwlock, unsigned int to, | ||
84 | unsigned long *flags); | ||
85 | - lock a previously-assigned hwspinlock with a timeout limit (specified in | ||
86 | msecs). If the hwspinlock is already taken, the function will busy loop | ||
87 | waiting for it to be released, but give up when the timeout elapses. | ||
88 | Upon a successful return from this function, preemption is disabled, | ||
89 | local interrupts are disabled and their previous state is saved at the | ||
90 | given flags placeholder. The caller must not sleep, and is advised to | ||
91 | release the hwspinlock as soon as possible. | ||
92 | Returns 0 when successful and an appropriate error code otherwise (most | ||
93 | notably -ETIMEDOUT if the hwspinlock is still busy after timeout msecs). | ||
94 | The function will never sleep. | ||
95 | |||
96 | int hwspin_trylock(struct hwspinlock *hwlock); | ||
97 | - attempt to lock a previously-assigned hwspinlock, but immediately fail if | ||
98 | it is already taken. | ||
99 | Upon a successful return from this function, preemption is disabled so | ||
100 | caller must not sleep, and is advised to release the hwspinlock as soon as | ||
101 | possible, in order to minimize remote cores polling on the hardware | ||
102 | interconnect. | ||
103 | Returns 0 on success and an appropriate error code otherwise (most | ||
104 | notably -EBUSY if the hwspinlock was already taken). | ||
105 | The function will never sleep. | ||
106 | |||
107 | int hwspin_trylock_irq(struct hwspinlock *hwlock); | ||
108 | - attempt to lock a previously-assigned hwspinlock, but immediately fail if | ||
109 | it is already taken. | ||
110 | Upon a successful return from this function, preemption and the local | ||
111 | interrupts are disabled so caller must not sleep, and is advised to | ||
112 | release the hwspinlock as soon as possible. | ||
113 | Returns 0 on success and an appropriate error code otherwise (most | ||
114 | notably -EBUSY if the hwspinlock was already taken). | ||
115 | The function will never sleep. | ||
116 | |||
117 | int hwspin_trylock_irqsave(struct hwspinlock *hwlock, unsigned long *flags); | ||
118 | - attempt to lock a previously-assigned hwspinlock, but immediately fail if | ||
119 | it is already taken. | ||
120 | Upon a successful return from this function, preemption is disabled, | ||
121 | the local interrupts are disabled and their previous state is saved | ||
122 | at the given flags placeholder. The caller must not sleep, and is advised | ||
123 | to release the hwspinlock as soon as possible. | ||
124 | Returns 0 on success and an appropriate error code otherwise (most | ||
125 | notably -EBUSY if the hwspinlock was already taken). | ||
126 | The function will never sleep. | ||
127 | |||
128 | void hwspin_unlock(struct hwspinlock *hwlock); | ||
129 | - unlock a previously-locked hwspinlock. Always succeed, and can be called | ||
130 | from any context (the function never sleeps). Note: code should _never_ | ||
131 | unlock an hwspinlock which is already unlocked (there is no protection | ||
132 | against this). | ||
133 | |||
134 | void hwspin_unlock_irq(struct hwspinlock *hwlock); | ||
135 | - unlock a previously-locked hwspinlock and enable local interrupts. | ||
136 | The caller should _never_ unlock an hwspinlock which is already unlocked. | ||
137 | Doing so is considered a bug (there is no protection against this). | ||
138 | Upon a successful return from this function, preemption and local | ||
139 | interrupts are enabled. This function will never sleep. | ||
140 | |||
141 | void | ||
142 | hwspin_unlock_irqrestore(struct hwspinlock *hwlock, unsigned long *flags); | ||
143 | - unlock a previously-locked hwspinlock. | ||
144 | The caller should _never_ unlock an hwspinlock which is already unlocked. | ||
145 | Doing so is considered a bug (there is no protection against this). | ||
146 | Upon a successful return from this function, preemption is reenabled, | ||
147 | and the state of the local interrupts is restored to the state saved at | ||
148 | the given flags. This function will never sleep. | ||
149 | |||
150 | int hwspin_lock_get_id(struct hwspinlock *hwlock); | ||
151 | - retrieve id number of a given hwspinlock. This is needed when an | ||
152 | hwspinlock is dynamically assigned: before it can be used to achieve | ||
153 | mutual exclusion with a remote cpu, the id number should be communicated | ||
154 | to the remote task with which we want to synchronize. | ||
155 | Returns the hwspinlock id number, or -EINVAL if hwlock is null. | ||
156 | |||
157 | 3. Typical usage | ||
158 | |||
159 | #include <linux/hwspinlock.h> | ||
160 | #include <linux/err.h> | ||
161 | |||
162 | int hwspinlock_example1(void) | ||
163 | { | ||
164 | struct hwspinlock *hwlock; | ||
165 | int ret; | ||
166 | |||
167 | /* dynamically assign a hwspinlock */ | ||
168 | hwlock = hwspin_lock_request(); | ||
169 | if (!hwlock) | ||
170 | ... | ||
171 | |||
172 | id = hwspin_lock_get_id(hwlock); | ||
173 | /* probably need to communicate id to a remote processor now */ | ||
174 | |||
175 | /* take the lock, spin for 1 sec if it's already taken */ | ||
176 | ret = hwspin_lock_timeout(hwlock, 1000); | ||
177 | if (ret) | ||
178 | ... | ||
179 | |||
180 | /* | ||
181 | * we took the lock, do our thing now, but do NOT sleep | ||
182 | */ | ||
183 | |||
184 | /* release the lock */ | ||
185 | hwspin_unlock(hwlock); | ||
186 | |||
187 | /* free the lock */ | ||
188 | ret = hwspin_lock_free(hwlock); | ||
189 | if (ret) | ||
190 | ... | ||
191 | |||
192 | return ret; | ||
193 | } | ||
194 | |||
195 | int hwspinlock_example2(void) | ||
196 | { | ||
197 | struct hwspinlock *hwlock; | ||
198 | int ret; | ||
199 | |||
200 | /* | ||
201 | * assign a specific hwspinlock id - this should be called early | ||
202 | * by board init code. | ||
203 | */ | ||
204 | hwlock = hwspin_lock_request_specific(PREDEFINED_LOCK_ID); | ||
205 | if (!hwlock) | ||
206 | ... | ||
207 | |||
208 | /* try to take it, but don't spin on it */ | ||
209 | ret = hwspin_trylock(hwlock); | ||
210 | if (!ret) { | ||
211 | pr_info("lock is already taken\n"); | ||
212 | return -EBUSY; | ||
213 | } | ||
214 | |||
215 | /* | ||
216 | * we took the lock, do our thing now, but do NOT sleep | ||
217 | */ | ||
218 | |||
219 | /* release the lock */ | ||
220 | hwspin_unlock(hwlock); | ||
221 | |||
222 | /* free the lock */ | ||
223 | ret = hwspin_lock_free(hwlock); | ||
224 | if (ret) | ||
225 | ... | ||
226 | |||
227 | return ret; | ||
228 | } | ||
229 | |||
230 | |||
231 | 4. API for implementors | ||
232 | |||
233 | int hwspin_lock_register(struct hwspinlock *hwlock); | ||
234 | - to be called from the underlying platform-specific implementation, in | ||
235 | order to register a new hwspinlock instance. Can be called from an atomic | ||
236 | context (this function will not sleep) but not from within interrupt | ||
237 | context. Returns 0 on success, or appropriate error code on failure. | ||
238 | |||
239 | struct hwspinlock *hwspin_lock_unregister(unsigned int id); | ||
240 | - to be called from the underlying vendor-specific implementation, in order | ||
241 | to unregister an existing (and unused) hwspinlock instance. | ||
242 | Can be called from an atomic context (will not sleep) but not from | ||
243 | within interrupt context. | ||
244 | Returns the address of hwspinlock on success, or NULL on error (e.g. | ||
245 | if the hwspinlock is sill in use). | ||
246 | |||
247 | 5. struct hwspinlock | ||
248 | |||
249 | This struct represents an hwspinlock instance. It is registered by the | ||
250 | underlying hwspinlock implementation using the hwspin_lock_register() API. | ||
251 | |||
252 | /** | ||
253 | * struct hwspinlock - vendor-specific hwspinlock implementation | ||
254 | * | ||
255 | * @dev: underlying device, will be used with runtime PM api | ||
256 | * @ops: vendor-specific hwspinlock handlers | ||
257 | * @id: a global, unique, system-wide, index of the lock. | ||
258 | * @lock: initialized and used by hwspinlock core | ||
259 | * @owner: underlying implementation module, used to maintain module ref count | ||
260 | */ | ||
261 | struct hwspinlock { | ||
262 | struct device *dev; | ||
263 | const struct hwspinlock_ops *ops; | ||
264 | int id; | ||
265 | spinlock_t lock; | ||
266 | struct module *owner; | ||
267 | }; | ||
268 | |||
269 | The underlying implementation is responsible to assign the dev, ops, id and | ||
270 | owner members. The lock member, OTOH, is initialized and used by the hwspinlock | ||
271 | core. | ||
272 | |||
273 | 6. Implementation callbacks | ||
274 | |||
275 | There are three possible callbacks defined in 'struct hwspinlock_ops': | ||
276 | |||
277 | struct hwspinlock_ops { | ||
278 | int (*trylock)(struct hwspinlock *lock); | ||
279 | void (*unlock)(struct hwspinlock *lock); | ||
280 | void (*relax)(struct hwspinlock *lock); | ||
281 | }; | ||
282 | |||
283 | The first two callbacks are mandatory: | ||
284 | |||
285 | The ->trylock() callback should make a single attempt to take the lock, and | ||
286 | return 0 on failure and 1 on success. This callback may _not_ sleep. | ||
287 | |||
288 | The ->unlock() callback releases the lock. It always succeed, and it, too, | ||
289 | may _not_ sleep. | ||
290 | |||
291 | The ->relax() callback is optional. It is called by hwspinlock core while | ||
292 | spinning on a lock, and can be used by the underlying implementation to force | ||
293 | a delay between two successive invocations of ->trylock(). It may _not_ sleep. | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index ac293e955308..e68543f767d5 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -133,6 +133,7 @@ Code Seq#(hex) Include File Comments | |||
133 | 'H' C0-DF net/bluetooth/hidp/hidp.h conflict! | 133 | 'H' C0-DF net/bluetooth/hidp/hidp.h conflict! |
134 | 'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict! | 134 | 'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict! |
135 | 'H' C0-DF net/bluetooth/bnep/bnep.h conflict! | 135 | 'H' C0-DF net/bluetooth/bnep/bnep.h conflict! |
136 | 'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net> | ||
136 | 'I' all linux/isdn.h conflict! | 137 | 'I' all linux/isdn.h conflict! |
137 | 'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict! | 138 | 'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict! |
138 | 'I' 40-4F linux/mISDNif.h conflict! | 139 | 'I' 40-4F linux/mISDNif.h conflict! |
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt index 4a990317b84a..8f63b224ab09 100644 --- a/Documentation/kbuild/kbuild.txt +++ b/Documentation/kbuild/kbuild.txt | |||
@@ -146,7 +146,7 @@ INSTALL_MOD_STRIP | |||
146 | INSTALL_MOD_STRIP, if defined, will cause modules to be | 146 | INSTALL_MOD_STRIP, if defined, will cause modules to be |
147 | stripped after they are installed. If INSTALL_MOD_STRIP is '1', then | 147 | stripped after they are installed. If INSTALL_MOD_STRIP is '1', then |
148 | the default option --strip-debug will be used. Otherwise, | 148 | the default option --strip-debug will be used. Otherwise, |
149 | INSTALL_MOD_STRIP will used as the options to the strip command. | 149 | INSTALL_MOD_STRIP value will be used as the options to the strip command. |
150 | 150 | ||
151 | INSTALL_FW_PATH | 151 | INSTALL_FW_PATH |
152 | -------------------------------------------------- | 152 | -------------------------------------------------- |
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index 86e3cd0d26a0..5d145bb443c0 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
@@ -1325,7 +1325,8 @@ The top Makefile exports the following variables: | |||
1325 | If this variable is specified, will cause modules to be stripped | 1325 | If this variable is specified, will cause modules to be stripped |
1326 | after they are installed. If INSTALL_MOD_STRIP is '1', then the | 1326 | after they are installed. If INSTALL_MOD_STRIP is '1', then the |
1327 | default option --strip-debug will be used. Otherwise, | 1327 | default option --strip-debug will be used. Otherwise, |
1328 | INSTALL_MOD_STRIP will used as the option(s) to the strip command. | 1328 | INSTALL_MOD_STRIP value will be used as the option(s) to the strip |
1329 | command. | ||
1329 | 1330 | ||
1330 | 1331 | ||
1331 | === 9 Makefile language | 1332 | === 9 Makefile language |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 89835a4766a6..d18a9e12152a 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -144,6 +144,11 @@ a fixed number of characters. This limit depends on the architecture | |||
144 | and is between 256 and 4096 characters. It is defined in the file | 144 | and is between 256 and 4096 characters. It is defined in the file |
145 | ./include/asm/setup.h as COMMAND_LINE_SIZE. | 145 | ./include/asm/setup.h as COMMAND_LINE_SIZE. |
146 | 146 | ||
147 | Finally, the [KMG] suffix is commonly described after a number of kernel | ||
148 | parameter values. These 'K', 'M', and 'G' letters represent the _binary_ | ||
149 | multipliers 'Kilo', 'Mega', and 'Giga', equalling 2^10, 2^20, and 2^30 | ||
150 | bytes respectively. Such letter suffixes can also be entirely omitted. | ||
151 | |||
147 | 152 | ||
148 | acpi= [HW,ACPI,X86] | 153 | acpi= [HW,ACPI,X86] |
149 | Advanced Configuration and Power Interface | 154 | Advanced Configuration and Power Interface |
@@ -545,16 +550,20 @@ and is between 256 and 4096 characters. It is defined in the file | |||
545 | Format: | 550 | Format: |
546 | <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] | 551 | <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] |
547 | 552 | ||
548 | crashkernel=nn[KMG]@ss[KMG] | 553 | crashkernel=size[KMG][@offset[KMG]] |
549 | [KNL] Reserve a chunk of physical memory to | 554 | [KNL] Using kexec, Linux can switch to a 'crash kernel' |
550 | hold a kernel to switch to with kexec on panic. | 555 | upon panic. This parameter reserves the physical |
556 | memory region [offset, offset + size] for that kernel | ||
557 | image. If '@offset' is omitted, then a suitable offset | ||
558 | is selected automatically. Check | ||
559 | Documentation/kdump/kdump.txt for further details. | ||
551 | 560 | ||
552 | crashkernel=range1:size1[,range2:size2,...][@offset] | 561 | crashkernel=range1:size1[,range2:size2,...][@offset] |
553 | [KNL] Same as above, but depends on the memory | 562 | [KNL] Same as above, but depends on the memory |
554 | in the running system. The syntax of range is | 563 | in the running system. The syntax of range is |
555 | start-[end] where start and end are both | 564 | start-[end] where start and end are both |
556 | a memory unit (amount[KMG]). See also | 565 | a memory unit (amount[KMG]). See also |
557 | Documentation/kdump/kdump.txt for a example. | 566 | Documentation/kdump/kdump.txt for an example. |
558 | 567 | ||
559 | cs89x0_dma= [HW,NET] | 568 | cs89x0_dma= [HW,NET] |
560 | Format: <dma> | 569 | Format: <dma> |
@@ -617,6 +626,10 @@ and is between 256 and 4096 characters. It is defined in the file | |||
617 | disable= [IPV6] | 626 | disable= [IPV6] |
618 | See Documentation/networking/ipv6.txt. | 627 | See Documentation/networking/ipv6.txt. |
619 | 628 | ||
629 | disable_ddw [PPC/PSERIES] | ||
630 | Disable Dynamic DMA Window support. Use this if | ||
631 | to workaround buggy firmware. | ||
632 | |||
620 | disable_ipv6= [IPV6] | 633 | disable_ipv6= [IPV6] |
621 | See Documentation/networking/ipv6.txt. | 634 | See Documentation/networking/ipv6.txt. |
622 | 635 | ||
@@ -1262,10 +1275,9 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1262 | 6 (KERN_INFO) informational | 1275 | 6 (KERN_INFO) informational |
1263 | 7 (KERN_DEBUG) debug-level messages | 1276 | 7 (KERN_DEBUG) debug-level messages |
1264 | 1277 | ||
1265 | log_buf_len=n Sets the size of the printk ring buffer, in bytes. | 1278 | log_buf_len=n[KMG] Sets the size of the printk ring buffer, |
1266 | Format: { n | nk | nM } | 1279 | in bytes. n must be a power of two. The default |
1267 | n must be a power of two. The default size | 1280 | size is set in the kernel config file. |
1268 | is set in the kernel config file. | ||
1269 | 1281 | ||
1270 | logo.nologo [FB] Disables display of the built-in Linux logo. | 1282 | logo.nologo [FB] Disables display of the built-in Linux logo. |
1271 | This may be used to provide more screen space for | 1283 | This may be used to provide more screen space for |
@@ -1572,6 +1584,14 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1572 | of returning the full 64-bit number. | 1584 | of returning the full 64-bit number. |
1573 | The default is to return 64-bit inode numbers. | 1585 | The default is to return 64-bit inode numbers. |
1574 | 1586 | ||
1587 | nfs.nfs4_disable_idmapping= | ||
1588 | [NFSv4] When set, this option disables the NFSv4 | ||
1589 | idmapper on the client, but only if the mount | ||
1590 | is using the 'sec=sys' security flavour. This may | ||
1591 | make migration from legacy NFSv2/v3 systems easier | ||
1592 | provided that the server has the appropriate support. | ||
1593 | The default is to always enable NFSv4 idmapping. | ||
1594 | |||
1575 | nmi_debug= [KNL,AVR32,SH] Specify one or more actions to take | 1595 | nmi_debug= [KNL,AVR32,SH] Specify one or more actions to take |
1576 | when a NMI is triggered. | 1596 | when a NMI is triggered. |
1577 | Format: [state][,regs][,debounce][,die] | 1597 | Format: [state][,regs][,debounce][,die] |
@@ -2436,6 +2456,10 @@ and is between 256 and 4096 characters. It is defined in the file | |||
2436 | <deci-seconds>: poll all this frequency | 2456 | <deci-seconds>: poll all this frequency |
2437 | 0: no polling (default) | 2457 | 0: no polling (default) |
2438 | 2458 | ||
2459 | threadirqs [KNL] | ||
2460 | Force threading of all interrupt handlers except those | ||
2461 | marked explicitely IRQF_NO_THREAD. | ||
2462 | |||
2439 | topology= [S390] | 2463 | topology= [S390] |
2440 | Format: {off | on} | 2464 | Format: {off | on} |
2441 | Specify if the kernel should make use of the cpu | 2465 | Specify if the kernel should make use of the cpu |
diff --git a/Documentation/keys-request-key.txt b/Documentation/keys-request-key.txt index 09b55e461740..69686ad12c66 100644 --- a/Documentation/keys-request-key.txt +++ b/Documentation/keys-request-key.txt | |||
@@ -127,14 +127,15 @@ This is because process A's keyrings can't simply be attached to | |||
127 | of them, and (b) it requires the same UID/GID/Groups all the way through. | 127 | of them, and (b) it requires the same UID/GID/Groups all the way through. |
128 | 128 | ||
129 | 129 | ||
130 | ====================== | 130 | ==================================== |
131 | NEGATIVE INSTANTIATION | 131 | NEGATIVE INSTANTIATION AND REJECTION |
132 | ====================== | 132 | ==================================== |
133 | 133 | ||
134 | Rather than instantiating a key, it is possible for the possessor of an | 134 | Rather than instantiating a key, it is possible for the possessor of an |
135 | authorisation key to negatively instantiate a key that's under construction. | 135 | authorisation key to negatively instantiate a key that's under construction. |
136 | This is a short duration placeholder that causes any attempt at re-requesting | 136 | This is a short duration placeholder that causes any attempt at re-requesting |
137 | the key whilst it exists to fail with error ENOKEY. | 137 | the key whilst it exists to fail with error ENOKEY if negated or the specified |
138 | error if rejected. | ||
138 | 139 | ||
139 | This is provided to prevent excessive repeated spawning of /sbin/request-key | 140 | This is provided to prevent excessive repeated spawning of /sbin/request-key |
140 | processes for a key that will never be obtainable. | 141 | processes for a key that will never be obtainable. |
diff --git a/Documentation/keys.txt b/Documentation/keys.txt index e4dbbdb1bd96..6523a9e6f293 100644 --- a/Documentation/keys.txt +++ b/Documentation/keys.txt | |||
@@ -637,6 +637,9 @@ The keyctl syscall functions are: | |||
637 | long keyctl(KEYCTL_INSTANTIATE, key_serial_t key, | 637 | long keyctl(KEYCTL_INSTANTIATE, key_serial_t key, |
638 | const void *payload, size_t plen, | 638 | const void *payload, size_t plen, |
639 | key_serial_t keyring); | 639 | key_serial_t keyring); |
640 | long keyctl(KEYCTL_INSTANTIATE_IOV, key_serial_t key, | ||
641 | const struct iovec *payload_iov, unsigned ioc, | ||
642 | key_serial_t keyring); | ||
640 | 643 | ||
641 | If the kernel calls back to userspace to complete the instantiation of a | 644 | If the kernel calls back to userspace to complete the instantiation of a |
642 | key, userspace should use this call to supply data for the key before the | 645 | key, userspace should use this call to supply data for the key before the |
@@ -652,11 +655,16 @@ The keyctl syscall functions are: | |||
652 | 655 | ||
653 | The payload and plen arguments describe the payload data as for add_key(). | 656 | The payload and plen arguments describe the payload data as for add_key(). |
654 | 657 | ||
658 | The payload_iov and ioc arguments describe the payload data in an iovec | ||
659 | array instead of a single buffer. | ||
660 | |||
655 | 661 | ||
656 | (*) Negatively instantiate a partially constructed key. | 662 | (*) Negatively instantiate a partially constructed key. |
657 | 663 | ||
658 | long keyctl(KEYCTL_NEGATE, key_serial_t key, | 664 | long keyctl(KEYCTL_NEGATE, key_serial_t key, |
659 | unsigned timeout, key_serial_t keyring); | 665 | unsigned timeout, key_serial_t keyring); |
666 | long keyctl(KEYCTL_REJECT, key_serial_t key, | ||
667 | unsigned timeout, unsigned error, key_serial_t keyring); | ||
660 | 668 | ||
661 | If the kernel calls back to userspace to complete the instantiation of a | 669 | If the kernel calls back to userspace to complete the instantiation of a |
662 | key, userspace should use this call mark the key as negative before the | 670 | key, userspace should use this call mark the key as negative before the |
@@ -669,6 +677,10 @@ The keyctl syscall functions are: | |||
669 | that keyring, however all the constraints applying in KEYCTL_LINK apply in | 677 | that keyring, however all the constraints applying in KEYCTL_LINK apply in |
670 | this case too. | 678 | this case too. |
671 | 679 | ||
680 | If the key is rejected, future searches for it will return the specified | ||
681 | error code until the rejected key expires. Negating the key is the same | ||
682 | as rejecting the key with ENOKEY as the error code. | ||
683 | |||
672 | 684 | ||
673 | (*) Set the default request-key destination keyring. | 685 | (*) Set the default request-key destination keyring. |
674 | 686 | ||
@@ -1062,6 +1074,13 @@ The structure has a number of fields, some of which are mandatory: | |||
1062 | viable. | 1074 | viable. |
1063 | 1075 | ||
1064 | 1076 | ||
1077 | (*) int (*vet_description)(const char *description); | ||
1078 | |||
1079 | This optional method is called to vet a key description. If the key type | ||
1080 | doesn't approve of the key description, it may return an error, otherwise | ||
1081 | it should return 0. | ||
1082 | |||
1083 | |||
1065 | (*) int (*instantiate)(struct key *key, const void *data, size_t datalen); | 1084 | (*) int (*instantiate)(struct key *key, const void *data, size_t datalen); |
1066 | 1085 | ||
1067 | This method is called to attach a payload to a key during construction. | 1086 | This method is called to attach a payload to a key during construction. |
@@ -1231,10 +1250,11 @@ hand the request off to (perhaps a path held in placed in another key by, for | |||
1231 | example, the KDE desktop manager). | 1250 | example, the KDE desktop manager). |
1232 | 1251 | ||
1233 | The program (or whatever it calls) should finish construction of the key by | 1252 | The program (or whatever it calls) should finish construction of the key by |
1234 | calling KEYCTL_INSTANTIATE, which also permits it to cache the key in one of | 1253 | calling KEYCTL_INSTANTIATE or KEYCTL_INSTANTIATE_IOV, which also permits it to |
1235 | the keyrings (probably the session ring) before returning. Alternatively, the | 1254 | cache the key in one of the keyrings (probably the session ring) before |
1236 | key can be marked as negative with KEYCTL_NEGATE; this also permits the key to | 1255 | returning. Alternatively, the key can be marked as negative with KEYCTL_NEGATE |
1237 | be cached in one of the keyrings. | 1256 | or KEYCTL_REJECT; this also permits the key to be cached in one of the |
1257 | keyrings. | ||
1238 | 1258 | ||
1239 | If it returns with the key remaining in the unconstructed state, the key will | 1259 | If it returns with the key remaining in the unconstructed state, the key will |
1240 | be marked as being negative, it will be added to the session keyring, and an | 1260 | be marked as being negative, it will be added to the session keyring, and an |
diff --git a/Documentation/kref.txt b/Documentation/kref.txt index ae203f91ee9b..48ba715d5a63 100644 --- a/Documentation/kref.txt +++ b/Documentation/kref.txt | |||
@@ -156,7 +156,7 @@ static struct my_data *get_entry() | |||
156 | struct my_data *entry = NULL; | 156 | struct my_data *entry = NULL; |
157 | mutex_lock(&mutex); | 157 | mutex_lock(&mutex); |
158 | if (!list_empty(&q)) { | 158 | if (!list_empty(&q)) { |
159 | entry = container_of(q.next, struct my_q_entry, link); | 159 | entry = container_of(q.next, struct my_data, link); |
160 | kref_get(&entry->refcount); | 160 | kref_get(&entry->refcount); |
161 | } | 161 | } |
162 | mutex_unlock(&mutex); | 162 | mutex_unlock(&mutex); |
diff --git a/Documentation/kvm/api.txt b/Documentation/kvm/api.txt index ad85797c1cf0..9bef4e4cec50 100644 --- a/Documentation/kvm/api.txt +++ b/Documentation/kvm/api.txt | |||
@@ -166,7 +166,7 @@ Returns: 0 on success, -1 on error | |||
166 | 166 | ||
167 | This ioctl is obsolete and has been removed. | 167 | This ioctl is obsolete and has been removed. |
168 | 168 | ||
169 | 4.6 KVM_CREATE_VCPU | 169 | 4.7 KVM_CREATE_VCPU |
170 | 170 | ||
171 | Capability: basic | 171 | Capability: basic |
172 | Architectures: all | 172 | Architectures: all |
@@ -177,7 +177,7 @@ Returns: vcpu fd on success, -1 on error | |||
177 | This API adds a vcpu to a virtual machine. The vcpu id is a small integer | 177 | This API adds a vcpu to a virtual machine. The vcpu id is a small integer |
178 | in the range [0, max_vcpus). | 178 | in the range [0, max_vcpus). |
179 | 179 | ||
180 | 4.7 KVM_GET_DIRTY_LOG (vm ioctl) | 180 | 4.8 KVM_GET_DIRTY_LOG (vm ioctl) |
181 | 181 | ||
182 | Capability: basic | 182 | Capability: basic |
183 | Architectures: x86 | 183 | Architectures: x86 |
@@ -200,7 +200,7 @@ since the last call to this ioctl. Bit 0 is the first page in the | |||
200 | memory slot. Ensure the entire structure is cleared to avoid padding | 200 | memory slot. Ensure the entire structure is cleared to avoid padding |
201 | issues. | 201 | issues. |
202 | 202 | ||
203 | 4.8 KVM_SET_MEMORY_ALIAS | 203 | 4.9 KVM_SET_MEMORY_ALIAS |
204 | 204 | ||
205 | Capability: basic | 205 | Capability: basic |
206 | Architectures: x86 | 206 | Architectures: x86 |
@@ -210,7 +210,7 @@ Returns: 0 (success), -1 (error) | |||
210 | 210 | ||
211 | This ioctl is obsolete and has been removed. | 211 | This ioctl is obsolete and has been removed. |
212 | 212 | ||
213 | 4.9 KVM_RUN | 213 | 4.10 KVM_RUN |
214 | 214 | ||
215 | Capability: basic | 215 | Capability: basic |
216 | Architectures: all | 216 | Architectures: all |
@@ -226,7 +226,7 @@ obtained by mmap()ing the vcpu fd at offset 0, with the size given by | |||
226 | KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct | 226 | KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct |
227 | kvm_run' (see below). | 227 | kvm_run' (see below). |
228 | 228 | ||
229 | 4.10 KVM_GET_REGS | 229 | 4.11 KVM_GET_REGS |
230 | 230 | ||
231 | Capability: basic | 231 | Capability: basic |
232 | Architectures: all | 232 | Architectures: all |
@@ -246,7 +246,7 @@ struct kvm_regs { | |||
246 | __u64 rip, rflags; | 246 | __u64 rip, rflags; |
247 | }; | 247 | }; |
248 | 248 | ||
249 | 4.11 KVM_SET_REGS | 249 | 4.12 KVM_SET_REGS |
250 | 250 | ||
251 | Capability: basic | 251 | Capability: basic |
252 | Architectures: all | 252 | Architectures: all |
@@ -258,7 +258,7 @@ Writes the general purpose registers into the vcpu. | |||
258 | 258 | ||
259 | See KVM_GET_REGS for the data structure. | 259 | See KVM_GET_REGS for the data structure. |
260 | 260 | ||
261 | 4.12 KVM_GET_SREGS | 261 | 4.13 KVM_GET_SREGS |
262 | 262 | ||
263 | Capability: basic | 263 | Capability: basic |
264 | Architectures: x86 | 264 | Architectures: x86 |
@@ -283,7 +283,7 @@ interrupt_bitmap is a bitmap of pending external interrupts. At most | |||
283 | one bit may be set. This interrupt has been acknowledged by the APIC | 283 | one bit may be set. This interrupt has been acknowledged by the APIC |
284 | but not yet injected into the cpu core. | 284 | but not yet injected into the cpu core. |
285 | 285 | ||
286 | 4.13 KVM_SET_SREGS | 286 | 4.14 KVM_SET_SREGS |
287 | 287 | ||
288 | Capability: basic | 288 | Capability: basic |
289 | Architectures: x86 | 289 | Architectures: x86 |
@@ -294,7 +294,7 @@ Returns: 0 on success, -1 on error | |||
294 | Writes special registers into the vcpu. See KVM_GET_SREGS for the | 294 | Writes special registers into the vcpu. See KVM_GET_SREGS for the |
295 | data structures. | 295 | data structures. |
296 | 296 | ||
297 | 4.14 KVM_TRANSLATE | 297 | 4.15 KVM_TRANSLATE |
298 | 298 | ||
299 | Capability: basic | 299 | Capability: basic |
300 | Architectures: x86 | 300 | Architectures: x86 |
@@ -317,7 +317,7 @@ struct kvm_translation { | |||
317 | __u8 pad[5]; | 317 | __u8 pad[5]; |
318 | }; | 318 | }; |
319 | 319 | ||
320 | 4.15 KVM_INTERRUPT | 320 | 4.16 KVM_INTERRUPT |
321 | 321 | ||
322 | Capability: basic | 322 | Capability: basic |
323 | Architectures: x86, ppc | 323 | Architectures: x86, ppc |
@@ -365,7 +365,7 @@ c) KVM_INTERRUPT_SET_LEVEL | |||
365 | Note that any value for 'irq' other than the ones stated above is invalid | 365 | Note that any value for 'irq' other than the ones stated above is invalid |
366 | and incurs unexpected behavior. | 366 | and incurs unexpected behavior. |
367 | 367 | ||
368 | 4.16 KVM_DEBUG_GUEST | 368 | 4.17 KVM_DEBUG_GUEST |
369 | 369 | ||
370 | Capability: basic | 370 | Capability: basic |
371 | Architectures: none | 371 | Architectures: none |
@@ -375,7 +375,7 @@ Returns: -1 on error | |||
375 | 375 | ||
376 | Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead. | 376 | Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead. |
377 | 377 | ||
378 | 4.17 KVM_GET_MSRS | 378 | 4.18 KVM_GET_MSRS |
379 | 379 | ||
380 | Capability: basic | 380 | Capability: basic |
381 | Architectures: x86 | 381 | Architectures: x86 |
@@ -403,7 +403,7 @@ Application code should set the 'nmsrs' member (which indicates the | |||
403 | size of the entries array) and the 'index' member of each array entry. | 403 | size of the entries array) and the 'index' member of each array entry. |
404 | kvm will fill in the 'data' member. | 404 | kvm will fill in the 'data' member. |
405 | 405 | ||
406 | 4.18 KVM_SET_MSRS | 406 | 4.19 KVM_SET_MSRS |
407 | 407 | ||
408 | Capability: basic | 408 | Capability: basic |
409 | Architectures: x86 | 409 | Architectures: x86 |
@@ -418,7 +418,7 @@ Application code should set the 'nmsrs' member (which indicates the | |||
418 | size of the entries array), and the 'index' and 'data' members of each | 418 | size of the entries array), and the 'index' and 'data' members of each |
419 | array entry. | 419 | array entry. |
420 | 420 | ||
421 | 4.19 KVM_SET_CPUID | 421 | 4.20 KVM_SET_CPUID |
422 | 422 | ||
423 | Capability: basic | 423 | Capability: basic |
424 | Architectures: x86 | 424 | Architectures: x86 |
@@ -446,7 +446,7 @@ struct kvm_cpuid { | |||
446 | struct kvm_cpuid_entry entries[0]; | 446 | struct kvm_cpuid_entry entries[0]; |
447 | }; | 447 | }; |
448 | 448 | ||
449 | 4.20 KVM_SET_SIGNAL_MASK | 449 | 4.21 KVM_SET_SIGNAL_MASK |
450 | 450 | ||
451 | Capability: basic | 451 | Capability: basic |
452 | Architectures: x86 | 452 | Architectures: x86 |
@@ -468,7 +468,7 @@ struct kvm_signal_mask { | |||
468 | __u8 sigset[0]; | 468 | __u8 sigset[0]; |
469 | }; | 469 | }; |
470 | 470 | ||
471 | 4.21 KVM_GET_FPU | 471 | 4.22 KVM_GET_FPU |
472 | 472 | ||
473 | Capability: basic | 473 | Capability: basic |
474 | Architectures: x86 | 474 | Architectures: x86 |
@@ -493,7 +493,7 @@ struct kvm_fpu { | |||
493 | __u32 pad2; | 493 | __u32 pad2; |
494 | }; | 494 | }; |
495 | 495 | ||
496 | 4.22 KVM_SET_FPU | 496 | 4.23 KVM_SET_FPU |
497 | 497 | ||
498 | Capability: basic | 498 | Capability: basic |
499 | Architectures: x86 | 499 | Architectures: x86 |
@@ -518,7 +518,7 @@ struct kvm_fpu { | |||
518 | __u32 pad2; | 518 | __u32 pad2; |
519 | }; | 519 | }; |
520 | 520 | ||
521 | 4.23 KVM_CREATE_IRQCHIP | 521 | 4.24 KVM_CREATE_IRQCHIP |
522 | 522 | ||
523 | Capability: KVM_CAP_IRQCHIP | 523 | Capability: KVM_CAP_IRQCHIP |
524 | Architectures: x86, ia64 | 524 | Architectures: x86, ia64 |
@@ -531,7 +531,7 @@ ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | |||
531 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | 531 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 |
532 | only go to the IOAPIC. On ia64, a IOSAPIC is created. | 532 | only go to the IOAPIC. On ia64, a IOSAPIC is created. |
533 | 533 | ||
534 | 4.24 KVM_IRQ_LINE | 534 | 4.25 KVM_IRQ_LINE |
535 | 535 | ||
536 | Capability: KVM_CAP_IRQCHIP | 536 | Capability: KVM_CAP_IRQCHIP |
537 | Architectures: x86, ia64 | 537 | Architectures: x86, ia64 |
@@ -552,7 +552,7 @@ struct kvm_irq_level { | |||
552 | __u32 level; /* 0 or 1 */ | 552 | __u32 level; /* 0 or 1 */ |
553 | }; | 553 | }; |
554 | 554 | ||
555 | 4.25 KVM_GET_IRQCHIP | 555 | 4.26 KVM_GET_IRQCHIP |
556 | 556 | ||
557 | Capability: KVM_CAP_IRQCHIP | 557 | Capability: KVM_CAP_IRQCHIP |
558 | Architectures: x86, ia64 | 558 | Architectures: x86, ia64 |
@@ -573,7 +573,7 @@ struct kvm_irqchip { | |||
573 | } chip; | 573 | } chip; |
574 | }; | 574 | }; |
575 | 575 | ||
576 | 4.26 KVM_SET_IRQCHIP | 576 | 4.27 KVM_SET_IRQCHIP |
577 | 577 | ||
578 | Capability: KVM_CAP_IRQCHIP | 578 | Capability: KVM_CAP_IRQCHIP |
579 | Architectures: x86, ia64 | 579 | Architectures: x86, ia64 |
@@ -594,7 +594,7 @@ struct kvm_irqchip { | |||
594 | } chip; | 594 | } chip; |
595 | }; | 595 | }; |
596 | 596 | ||
597 | 4.27 KVM_XEN_HVM_CONFIG | 597 | 4.28 KVM_XEN_HVM_CONFIG |
598 | 598 | ||
599 | Capability: KVM_CAP_XEN_HVM | 599 | Capability: KVM_CAP_XEN_HVM |
600 | Architectures: x86 | 600 | Architectures: x86 |
@@ -618,7 +618,7 @@ struct kvm_xen_hvm_config { | |||
618 | __u8 pad2[30]; | 618 | __u8 pad2[30]; |
619 | }; | 619 | }; |
620 | 620 | ||
621 | 4.27 KVM_GET_CLOCK | 621 | 4.29 KVM_GET_CLOCK |
622 | 622 | ||
623 | Capability: KVM_CAP_ADJUST_CLOCK | 623 | Capability: KVM_CAP_ADJUST_CLOCK |
624 | Architectures: x86 | 624 | Architectures: x86 |
@@ -636,7 +636,7 @@ struct kvm_clock_data { | |||
636 | __u32 pad[9]; | 636 | __u32 pad[9]; |
637 | }; | 637 | }; |
638 | 638 | ||
639 | 4.28 KVM_SET_CLOCK | 639 | 4.30 KVM_SET_CLOCK |
640 | 640 | ||
641 | Capability: KVM_CAP_ADJUST_CLOCK | 641 | Capability: KVM_CAP_ADJUST_CLOCK |
642 | Architectures: x86 | 642 | Architectures: x86 |
@@ -654,7 +654,7 @@ struct kvm_clock_data { | |||
654 | __u32 pad[9]; | 654 | __u32 pad[9]; |
655 | }; | 655 | }; |
656 | 656 | ||
657 | 4.29 KVM_GET_VCPU_EVENTS | 657 | 4.31 KVM_GET_VCPU_EVENTS |
658 | 658 | ||
659 | Capability: KVM_CAP_VCPU_EVENTS | 659 | Capability: KVM_CAP_VCPU_EVENTS |
660 | Extended by: KVM_CAP_INTR_SHADOW | 660 | Extended by: KVM_CAP_INTR_SHADOW |
@@ -693,7 +693,7 @@ struct kvm_vcpu_events { | |||
693 | KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that | 693 | KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that |
694 | interrupt.shadow contains a valid state. Otherwise, this field is undefined. | 694 | interrupt.shadow contains a valid state. Otherwise, this field is undefined. |
695 | 695 | ||
696 | 4.30 KVM_SET_VCPU_EVENTS | 696 | 4.32 KVM_SET_VCPU_EVENTS |
697 | 697 | ||
698 | Capability: KVM_CAP_VCPU_EVENTS | 698 | Capability: KVM_CAP_VCPU_EVENTS |
699 | Extended by: KVM_CAP_INTR_SHADOW | 699 | Extended by: KVM_CAP_INTR_SHADOW |
@@ -719,7 +719,7 @@ If KVM_CAP_INTR_SHADOW is available, KVM_VCPUEVENT_VALID_SHADOW can be set in | |||
719 | the flags field to signal that interrupt.shadow contains a valid state and | 719 | the flags field to signal that interrupt.shadow contains a valid state and |
720 | shall be written into the VCPU. | 720 | shall be written into the VCPU. |
721 | 721 | ||
722 | 4.32 KVM_GET_DEBUGREGS | 722 | 4.33 KVM_GET_DEBUGREGS |
723 | 723 | ||
724 | Capability: KVM_CAP_DEBUGREGS | 724 | Capability: KVM_CAP_DEBUGREGS |
725 | Architectures: x86 | 725 | Architectures: x86 |
@@ -737,7 +737,7 @@ struct kvm_debugregs { | |||
737 | __u64 reserved[9]; | 737 | __u64 reserved[9]; |
738 | }; | 738 | }; |
739 | 739 | ||
740 | 4.33 KVM_SET_DEBUGREGS | 740 | 4.34 KVM_SET_DEBUGREGS |
741 | 741 | ||
742 | Capability: KVM_CAP_DEBUGREGS | 742 | Capability: KVM_CAP_DEBUGREGS |
743 | Architectures: x86 | 743 | Architectures: x86 |
@@ -750,7 +750,7 @@ Writes debug registers into the vcpu. | |||
750 | See KVM_GET_DEBUGREGS for the data structure. The flags field is unused | 750 | See KVM_GET_DEBUGREGS for the data structure. The flags field is unused |
751 | yet and must be cleared on entry. | 751 | yet and must be cleared on entry. |
752 | 752 | ||
753 | 4.34 KVM_SET_USER_MEMORY_REGION | 753 | 4.35 KVM_SET_USER_MEMORY_REGION |
754 | 754 | ||
755 | Capability: KVM_CAP_USER_MEM | 755 | Capability: KVM_CAP_USER_MEM |
756 | Architectures: all | 756 | Architectures: all |
@@ -796,7 +796,7 @@ It is recommended to use this API instead of the KVM_SET_MEMORY_REGION ioctl. | |||
796 | The KVM_SET_MEMORY_REGION does not allow fine grained control over memory | 796 | The KVM_SET_MEMORY_REGION does not allow fine grained control over memory |
797 | allocation and is deprecated. | 797 | allocation and is deprecated. |
798 | 798 | ||
799 | 4.35 KVM_SET_TSS_ADDR | 799 | 4.36 KVM_SET_TSS_ADDR |
800 | 800 | ||
801 | Capability: KVM_CAP_SET_TSS_ADDR | 801 | Capability: KVM_CAP_SET_TSS_ADDR |
802 | Architectures: x86 | 802 | Architectures: x86 |
@@ -814,7 +814,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware | |||
814 | because of a quirk in the virtualization implementation (see the internals | 814 | because of a quirk in the virtualization implementation (see the internals |
815 | documentation when it pops into existence). | 815 | documentation when it pops into existence). |
816 | 816 | ||
817 | 4.36 KVM_ENABLE_CAP | 817 | 4.37 KVM_ENABLE_CAP |
818 | 818 | ||
819 | Capability: KVM_CAP_ENABLE_CAP | 819 | Capability: KVM_CAP_ENABLE_CAP |
820 | Architectures: ppc | 820 | Architectures: ppc |
@@ -849,7 +849,7 @@ function properly, this is the place to put them. | |||
849 | __u8 pad[64]; | 849 | __u8 pad[64]; |
850 | }; | 850 | }; |
851 | 851 | ||
852 | 4.37 KVM_GET_MP_STATE | 852 | 4.38 KVM_GET_MP_STATE |
853 | 853 | ||
854 | Capability: KVM_CAP_MP_STATE | 854 | Capability: KVM_CAP_MP_STATE |
855 | Architectures: x86, ia64 | 855 | Architectures: x86, ia64 |
@@ -879,7 +879,7 @@ Possible values are: | |||
879 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 879 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel |
880 | irqchip, the multiprocessing state must be maintained by userspace. | 880 | irqchip, the multiprocessing state must be maintained by userspace. |
881 | 881 | ||
882 | 4.38 KVM_SET_MP_STATE | 882 | 4.39 KVM_SET_MP_STATE |
883 | 883 | ||
884 | Capability: KVM_CAP_MP_STATE | 884 | Capability: KVM_CAP_MP_STATE |
885 | Architectures: x86, ia64 | 885 | Architectures: x86, ia64 |
@@ -893,7 +893,7 @@ arguments. | |||
893 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 893 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel |
894 | irqchip, the multiprocessing state must be maintained by userspace. | 894 | irqchip, the multiprocessing state must be maintained by userspace. |
895 | 895 | ||
896 | 4.39 KVM_SET_IDENTITY_MAP_ADDR | 896 | 4.40 KVM_SET_IDENTITY_MAP_ADDR |
897 | 897 | ||
898 | Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR | 898 | Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR |
899 | Architectures: x86 | 899 | Architectures: x86 |
@@ -911,7 +911,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware | |||
911 | because of a quirk in the virtualization implementation (see the internals | 911 | because of a quirk in the virtualization implementation (see the internals |
912 | documentation when it pops into existence). | 912 | documentation when it pops into existence). |
913 | 913 | ||
914 | 4.40 KVM_SET_BOOT_CPU_ID | 914 | 4.41 KVM_SET_BOOT_CPU_ID |
915 | 915 | ||
916 | Capability: KVM_CAP_SET_BOOT_CPU_ID | 916 | Capability: KVM_CAP_SET_BOOT_CPU_ID |
917 | Architectures: x86, ia64 | 917 | Architectures: x86, ia64 |
@@ -923,7 +923,7 @@ Define which vcpu is the Bootstrap Processor (BSP). Values are the same | |||
923 | as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default | 923 | as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default |
924 | is vcpu 0. | 924 | is vcpu 0. |
925 | 925 | ||
926 | 4.41 KVM_GET_XSAVE | 926 | 4.42 KVM_GET_XSAVE |
927 | 927 | ||
928 | Capability: KVM_CAP_XSAVE | 928 | Capability: KVM_CAP_XSAVE |
929 | Architectures: x86 | 929 | Architectures: x86 |
@@ -937,7 +937,7 @@ struct kvm_xsave { | |||
937 | 937 | ||
938 | This ioctl would copy current vcpu's xsave struct to the userspace. | 938 | This ioctl would copy current vcpu's xsave struct to the userspace. |
939 | 939 | ||
940 | 4.42 KVM_SET_XSAVE | 940 | 4.43 KVM_SET_XSAVE |
941 | 941 | ||
942 | Capability: KVM_CAP_XSAVE | 942 | Capability: KVM_CAP_XSAVE |
943 | Architectures: x86 | 943 | Architectures: x86 |
@@ -951,7 +951,7 @@ struct kvm_xsave { | |||
951 | 951 | ||
952 | This ioctl would copy userspace's xsave struct to the kernel. | 952 | This ioctl would copy userspace's xsave struct to the kernel. |
953 | 953 | ||
954 | 4.43 KVM_GET_XCRS | 954 | 4.44 KVM_GET_XCRS |
955 | 955 | ||
956 | Capability: KVM_CAP_XCRS | 956 | Capability: KVM_CAP_XCRS |
957 | Architectures: x86 | 957 | Architectures: x86 |
@@ -974,7 +974,7 @@ struct kvm_xcrs { | |||
974 | 974 | ||
975 | This ioctl would copy current vcpu's xcrs to the userspace. | 975 | This ioctl would copy current vcpu's xcrs to the userspace. |
976 | 976 | ||
977 | 4.44 KVM_SET_XCRS | 977 | 4.45 KVM_SET_XCRS |
978 | 978 | ||
979 | Capability: KVM_CAP_XCRS | 979 | Capability: KVM_CAP_XCRS |
980 | Architectures: x86 | 980 | Architectures: x86 |
@@ -997,7 +997,7 @@ struct kvm_xcrs { | |||
997 | 997 | ||
998 | This ioctl would set vcpu's xcr to the value userspace specified. | 998 | This ioctl would set vcpu's xcr to the value userspace specified. |
999 | 999 | ||
1000 | 4.45 KVM_GET_SUPPORTED_CPUID | 1000 | 4.46 KVM_GET_SUPPORTED_CPUID |
1001 | 1001 | ||
1002 | Capability: KVM_CAP_EXT_CPUID | 1002 | Capability: KVM_CAP_EXT_CPUID |
1003 | Architectures: x86 | 1003 | Architectures: x86 |
@@ -1062,7 +1062,7 @@ emulate them efficiently. The fields in each entry are defined as follows: | |||
1062 | eax, ebx, ecx, edx: the values returned by the cpuid instruction for | 1062 | eax, ebx, ecx, edx: the values returned by the cpuid instruction for |
1063 | this function/index combination | 1063 | this function/index combination |
1064 | 1064 | ||
1065 | 4.46 KVM_PPC_GET_PVINFO | 1065 | 4.47 KVM_PPC_GET_PVINFO |
1066 | 1066 | ||
1067 | Capability: KVM_CAP_PPC_GET_PVINFO | 1067 | Capability: KVM_CAP_PPC_GET_PVINFO |
1068 | Architectures: ppc | 1068 | Architectures: ppc |
@@ -1085,7 +1085,7 @@ of 4 instructions that make up a hypercall. | |||
1085 | If any additional field gets added to this structure later on, a bit for that | 1085 | If any additional field gets added to this structure later on, a bit for that |
1086 | additional piece of information will be set in the flags bitmap. | 1086 | additional piece of information will be set in the flags bitmap. |
1087 | 1087 | ||
1088 | 4.47 KVM_ASSIGN_PCI_DEVICE | 1088 | 4.48 KVM_ASSIGN_PCI_DEVICE |
1089 | 1089 | ||
1090 | Capability: KVM_CAP_DEVICE_ASSIGNMENT | 1090 | Capability: KVM_CAP_DEVICE_ASSIGNMENT |
1091 | Architectures: x86 ia64 | 1091 | Architectures: x86 ia64 |
@@ -1113,7 +1113,7 @@ following flags are specified: | |||
1113 | /* Depends on KVM_CAP_IOMMU */ | 1113 | /* Depends on KVM_CAP_IOMMU */ |
1114 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) | 1114 | #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) |
1115 | 1115 | ||
1116 | 4.48 KVM_DEASSIGN_PCI_DEVICE | 1116 | 4.49 KVM_DEASSIGN_PCI_DEVICE |
1117 | 1117 | ||
1118 | Capability: KVM_CAP_DEVICE_DEASSIGNMENT | 1118 | Capability: KVM_CAP_DEVICE_DEASSIGNMENT |
1119 | Architectures: x86 ia64 | 1119 | Architectures: x86 ia64 |
@@ -1126,7 +1126,7 @@ Ends PCI device assignment, releasing all associated resources. | |||
1126 | See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is | 1126 | See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is |
1127 | used in kvm_assigned_pci_dev to identify the device. | 1127 | used in kvm_assigned_pci_dev to identify the device. |
1128 | 1128 | ||
1129 | 4.49 KVM_ASSIGN_DEV_IRQ | 1129 | 4.50 KVM_ASSIGN_DEV_IRQ |
1130 | 1130 | ||
1131 | Capability: KVM_CAP_ASSIGN_DEV_IRQ | 1131 | Capability: KVM_CAP_ASSIGN_DEV_IRQ |
1132 | Architectures: x86 ia64 | 1132 | Architectures: x86 ia64 |
@@ -1164,7 +1164,7 @@ The following flags are defined: | |||
1164 | It is not valid to specify multiple types per host or guest IRQ. However, the | 1164 | It is not valid to specify multiple types per host or guest IRQ. However, the |
1165 | IRQ type of host and guest can differ or can even be null. | 1165 | IRQ type of host and guest can differ or can even be null. |
1166 | 1166 | ||
1167 | 4.50 KVM_DEASSIGN_DEV_IRQ | 1167 | 4.51 KVM_DEASSIGN_DEV_IRQ |
1168 | 1168 | ||
1169 | Capability: KVM_CAP_ASSIGN_DEV_IRQ | 1169 | Capability: KVM_CAP_ASSIGN_DEV_IRQ |
1170 | Architectures: x86 ia64 | 1170 | Architectures: x86 ia64 |
@@ -1178,7 +1178,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified | |||
1178 | by assigned_dev_id, flags must correspond to the IRQ type specified on | 1178 | by assigned_dev_id, flags must correspond to the IRQ type specified on |
1179 | KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. | 1179 | KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. |
1180 | 1180 | ||
1181 | 4.51 KVM_SET_GSI_ROUTING | 1181 | 4.52 KVM_SET_GSI_ROUTING |
1182 | 1182 | ||
1183 | Capability: KVM_CAP_IRQ_ROUTING | 1183 | Capability: KVM_CAP_IRQ_ROUTING |
1184 | Architectures: x86 ia64 | 1184 | Architectures: x86 ia64 |
@@ -1226,7 +1226,7 @@ struct kvm_irq_routing_msi { | |||
1226 | __u32 pad; | 1226 | __u32 pad; |
1227 | }; | 1227 | }; |
1228 | 1228 | ||
1229 | 4.52 KVM_ASSIGN_SET_MSIX_NR | 1229 | 4.53 KVM_ASSIGN_SET_MSIX_NR |
1230 | 1230 | ||
1231 | Capability: KVM_CAP_DEVICE_MSIX | 1231 | Capability: KVM_CAP_DEVICE_MSIX |
1232 | Architectures: x86 ia64 | 1232 | Architectures: x86 ia64 |
@@ -1245,7 +1245,7 @@ struct kvm_assigned_msix_nr { | |||
1245 | 1245 | ||
1246 | #define KVM_MAX_MSIX_PER_DEV 256 | 1246 | #define KVM_MAX_MSIX_PER_DEV 256 |
1247 | 1247 | ||
1248 | 4.53 KVM_ASSIGN_SET_MSIX_ENTRY | 1248 | 4.54 KVM_ASSIGN_SET_MSIX_ENTRY |
1249 | 1249 | ||
1250 | Capability: KVM_CAP_DEVICE_MSIX | 1250 | Capability: KVM_CAP_DEVICE_MSIX |
1251 | Architectures: x86 ia64 | 1251 | Architectures: x86 ia64 |
diff --git a/Documentation/kvm/locking.txt b/Documentation/kvm/locking.txt new file mode 100644 index 000000000000..3b4cd3bf5631 --- /dev/null +++ b/Documentation/kvm/locking.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | KVM Lock Overview | ||
2 | ================= | ||
3 | |||
4 | 1. Acquisition Orders | ||
5 | --------------------- | ||
6 | |||
7 | (to be written) | ||
8 | |||
9 | 2. Reference | ||
10 | ------------ | ||
11 | |||
12 | Name: kvm_lock | ||
13 | Type: raw_spinlock | ||
14 | Arch: any | ||
15 | Protects: - vm_list | ||
16 | - hardware virtualization enable/disable | ||
17 | Comment: 'raw' because hardware enabling/disabling must be atomic /wrt | ||
18 | migration. | ||
19 | |||
20 | Name: kvm_arch::tsc_write_lock | ||
21 | Type: raw_spinlock | ||
22 | Arch: x86 | ||
23 | Protects: - kvm_arch::{last_tsc_write,last_tsc_nsec,last_tsc_offset} | ||
24 | - tsc offset in vmcb | ||
25 | Comment: 'raw' because updating the tsc offsets must not be preempted. | ||
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index 631ad2f1b229..f0d3a8026a56 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -21,6 +21,7 @@ Contents: | |||
21 | - SMP barrier pairing. | 21 | - SMP barrier pairing. |
22 | - Examples of memory barrier sequences. | 22 | - Examples of memory barrier sequences. |
23 | - Read memory barriers vs load speculation. | 23 | - Read memory barriers vs load speculation. |
24 | - Transitivity | ||
24 | 25 | ||
25 | (*) Explicit kernel barriers. | 26 | (*) Explicit kernel barriers. |
26 | 27 | ||
@@ -959,6 +960,63 @@ the speculation will be cancelled and the value reloaded: | |||
959 | retrieved : : +-------+ | 960 | retrieved : : +-------+ |
960 | 961 | ||
961 | 962 | ||
963 | TRANSITIVITY | ||
964 | ------------ | ||
965 | |||
966 | Transitivity is a deeply intuitive notion about ordering that is not | ||
967 | always provided by real computer systems. The following example | ||
968 | demonstrates transitivity (also called "cumulativity"): | ||
969 | |||
970 | CPU 1 CPU 2 CPU 3 | ||
971 | ======================= ======================= ======================= | ||
972 | { X = 0, Y = 0 } | ||
973 | STORE X=1 LOAD X STORE Y=1 | ||
974 | <general barrier> <general barrier> | ||
975 | LOAD Y LOAD X | ||
976 | |||
977 | Suppose that CPU 2's load from X returns 1 and its load from Y returns 0. | ||
978 | This indicates that CPU 2's load from X in some sense follows CPU 1's | ||
979 | store to X and that CPU 2's load from Y in some sense preceded CPU 3's | ||
980 | store to Y. The question is then "Can CPU 3's load from X return 0?" | ||
981 | |||
982 | Because CPU 2's load from X in some sense came after CPU 1's store, it | ||
983 | is natural to expect that CPU 3's load from X must therefore return 1. | ||
984 | This expectation is an example of transitivity: if a load executing on | ||
985 | CPU A follows a load from the same variable executing on CPU B, then | ||
986 | CPU A's load must either return the same value that CPU B's load did, | ||
987 | or must return some later value. | ||
988 | |||
989 | In the Linux kernel, use of general memory barriers guarantees | ||
990 | transitivity. Therefore, in the above example, if CPU 2's load from X | ||
991 | returns 1 and its load from Y returns 0, then CPU 3's load from X must | ||
992 | also return 1. | ||
993 | |||
994 | However, transitivity is -not- guaranteed for read or write barriers. | ||
995 | For example, suppose that CPU 2's general barrier in the above example | ||
996 | is changed to a read barrier as shown below: | ||
997 | |||
998 | CPU 1 CPU 2 CPU 3 | ||
999 | ======================= ======================= ======================= | ||
1000 | { X = 0, Y = 0 } | ||
1001 | STORE X=1 LOAD X STORE Y=1 | ||
1002 | <read barrier> <general barrier> | ||
1003 | LOAD Y LOAD X | ||
1004 | |||
1005 | This substitution destroys transitivity: in this example, it is perfectly | ||
1006 | legal for CPU 2's load from X to return 1, its load from Y to return 0, | ||
1007 | and CPU 3's load from X to return 0. | ||
1008 | |||
1009 | The key point is that although CPU 2's read barrier orders its pair | ||
1010 | of loads, it does not guarantee to order CPU 1's store. Therefore, if | ||
1011 | this example runs on a system where CPUs 1 and 2 share a store buffer | ||
1012 | or a level of cache, CPU 2 might have early access to CPU 1's writes. | ||
1013 | General barriers are therefore required to ensure that all CPUs agree | ||
1014 | on the combined order of CPU 1's and CPU 2's accesses. | ||
1015 | |||
1016 | To reiterate, if your code requires transitivity, use general barriers | ||
1017 | throughout. | ||
1018 | |||
1019 | |||
962 | ======================== | 1020 | ======================== |
963 | EXPLICIT KERNEL BARRIERS | 1021 | EXPLICIT KERNEL BARRIERS |
964 | ======================== | 1022 | ======================== |
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt index 57e7e9cc1870..8f485d72cf25 100644 --- a/Documentation/memory-hotplug.txt +++ b/Documentation/memory-hotplug.txt | |||
@@ -126,36 +126,51 @@ config options. | |||
126 | -------------------------------- | 126 | -------------------------------- |
127 | 4 sysfs files for memory hotplug | 127 | 4 sysfs files for memory hotplug |
128 | -------------------------------- | 128 | -------------------------------- |
129 | All sections have their device information under /sys/devices/system/memory as | 129 | All sections have their device information in sysfs. Each section is part of |
130 | a memory block under /sys/devices/system/memory as | ||
130 | 131 | ||
131 | /sys/devices/system/memory/memoryXXX | 132 | /sys/devices/system/memory/memoryXXX |
132 | (XXX is section id.) | 133 | (XXX is the section id.) |
133 | 134 | ||
134 | Now, XXX is defined as start_address_of_section / section_size. | 135 | Now, XXX is defined as (start_address_of_section / section_size) of the first |
136 | section contained in the memory block. The files 'phys_index' and | ||
137 | 'end_phys_index' under each directory report the beginning and end section id's | ||
138 | for the memory block covered by the sysfs directory. It is expected that all | ||
139 | memory sections in this range are present and no memory holes exist in the | ||
140 | range. Currently there is no way to determine if there is a memory hole, but | ||
141 | the existence of one should not affect the hotplug capabilities of the memory | ||
142 | block. | ||
135 | 143 | ||
136 | For example, assume 1GiB section size. A device for a memory starting at | 144 | For example, assume 1GiB section size. A device for a memory starting at |
137 | 0x100000000 is /sys/device/system/memory/memory4 | 145 | 0x100000000 is /sys/device/system/memory/memory4 |
138 | (0x100000000 / 1Gib = 4) | 146 | (0x100000000 / 1Gib = 4) |
139 | This device covers address range [0x100000000 ... 0x140000000) | 147 | This device covers address range [0x100000000 ... 0x140000000) |
140 | 148 | ||
141 | Under each section, you can see 4 files. | 149 | Under each section, you can see 4 or 5 files, the end_phys_index file being |
150 | a recent addition and not present on older kernels. | ||
142 | 151 | ||
143 | /sys/devices/system/memory/memoryXXX/phys_index | 152 | /sys/devices/system/memory/memoryXXX/start_phys_index |
153 | /sys/devices/system/memory/memoryXXX/end_phys_index | ||
144 | /sys/devices/system/memory/memoryXXX/phys_device | 154 | /sys/devices/system/memory/memoryXXX/phys_device |
145 | /sys/devices/system/memory/memoryXXX/state | 155 | /sys/devices/system/memory/memoryXXX/state |
146 | /sys/devices/system/memory/memoryXXX/removable | 156 | /sys/devices/system/memory/memoryXXX/removable |
147 | 157 | ||
148 | 'phys_index' : read-only and contains section id, same as XXX. | 158 | 'phys_index' : read-only and contains section id of the first section |
149 | 'state' : read-write | 159 | in the memory block, same as XXX. |
150 | at read: contains online/offline state of memory. | 160 | 'end_phys_index' : read-only and contains section id of the last section |
151 | at write: user can specify "online", "offline" command | 161 | in the memory block. |
152 | 'phys_device': read-only: designed to show the name of physical memory device. | 162 | 'state' : read-write |
153 | This is not well implemented now. | 163 | at read: contains online/offline state of memory. |
154 | 'removable' : read-only: contains an integer value indicating | 164 | at write: user can specify "online", "offline" command |
155 | whether the memory section is removable or not | 165 | which will be performed on al sections in the block. |
156 | removable. A value of 1 indicates that the memory | 166 | 'phys_device' : read-only: designed to show the name of physical memory |
157 | section is removable and a value of 0 indicates that | 167 | device. This is not well implemented now. |
158 | it is not removable. | 168 | 'removable' : read-only: contains an integer value indicating |
169 | whether the memory block is removable or not | ||
170 | removable. A value of 1 indicates that the memory | ||
171 | block is removable and a value of 0 indicates that | ||
172 | it is not removable. A memory block is removable only if | ||
173 | every section in the block is removable. | ||
159 | 174 | ||
160 | NOTE: | 175 | NOTE: |
161 | These directories/files appear after physical memory hotplug phase. | 176 | These directories/files appear after physical memory hotplug phase. |
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index fe5c099b8fc8..4edd78dfb362 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
@@ -40,8 +40,6 @@ decnet.txt | |||
40 | - info on using the DECnet networking layer in Linux. | 40 | - info on using the DECnet networking layer in Linux. |
41 | depca.txt | 41 | depca.txt |
42 | - the Digital DEPCA/EtherWORKS DE1?? and DE2?? LANCE Ethernet driver | 42 | - the Digital DEPCA/EtherWORKS DE1?? and DE2?? LANCE Ethernet driver |
43 | dgrs.txt | ||
44 | - the Digi International RightSwitch SE-X Ethernet driver | ||
45 | dmfe.txt | 43 | dmfe.txt |
46 | - info on the Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver. | 44 | - info on the Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver. |
47 | e100.txt | 45 | e100.txt |
@@ -50,8 +48,6 @@ e1000.txt | |||
50 | - info on Intel's E1000 line of gigabit ethernet boards | 48 | - info on Intel's E1000 line of gigabit ethernet boards |
51 | eql.txt | 49 | eql.txt |
52 | - serial IP load balancing | 50 | - serial IP load balancing |
53 | ethertap.txt | ||
54 | - the Ethertap user space packet reception and transmission driver | ||
55 | ewrk3.txt | 51 | ewrk3.txt |
56 | - the Digital EtherWORKS 3 DE203/4/5 Ethernet driver | 52 | - the Digital EtherWORKS 3 DE203/4/5 Ethernet driver |
57 | filter.txt | 53 | filter.txt |
@@ -104,8 +100,6 @@ tuntap.txt | |||
104 | - TUN/TAP device driver, allowing user space Rx/Tx of packets. | 100 | - TUN/TAP device driver, allowing user space Rx/Tx of packets. |
105 | vortex.txt | 101 | vortex.txt |
106 | - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards. | 102 | - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards. |
107 | wavelan.txt | ||
108 | - AT&T GIS (nee NCR) WaveLAN card: An Ethernet-like radio transceiver | ||
109 | x25.txt | 103 | x25.txt |
110 | - general info on X.25 development. | 104 | - general info on X.25 development. |
111 | x25-iface.txt | 105 | x25-iface.txt |
diff --git a/Documentation/networking/Makefile b/Documentation/networking/Makefile index 5aba7a33aeeb..24c308dd3fd1 100644 --- a/Documentation/networking/Makefile +++ b/Documentation/networking/Makefile | |||
@@ -4,6 +4,8 @@ obj- := dummy.o | |||
4 | # List of programs to build | 4 | # List of programs to build |
5 | hostprogs-y := ifenslave | 5 | hostprogs-y := ifenslave |
6 | 6 | ||
7 | HOSTCFLAGS_ifenslave.o += -I$(objtree)/usr/include | ||
8 | |||
7 | # Tell kbuild to always build the programs | 9 | # Tell kbuild to always build the programs |
8 | always := $(hostprogs-y) | 10 | always := $(hostprogs-y) |
9 | 11 | ||
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt index 77f0cdd5b0dd..18afcd8afd51 100644 --- a/Documentation/networking/batman-adv.txt +++ b/Documentation/networking/batman-adv.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | [state: 21-11-2010] | 1 | [state: 27-01-2011] |
2 | 2 | ||
3 | BATMAN-ADV | 3 | BATMAN-ADV |
4 | ---------- | 4 | ---------- |
@@ -67,15 +67,16 @@ All mesh wide settings can be found in batman's own interface | |||
67 | folder: | 67 | folder: |
68 | 68 | ||
69 | # ls /sys/class/net/bat0/mesh/ | 69 | # ls /sys/class/net/bat0/mesh/ |
70 | # aggregated_ogms bonding fragmentation orig_interval | 70 | # aggregated_ogms gw_bandwidth hop_penalty |
71 | # vis_mode | 71 | # bonding gw_mode orig_interval |
72 | # fragmentation gw_sel_class vis_mode | ||
72 | 73 | ||
73 | 74 | ||
74 | There is a special folder for debugging informations: | 75 | There is a special folder for debugging informations: |
75 | 76 | ||
76 | # ls /sys/kernel/debug/batman_adv/bat0/ | 77 | # ls /sys/kernel/debug/batman_adv/bat0/ |
77 | # originators socket transtable_global transtable_local | 78 | # gateways socket transtable_global vis_data |
78 | # vis_data | 79 | # originators softif_neigh transtable_local |
79 | 80 | ||
80 | 81 | ||
81 | Some of the files contain all sort of status information regard- | 82 | Some of the files contain all sort of status information regard- |
@@ -230,9 +231,8 @@ CONTACT | |||
230 | Please send us comments, experiences, questions, anything :) | 231 | Please send us comments, experiences, questions, anything :) |
231 | 232 | ||
232 | IRC: #batman on irc.freenode.org | 233 | IRC: #batman on irc.freenode.org |
233 | Mailing-list: b.a.t.m.a.n@b.a.t.m.a.n@lists.open-mesh.org | 234 | Mailing-list: b.a.t.m.a.n@open-mesh.org (optional subscription |
234 | (optional subscription at | 235 | at https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n) |
235 | https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n) | ||
236 | 236 | ||
237 | You can also contact the Authors: | 237 | You can also contact the Authors: |
238 | 238 | ||
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 25d2f4141d27..b36e741e94db 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -2558,18 +2558,15 @@ enslaved. | |||
2558 | 16. Resources and Links | 2558 | 16. Resources and Links |
2559 | ======================= | 2559 | ======================= |
2560 | 2560 | ||
2561 | The latest version of the bonding driver can be found in the latest | 2561 | The latest version of the bonding driver can be found in the latest |
2562 | version of the linux kernel, found on http://kernel.org | 2562 | version of the linux kernel, found on http://kernel.org |
2563 | 2563 | ||
2564 | The latest version of this document can be found in either the latest | 2564 | The latest version of this document can be found in the latest kernel |
2565 | kernel source (named Documentation/networking/bonding.txt), or on the | 2565 | source (named Documentation/networking/bonding.txt). |
2566 | bonding sourceforge site: | ||
2567 | 2566 | ||
2568 | http://www.sourceforge.net/projects/bonding | 2567 | Discussions regarding the usage of the bonding driver take place on the |
2569 | 2568 | bonding-devel mailing list, hosted at sourceforge.net. If you have questions or | |
2570 | Discussions regarding the bonding driver take place primarily on the | 2569 | problems, post them to the list. The list address is: |
2571 | bonding-devel mailing list, hosted at sourceforge.net. If you have | ||
2572 | questions or problems, post them to the list. The list address is: | ||
2573 | 2570 | ||
2574 | bonding-devel@lists.sourceforge.net | 2571 | bonding-devel@lists.sourceforge.net |
2575 | 2572 | ||
@@ -2578,6 +2575,17 @@ be found at: | |||
2578 | 2575 | ||
2579 | https://lists.sourceforge.net/lists/listinfo/bonding-devel | 2576 | https://lists.sourceforge.net/lists/listinfo/bonding-devel |
2580 | 2577 | ||
2578 | Discussions regarding the developpement of the bonding driver take place | ||
2579 | on the main Linux network mailing list, hosted at vger.kernel.org. The list | ||
2580 | address is: | ||
2581 | |||
2582 | netdev@vger.kernel.org | ||
2583 | |||
2584 | The administrative interface (to subscribe or unsubscribe) can | ||
2585 | be found at: | ||
2586 | |||
2587 | http://vger.kernel.org/vger-lists.html#netdev | ||
2588 | |||
2581 | Donald Becker's Ethernet Drivers and diag programs may be found at : | 2589 | Donald Becker's Ethernet Drivers and diag programs may be found at : |
2582 | - http://web.archive.org/web/*/http://www.scyld.com/network/ | 2590 | - http://web.archive.org/web/*/http://www.scyld.com/network/ |
2583 | 2591 | ||
diff --git a/Documentation/networking/dns_resolver.txt b/Documentation/networking/dns_resolver.txt index aefd1e681804..04ca06325b08 100644 --- a/Documentation/networking/dns_resolver.txt +++ b/Documentation/networking/dns_resolver.txt | |||
@@ -61,7 +61,6 @@ before the more general line given above as the first match is the one taken. | |||
61 | create dns_resolver foo:* * /usr/sbin/dns.foo %k | 61 | create dns_resolver foo:* * /usr/sbin/dns.foo %k |
62 | 62 | ||
63 | 63 | ||
64 | |||
65 | ===== | 64 | ===== |
66 | USAGE | 65 | USAGE |
67 | ===== | 66 | ===== |
@@ -104,6 +103,14 @@ implemented in the module can be called after doing: | |||
104 | returned also. | 103 | returned also. |
105 | 104 | ||
106 | 105 | ||
106 | =============================== | ||
107 | READING DNS KEYS FROM USERSPACE | ||
108 | =============================== | ||
109 | |||
110 | Keys of dns_resolver type can be read from userspace using keyctl_read() or | ||
111 | "keyctl read/print/pipe". | ||
112 | |||
113 | |||
107 | ========= | 114 | ========= |
108 | MECHANISM | 115 | MECHANISM |
109 | ========= | 116 | ========= |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index ac3b4a726a1a..d3d653a5f9b9 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -280,6 +280,17 @@ tcp_max_orphans - INTEGER | |||
280 | more aggressively. Let me to remind again: each orphan eats | 280 | more aggressively. Let me to remind again: each orphan eats |
281 | up to ~64K of unswappable memory. | 281 | up to ~64K of unswappable memory. |
282 | 282 | ||
283 | tcp_max_ssthresh - INTEGER | ||
284 | Limited Slow-Start for TCP with large congestion windows (cwnd) defined in | ||
285 | RFC3742. Limited slow-start is a mechanism to limit growth of the cwnd | ||
286 | on the region where cwnd is larger than tcp_max_ssthresh. TCP increases cwnd | ||
287 | by at most tcp_max_ssthresh segments, and by at least tcp_max_ssthresh/2 | ||
288 | segments per RTT when the cwnd is above tcp_max_ssthresh. | ||
289 | If TCP connection increased cwnd to thousands (or tens of thousands) segments, | ||
290 | and thousands of packets were being dropped during slow-start, you can set | ||
291 | tcp_max_ssthresh to improve performance for new TCP connection. | ||
292 | Default: 0 (off) | ||
293 | |||
283 | tcp_max_syn_backlog - INTEGER | 294 | tcp_max_syn_backlog - INTEGER |
284 | Maximal number of remembered connection requests, which are | 295 | Maximal number of remembered connection requests, which are |
285 | still did not receive an acknowledgment from connecting client. | 296 | still did not receive an acknowledgment from connecting client. |
diff --git a/Documentation/networking/phonet.txt b/Documentation/networking/phonet.txt index 24ad2adba6e5..81003581f47a 100644 --- a/Documentation/networking/phonet.txt +++ b/Documentation/networking/phonet.txt | |||
@@ -154,9 +154,28 @@ connections, one per accept()'d socket. | |||
154 | write(cfd, msg, msglen); | 154 | write(cfd, msg, msglen); |
155 | } | 155 | } |
156 | 156 | ||
157 | Connections are established between two endpoints by a "third party" | 157 | Connections are traditionally established between two endpoints by a |
158 | application. This means that both endpoints are passive; so connect() | 158 | "third party" application. This means that both endpoints are passive. |
159 | is not possible. | 159 | |
160 | |||
161 | As of Linux kernel version 2.6.39, it is also possible to connect | ||
162 | two endpoints directly, using connect() on the active side. This is | ||
163 | intended to support the newer Nokia Wireless Modem API, as found in | ||
164 | e.g. the Nokia Slim Modem in the ST-Ericsson U8500 platform: | ||
165 | |||
166 | struct sockaddr_spn spn; | ||
167 | int fd; | ||
168 | |||
169 | fd = socket(PF_PHONET, SOCK_SEQPACKET, PN_PROTO_PIPE); | ||
170 | memset(&spn, 0, sizeof(spn)); | ||
171 | spn.spn_family = AF_PHONET; | ||
172 | spn.spn_obj = ...; | ||
173 | spn.spn_dev = ...; | ||
174 | spn.spn_resource = 0xD9; | ||
175 | connect(fd, (struct sockaddr *)&spn, sizeof(spn)); | ||
176 | /* normal I/O here ... */ | ||
177 | close(fd); | ||
178 | |||
160 | 179 | ||
161 | WARNING: | 180 | WARNING: |
162 | When polling a connected pipe socket for writability, there is an | 181 | When polling a connected pipe socket for writability, there is an |
@@ -181,45 +200,9 @@ The pipe protocol provides two socket options at the SOL_PNPIPE level: | |||
181 | interface index of the network interface created by PNPIPE_ENCAP, | 200 | interface index of the network interface created by PNPIPE_ENCAP, |
182 | or zero if encapsulation is off. | 201 | or zero if encapsulation is off. |
183 | 202 | ||
184 | 203 | PNPIPE_HANDLE is a read-only integer value. It contains the underlying | |
185 | Phonet Pipe-controller Implementation | 204 | identifier ("pipe handle") of the pipe. This is only defined for |
186 | ------------------------------------- | 205 | socket descriptors that are already connected or being connected. |
187 | |||
188 | Phonet Pipe-controller is enabled by selecting the CONFIG_PHONET_PIPECTRLR Kconfig | ||
189 | option. It is useful when communicating with those Nokia Modems which do not | ||
190 | implement Pipe controller in them e.g. Nokia Slim Modem used in ST-Ericsson | ||
191 | U8500 platform. | ||
192 | |||
193 | The implementation is based on the Data Connection Establishment Sequence | ||
194 | depicted in 'Nokia Wireless Modem API - Wireless_modem_user_guide.pdf' | ||
195 | document. | ||
196 | |||
197 | It allows a phonet sequenced socket (host-pep) to initiate a Pipe connection | ||
198 | between itself and a remote pipe-end point (e.g. modem). | ||
199 | |||
200 | The implementation adds socket options at SOL_PNPIPE level: | ||
201 | |||
202 | PNPIPE_PIPE_HANDLE | ||
203 | It accepts an integer argument for setting value of pipe handle. | ||
204 | |||
205 | PNPIPE_ENABLE accepts one integer value (int). If set to zero, the pipe | ||
206 | is disabled. If the value is non-zero, the pipe is enabled. If the pipe | ||
207 | is not (yet) connected, ENOTCONN is error is returned. | ||
208 | |||
209 | The implementation also adds socket 'connect'. On calling the 'connect', pipe | ||
210 | will be created between the source socket and the destination, and the pipe | ||
211 | state will be set to PIPE_DISABLED. | ||
212 | |||
213 | After a pipe has been created and enabled successfully, the Pipe data can be | ||
214 | exchanged between the host-pep and remote-pep (modem). | ||
215 | |||
216 | User-space would typically follow below sequence with Pipe controller:- | ||
217 | -socket | ||
218 | -bind | ||
219 | -setsockopt for PNPIPE_PIPE_HANDLE | ||
220 | -connect | ||
221 | -setsockopt for PNPIPE_ENCAP_IP | ||
222 | -setsockopt for PNPIPE_ENABLE | ||
223 | 206 | ||
224 | 207 | ||
225 | Authors | 208 | Authors |
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt index 57080cd74575..f023ba6bba62 100644 --- a/Documentation/power/devices.txt +++ b/Documentation/power/devices.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | Device Power Management | 1 | Device Power Management |
2 | 2 | ||
3 | Copyright (c) 2010 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. | 3 | Copyright (c) 2010-2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. |
4 | Copyright (c) 2010 Alan Stern <stern@rowland.harvard.edu> | 4 | Copyright (c) 2010 Alan Stern <stern@rowland.harvard.edu> |
5 | 5 | ||
6 | 6 | ||
@@ -159,18 +159,18 @@ matter, and the kernel is responsible for keeping track of it. By contrast, | |||
159 | whether or not a wakeup-capable device should issue wakeup events is a policy | 159 | whether or not a wakeup-capable device should issue wakeup events is a policy |
160 | decision, and it is managed by user space through a sysfs attribute: the | 160 | decision, and it is managed by user space through a sysfs attribute: the |
161 | power/wakeup file. User space can write the strings "enabled" or "disabled" to | 161 | power/wakeup file. User space can write the strings "enabled" or "disabled" to |
162 | set or clear the should_wakeup flag, respectively. Reads from the file will | 162 | set or clear the "should_wakeup" flag, respectively. This file is only present |
163 | return the corresponding string if can_wakeup is true, but if can_wakeup is | 163 | for wakeup-capable devices (i.e. devices whose "can_wakeup" flags are set) |
164 | false then reads will return an empty string, to indicate that the device | 164 | and is created (or removed) by device_set_wakeup_capable(). Reads from the |
165 | doesn't support wakeup events. (But even though the file appears empty, writes | 165 | file will return the corresponding string. |
166 | will still affect the should_wakeup flag.) | ||
167 | 166 | ||
168 | The device_may_wakeup() routine returns true only if both flags are set. | 167 | The device_may_wakeup() routine returns true only if both flags are set. |
169 | Drivers should check this routine when putting devices in a low-power state | 168 | This information is used by subsystems, like the PCI bus type code, to see |
170 | during a system sleep transition, to see whether or not to enable the devices' | 169 | whether or not to enable the devices' wakeup mechanisms. If device wakeup |
171 | wakeup mechanisms. However for runtime power management, wakeup events should | 170 | mechanisms are enabled or disabled directly by drivers, they also should use |
172 | be enabled whenever the device and driver both support them, regardless of the | 171 | device_may_wakeup() to decide what to do during a system sleep transition. |
173 | should_wakeup flag. | 172 | However for runtime power management, wakeup events should be enabled whenever |
173 | the device and driver both support them, regardless of the should_wakeup flag. | ||
174 | 174 | ||
175 | 175 | ||
176 | /sys/devices/.../power/control files | 176 | /sys/devices/.../power/control files |
@@ -249,23 +249,18 @@ various phases always run after tasks have been frozen and before they are | |||
249 | unfrozen. Furthermore, the *_noirq phases run at a time when IRQ handlers have | 249 | unfrozen. Furthermore, the *_noirq phases run at a time when IRQ handlers have |
250 | been disabled (except for those marked with the IRQ_WAKEUP flag). | 250 | been disabled (except for those marked with the IRQ_WAKEUP flag). |
251 | 251 | ||
252 | Most phases use bus, type, and class callbacks (that is, methods defined in | 252 | All phases use bus, type, or class callbacks (that is, methods defined in |
253 | dev->bus->pm, dev->type->pm, and dev->class->pm). The prepare and complete | 253 | dev->bus->pm, dev->type->pm, or dev->class->pm). These callbacks are mutually |
254 | phases are exceptions; they use only bus callbacks. When multiple callbacks | 254 | exclusive, so if the device type provides a struct dev_pm_ops object pointed to |
255 | are used in a phase, they are invoked in the order: <class, type, bus> during | 255 | by its pm field (i.e. both dev->type and dev->type->pm are defined), the |
256 | power-down transitions and in the opposite order during power-up transitions. | 256 | callbacks included in that object (i.e. dev->type->pm) will be used. Otherwise, |
257 | For example, during the suspend phase the PM core invokes | 257 | if the class provides a struct dev_pm_ops object pointed to by its pm field |
258 | 258 | (i.e. both dev->class and dev->class->pm are defined), the PM core will use the | |
259 | dev->class->pm.suspend(dev); | 259 | callbacks from that object (i.e. dev->class->pm). Finally, if the pm fields of |
260 | dev->type->pm.suspend(dev); | 260 | both the device type and class objects are NULL (or those objects do not exist), |
261 | dev->bus->pm.suspend(dev); | 261 | the callbacks provided by the bus (that is, the callbacks from dev->bus->pm) |
262 | 262 | will be used (this allows device types to override callbacks provided by bus | |
263 | before moving on to the next device, whereas during the resume phase the core | 263 | types or classes if necessary). |
264 | invokes | ||
265 | |||
266 | dev->bus->pm.resume(dev); | ||
267 | dev->type->pm.resume(dev); | ||
268 | dev->class->pm.resume(dev); | ||
269 | 264 | ||
270 | These callbacks may in turn invoke device- or driver-specific methods stored in | 265 | These callbacks may in turn invoke device- or driver-specific methods stored in |
271 | dev->driver->pm, but they don't have to. | 266 | dev->driver->pm, but they don't have to. |
@@ -507,6 +502,49 @@ routines. Nevertheless, different callback pointers are used in case there is a | |||
507 | situation where it actually matters. | 502 | situation where it actually matters. |
508 | 503 | ||
509 | 504 | ||
505 | Device Power Domains | ||
506 | -------------------- | ||
507 | Sometimes devices share reference clocks or other power resources. In those | ||
508 | cases it generally is not possible to put devices into low-power states | ||
509 | individually. Instead, a set of devices sharing a power resource can be put | ||
510 | into a low-power state together at the same time by turning off the shared | ||
511 | power resource. Of course, they also need to be put into the full-power state | ||
512 | together, by turning the shared power resource on. A set of devices with this | ||
513 | property is often referred to as a power domain. | ||
514 | |||
515 | Support for power domains is provided through the pwr_domain field of struct | ||
516 | device. This field is a pointer to an object of type struct dev_power_domain, | ||
517 | defined in include/linux/pm.h, providing a set of power management callbacks | ||
518 | analogous to the subsystem-level and device driver callbacks that are executed | ||
519 | for the given device during all power transitions, in addition to the respective | ||
520 | subsystem-level callbacks. Specifically, the power domain "suspend" callbacks | ||
521 | (i.e. ->runtime_suspend(), ->suspend(), ->freeze(), ->poweroff(), etc.) are | ||
522 | executed after the analogous subsystem-level callbacks, while the power domain | ||
523 | "resume" callbacks (i.e. ->runtime_resume(), ->resume(), ->thaw(), ->restore, | ||
524 | etc.) are executed before the analogous subsystem-level callbacks. Error codes | ||
525 | returned by the "suspend" and "resume" power domain callbacks are ignored. | ||
526 | |||
527 | Power domain ->runtime_idle() callback is executed before the subsystem-level | ||
528 | ->runtime_idle() callback and the result returned by it is not ignored. Namely, | ||
529 | if it returns error code, the subsystem-level ->runtime_idle() callback will not | ||
530 | be called and the helper function rpm_idle() executing it will return error | ||
531 | code. This mechanism is intended to help platforms where saving device state | ||
532 | is a time consuming operation and should only be carried out if all devices | ||
533 | in the power domain are idle, before turning off the shared power resource(s). | ||
534 | Namely, the power domain ->runtime_idle() callback may return error code until | ||
535 | the pm_runtime_idle() helper (or its asychronous version) has been called for | ||
536 | all devices in the power domain (it is recommended that the returned error code | ||
537 | be -EBUSY in those cases), preventing the subsystem-level ->runtime_idle() | ||
538 | callback from being run prematurely. | ||
539 | |||
540 | The support for device power domains is only relevant to platforms needing to | ||
541 | use the same subsystem-level (e.g. platform bus type) and device driver power | ||
542 | management callbacks in many different power domain configurations and wanting | ||
543 | to avoid incorporating the support for power domains into the subsystem-level | ||
544 | callbacks. The other platforms need not implement it or take it into account | ||
545 | in any way. | ||
546 | |||
547 | |||
510 | System Devices | 548 | System Devices |
511 | -------------- | 549 | -------------- |
512 | System devices (sysdevs) follow a slightly different API, which can be found in | 550 | System devices (sysdevs) follow a slightly different API, which can be found in |
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt index ffe55ffa540a..654097b130b4 100644 --- a/Documentation/power/runtime_pm.txt +++ b/Documentation/power/runtime_pm.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | Run-time Power Management Framework for I/O Devices | 1 | Run-time Power Management Framework for I/O Devices |
2 | 2 | ||
3 | (C) 2009 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. | 3 | (C) 2009-2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc. |
4 | (C) 2010 Alan Stern <stern@rowland.harvard.edu> | 4 | (C) 2010 Alan Stern <stern@rowland.harvard.edu> |
5 | 5 | ||
6 | 1. Introduction | 6 | 1. Introduction |
@@ -44,11 +44,12 @@ struct dev_pm_ops { | |||
44 | }; | 44 | }; |
45 | 45 | ||
46 | The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks are | 46 | The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks are |
47 | executed by the PM core for either the bus type, or device type (if the bus | 47 | executed by the PM core for either the device type, or the class (if the device |
48 | type's callback is not defined), or device class (if the bus type's and device | 48 | type's struct dev_pm_ops object does not exist), or the bus type (if the |
49 | type's callbacks are not defined) of given device. The bus type, device type | 49 | device type's and class' struct dev_pm_ops objects do not exist) of the given |
50 | and device class callbacks are referred to as subsystem-level callbacks in what | 50 | device (this allows device types to override callbacks provided by bus types or |
51 | follows. | 51 | classes if necessary). The bus type, device type and class callbacks are |
52 | referred to as subsystem-level callbacks in what follows. | ||
52 | 53 | ||
53 | By default, the callbacks are always invoked in process context with interrupts | 54 | By default, the callbacks are always invoked in process context with interrupts |
54 | enabled. However, subsystems can use the pm_runtime_irq_safe() helper function | 55 | enabled. However, subsystems can use the pm_runtime_irq_safe() helper function |
diff --git a/Documentation/power/states.txt b/Documentation/power/states.txt index 34800cc521bf..4416b28630df 100644 --- a/Documentation/power/states.txt +++ b/Documentation/power/states.txt | |||
@@ -62,12 +62,12 @@ setup via another operating system for it to use. Despite the | |||
62 | inconvenience, this method requires minimal work by the kernel, since | 62 | inconvenience, this method requires minimal work by the kernel, since |
63 | the firmware will also handle restoring memory contents on resume. | 63 | the firmware will also handle restoring memory contents on resume. |
64 | 64 | ||
65 | For suspend-to-disk, a mechanism called swsusp called 'swsusp' (Swap | 65 | For suspend-to-disk, a mechanism called 'swsusp' (Swap Suspend) is used |
66 | Suspend) is used to write memory contents to free swap space. | 66 | to write memory contents to free swap space. swsusp has some restrictive |
67 | swsusp has some restrictive requirements, but should work in most | 67 | requirements, but should work in most cases. Some, albeit outdated, |
68 | cases. Some, albeit outdated, documentation can be found in | 68 | documentation can be found in Documentation/power/swsusp.txt. |
69 | Documentation/power/swsusp.txt. Alternatively, userspace can do most | 69 | Alternatively, userspace can do most of the actual suspend to disk work, |
70 | of the actual suspend to disk work, see userland-swsusp.txt. | 70 | see userland-swsusp.txt. |
71 | 71 | ||
72 | Once memory state is written to disk, the system may either enter a | 72 | Once memory state is written to disk, the system may either enter a |
73 | low-power state (like ACPI S4), or it may simply power down. Powering | 73 | low-power state (like ACPI S4), or it may simply power down. Powering |
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX index e3960b8c8689..5620fb5ac425 100644 --- a/Documentation/powerpc/00-INDEX +++ b/Documentation/powerpc/00-INDEX | |||
@@ -5,8 +5,6 @@ please mail me. | |||
5 | 5 | ||
6 | 00-INDEX | 6 | 00-INDEX |
7 | - this file | 7 | - this file |
8 | booting-without-of.txt | ||
9 | - Booting the Linux/ppc kernel without Open Firmware | ||
10 | cpu_features.txt | 8 | cpu_features.txt |
11 | - info on how we support a variety of CPUs with minimal compile-time | 9 | - info on how we support a variety of CPUs with minimal compile-time |
12 | options. | 10 | options. |
@@ -16,8 +14,6 @@ hvcs.txt | |||
16 | - IBM "Hypervisor Virtual Console Server" Installation Guide | 14 | - IBM "Hypervisor Virtual Console Server" Installation Guide |
17 | mpc52xx.txt | 15 | mpc52xx.txt |
18 | - Linux 2.6.x on MPC52xx family | 16 | - Linux 2.6.x on MPC52xx family |
19 | mpc52xx-device-tree-bindings.txt | ||
20 | - MPC5200 Device Tree Bindings | ||
21 | sound.txt | 17 | sound.txt |
22 | - info on sound support under Linux/PPC | 18 | - info on sound support under Linux/PPC |
23 | zImage_layout.txt | 19 | zImage_layout.txt |
diff --git a/Documentation/powerpc/dts-bindings/fsl/mpic.txt b/Documentation/powerpc/dts-bindings/fsl/mpic.txt deleted file mode 100644 index 71e39cf3215b..000000000000 --- a/Documentation/powerpc/dts-bindings/fsl/mpic.txt +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | * OpenPIC and its interrupt numbers on Freescale's e500/e600 cores | ||
2 | |||
3 | The OpenPIC specification does not specify which interrupt source has to | ||
4 | become which interrupt number. This is up to the software implementation | ||
5 | of the interrupt controller. The only requirement is that every | ||
6 | interrupt source has to have an unique interrupt number / vector number. | ||
7 | To accomplish this the current implementation assigns the number zero to | ||
8 | the first source, the number one to the second source and so on until | ||
9 | all interrupt sources have their unique number. | ||
10 | Usually the assigned vector number equals the interrupt number mentioned | ||
11 | in the documentation for a given core / CPU. This is however not true | ||
12 | for the e500 cores (MPC85XX CPUs) where the documentation distinguishes | ||
13 | between internal and external interrupt sources and starts counting at | ||
14 | zero for both of them. | ||
15 | |||
16 | So what to write for external interrupt source X or internal interrupt | ||
17 | source Y into the device tree? Here is an example: | ||
18 | |||
19 | The memory map for the interrupt controller in the MPC8544[0] shows, | ||
20 | that the first interrupt source starts at 0x5_0000 (PIC Register Address | ||
21 | Map-Interrupt Source Configuration Registers). This source becomes the | ||
22 | number zero therefore: | ||
23 | External interrupt 0 = interrupt number 0 | ||
24 | External interrupt 1 = interrupt number 1 | ||
25 | External interrupt 2 = interrupt number 2 | ||
26 | ... | ||
27 | Every interrupt number allocates 0x20 bytes register space. So to get | ||
28 | its number it is sufficient to shift the lower 16bits to right by five. | ||
29 | So for the external interrupt 10 we have: | ||
30 | 0x0140 >> 5 = 10 | ||
31 | |||
32 | After the external sources, the internal sources follow. The in core I2C | ||
33 | controller on the MPC8544 for instance has the internal source number | ||
34 | 27. Oo obtain its interrupt number we take the lower 16bits of its memory | ||
35 | address (0x5_0560) and shift it right: | ||
36 | 0x0560 >> 5 = 43 | ||
37 | |||
38 | Therefore the I2C device node for the MPC8544 CPU has to have the | ||
39 | interrupt number 43 specified in the device tree. | ||
40 | |||
41 | [0] MPC8544E PowerQUICCTM III, Integrated Host Processor Family Reference Manual | ||
42 | MPC8544ERM Rev. 1 10/2007 | ||
diff --git a/Documentation/rtc.txt b/Documentation/rtc.txt index 9104c1062084..250160469d83 100644 --- a/Documentation/rtc.txt +++ b/Documentation/rtc.txt | |||
@@ -178,38 +178,29 @@ RTC class framework, but can't be supported by the older driver. | |||
178 | setting the longer alarm time and enabling its IRQ using a single | 178 | setting the longer alarm time and enabling its IRQ using a single |
179 | request (using the same model as EFI firmware). | 179 | request (using the same model as EFI firmware). |
180 | 180 | ||
181 | * RTC_UIE_ON, RTC_UIE_OFF ... if the RTC offers IRQs, it probably | 181 | * RTC_UIE_ON, RTC_UIE_OFF ... if the RTC offers IRQs, the RTC framework |
182 | also offers update IRQs whenever the "seconds" counter changes. | 182 | will emulate this mechanism. |
183 | If needed, the RTC framework can emulate this mechanism. | ||
184 | 183 | ||
185 | * RTC_PIE_ON, RTC_PIE_OFF, RTC_IRQP_SET, RTC_IRQP_READ ... another | 184 | * RTC_PIE_ON, RTC_PIE_OFF, RTC_IRQP_SET, RTC_IRQP_READ ... these icotls |
186 | feature often accessible with an IRQ line is a periodic IRQ, issued | 185 | are emulated via a kernel hrtimer. |
187 | at settable frequencies (usually 2^N Hz). | ||
188 | 186 | ||
189 | In many cases, the RTC alarm can be a system wake event, used to force | 187 | In many cases, the RTC alarm can be a system wake event, used to force |
190 | Linux out of a low power sleep state (or hibernation) back to a fully | 188 | Linux out of a low power sleep state (or hibernation) back to a fully |
191 | operational state. For example, a system could enter a deep power saving | 189 | operational state. For example, a system could enter a deep power saving |
192 | state until it's time to execute some scheduled tasks. | 190 | state until it's time to execute some scheduled tasks. |
193 | 191 | ||
194 | Note that many of these ioctls need not actually be implemented by your | 192 | Note that many of these ioctls are handled by the common rtc-dev interface. |
195 | driver. The common rtc-dev interface handles many of these nicely if your | 193 | Some common examples: |
196 | driver returns ENOIOCTLCMD. Some common examples: | ||
197 | 194 | ||
198 | * RTC_RD_TIME, RTC_SET_TIME: the read_time/set_time functions will be | 195 | * RTC_RD_TIME, RTC_SET_TIME: the read_time/set_time functions will be |
199 | called with appropriate values. | 196 | called with appropriate values. |
200 | 197 | ||
201 | * RTC_ALM_SET, RTC_ALM_READ, RTC_WKALM_SET, RTC_WKALM_RD: the | 198 | * RTC_ALM_SET, RTC_ALM_READ, RTC_WKALM_SET, RTC_WKALM_RD: gets or sets |
202 | set_alarm/read_alarm functions will be called. | 199 | the alarm rtc_timer. May call the set_alarm driver function. |
203 | 200 | ||
204 | * RTC_IRQP_SET, RTC_IRQP_READ: the irq_set_freq function will be called | 201 | * RTC_IRQP_SET, RTC_IRQP_READ: These are emulated by the generic code. |
205 | to set the frequency while the framework will handle the read for you | ||
206 | since the frequency is stored in the irq_freq member of the rtc_device | ||
207 | structure. Your driver needs to initialize the irq_freq member during | ||
208 | init. Make sure you check the requested frequency is in range of your | ||
209 | hardware in the irq_set_freq function. If it isn't, return -EINVAL. If | ||
210 | you cannot actually change the frequency, do not define irq_set_freq. | ||
211 | 202 | ||
212 | * RTC_PIE_ON, RTC_PIE_OFF: the irq_set_state function will be called. | 203 | * RTC_PIE_ON, RTC_PIE_OFF: These are also emulated by the generic code. |
213 | 204 | ||
214 | If all else fails, check out the rtc-test.c driver! | 205 | If all else fails, check out the rtc-test.c driver! |
215 | 206 | ||
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas index b64d10d221ec..4d9ce73ff730 100644 --- a/Documentation/scsi/ChangeLog.megaraid_sas +++ b/Documentation/scsi/ChangeLog.megaraid_sas | |||
@@ -1,3 +1,26 @@ | |||
1 | Release Date : Thu. Feb 24, 2011 17:00:00 PST 2010 - | ||
2 | (emaild-id:megaraidlinux@lsi.com) | ||
3 | Adam Radford | ||
4 | Current Version : 00.00.05.34-rc1 | ||
5 | Old Version : 00.00.05.29-rc1 | ||
6 | 1. Fix some failure gotos from megasas_probe_one(), etc. | ||
7 | 2. Add missing check_and_restore_queue_depth() call in | ||
8 | complete_cmd_fusion(). | ||
9 | 3. Enable MSI-X before calling megasas_init_fw(). | ||
10 | 4. Call tasklet_schedule() even if outbound_intr_status == 0 for MFI based | ||
11 | boards in MSI-X mode. | ||
12 | 5. Fix megasas_probe_one() to clear PCI_MSIX_FLAGS_ENABLE in msi control | ||
13 | register in kdump kernel. | ||
14 | 6. Fix megasas_get_cmd() to only print "Command pool empty" if | ||
15 | megasas_dbg_lvl is set. | ||
16 | 7. Fix megasas_build_dcdb_fusion() to not filter by TYPE_DISK. | ||
17 | 8. Fix megasas_build_dcdb_fusion() to use io_request->LUN[1] field. | ||
18 | 9. Add MR_EVT_CFG_CLEARED to megasas_aen_polling(). | ||
19 | 10. Fix tasklet_init() in megasas_init_fw() to use instancet->tasklet. | ||
20 | 11. Fix fault state handling in megasas_transition_to_ready(). | ||
21 | 12. Fix max_sectors setting for IEEE SGL's. | ||
22 | 13. Fix iMR OCR support to work correctly. | ||
23 | ------------------------------------------------------------------------------- | ||
1 | Release Date : Tues. Dec 14, 2010 17:00:00 PST 2010 - | 24 | Release Date : Tues. Dec 14, 2010 17:00:00 PST 2010 - |
2 | (emaild-id:megaraidlinux@lsi.com) | 25 | (emaild-id:megaraidlinux@lsi.com) |
3 | Adam Radford | 26 | Adam Radford |
diff --git a/Documentation/scsi/hpsa.txt b/Documentation/scsi/hpsa.txt index dca658362cbf..891435a72fce 100644 --- a/Documentation/scsi/hpsa.txt +++ b/Documentation/scsi/hpsa.txt | |||
@@ -28,6 +28,12 @@ boot parameter "hpsa_allow_any=1" is specified, however these are not tested | |||
28 | nor supported by HP with this driver. For older Smart Arrays, the cciss | 28 | nor supported by HP with this driver. For older Smart Arrays, the cciss |
29 | driver should still be used. | 29 | driver should still be used. |
30 | 30 | ||
31 | The "hpsa_simple_mode=1" boot parameter may be used to prevent the driver from | ||
32 | putting the controller into "performant" mode. The difference is that with simple | ||
33 | mode, each command completion requires an interrupt, while with "performant mode" | ||
34 | (the default, and ordinarily better performing) it is possible to have multiple | ||
35 | command completions indicated by a single interrupt. | ||
36 | |||
31 | HPSA specific entries in /sys | 37 | HPSA specific entries in /sys |
32 | ----------------------------- | 38 | ----------------------------- |
33 | 39 | ||
@@ -39,6 +45,8 @@ HPSA specific entries in /sys | |||
39 | 45 | ||
40 | /sys/class/scsi_host/host*/rescan | 46 | /sys/class/scsi_host/host*/rescan |
41 | /sys/class/scsi_host/host*/firmware_revision | 47 | /sys/class/scsi_host/host*/firmware_revision |
48 | /sys/class/scsi_host/host*/resettable | ||
49 | /sys/class/scsi_host/host*/transport_mode | ||
42 | 50 | ||
43 | the host "rescan" attribute is a write only attribute. Writing to this | 51 | the host "rescan" attribute is a write only attribute. Writing to this |
44 | attribute will cause the driver to scan for new, changed, or removed devices | 52 | attribute will cause the driver to scan for new, changed, or removed devices |
@@ -55,6 +63,21 @@ HPSA specific entries in /sys | |||
55 | root@host:/sys/class/scsi_host/host4# cat firmware_revision | 63 | root@host:/sys/class/scsi_host/host4# cat firmware_revision |
56 | 7.14 | 64 | 7.14 |
57 | 65 | ||
66 | The transport_mode indicates whether the controller is in "performant" | ||
67 | or "simple" mode. This is controlled by the "hpsa_simple_mode" module | ||
68 | parameter. | ||
69 | |||
70 | The "resettable" read-only attribute indicates whether a particular | ||
71 | controller is able to honor the "reset_devices" kernel parameter. If the | ||
72 | device is resettable, this file will contain a "1", otherwise, a "0". This | ||
73 | parameter is used by kdump, for example, to reset the controller at driver | ||
74 | load time to eliminate any outstanding commands on the controller and get the | ||
75 | controller into a known state so that the kdump initiated i/o will work right | ||
76 | and not be disrupted in any way by stale commands or other stale state | ||
77 | remaining on the controller from the previous kernel. This attribute enables | ||
78 | kexec tools to warn the user if they attempt to designate a device which is | ||
79 | unable to honor the reset_devices kernel parameter as a dump device. | ||
80 | |||
58 | HPSA specific disk attributes: | 81 | HPSA specific disk attributes: |
59 | ------------------------------ | 82 | ------------------------------ |
60 | 83 | ||
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt index df322c103466..5f17d29c59b5 100644 --- a/Documentation/scsi/scsi_mid_low_api.txt +++ b/Documentation/scsi/scsi_mid_low_api.txt | |||
@@ -1343,7 +1343,7 @@ Members of interest: | |||
1343 | underruns (overruns should be rare). If possible an LLD | 1343 | underruns (overruns should be rare). If possible an LLD |
1344 | should set 'resid' prior to invoking 'done'. The most | 1344 | should set 'resid' prior to invoking 'done'. The most |
1345 | interesting case is data transfers from a SCSI target | 1345 | interesting case is data transfers from a SCSI target |
1346 | device device (i.e. READs) that underrun. | 1346 | device (e.g. READs) that underrun. |
1347 | underflow - LLD should place (DID_ERROR << 16) in 'result' if | 1347 | underflow - LLD should place (DID_ERROR << 16) in 'result' if |
1348 | actual number of bytes transferred is less than this | 1348 | actual number of bytes transferred is less than this |
1349 | figure. Not many LLDs implement this check and some that | 1349 | figure. Not many LLDs implement this check and some that |
@@ -1351,6 +1351,18 @@ Members of interest: | |||
1351 | report a DID_ERROR. Better for an LLD to implement | 1351 | report a DID_ERROR. Better for an LLD to implement |
1352 | 'resid'. | 1352 | 'resid'. |
1353 | 1353 | ||
1354 | It is recommended that a LLD set 'resid' on data transfers from a SCSI | ||
1355 | target device (e.g. READs). It is especially important that 'resid' is set | ||
1356 | when such data transfers have sense keys of MEDIUM ERROR and HARDWARE ERROR | ||
1357 | (and possibly RECOVERED ERROR). In these cases if a LLD is in doubt how much | ||
1358 | data has been received then the safest approach is to indicate no bytes have | ||
1359 | been received. For example: to indicate that no valid data has been received | ||
1360 | a LLD might use these helpers: | ||
1361 | scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); | ||
1362 | where 'SCpnt' is a pointer to a scsi_cmnd object. To indicate only three 512 | ||
1363 | bytes blocks has been received 'resid' could be set like this: | ||
1364 | scsi_set_resid(SCpnt, scsi_bufflen(SCpnt) - (3 * 512)); | ||
1365 | |||
1354 | The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h | 1366 | The scsi_cmnd structure is defined in include/scsi/scsi_cmnd.h |
1355 | 1367 | ||
1356 | 1368 | ||
diff --git a/Documentation/serial/n_gsm.txt b/Documentation/serial/n_gsm.txt new file mode 100644 index 000000000000..397f41a1f153 --- /dev/null +++ b/Documentation/serial/n_gsm.txt | |||
@@ -0,0 +1,89 @@ | |||
1 | n_gsm.c GSM 0710 tty multiplexor HOWTO | ||
2 | =================================================== | ||
3 | |||
4 | This line discipline implements the GSM 07.10 multiplexing protocol | ||
5 | detailed in the following 3GPP document : | ||
6 | http://www.3gpp.org/ftp/Specs/archive/07_series/07.10/0710-720.zip | ||
7 | |||
8 | This document give some hints on how to use this driver with GPRS and 3G | ||
9 | modems connected to a physical serial port. | ||
10 | |||
11 | How to use it | ||
12 | ------------- | ||
13 | 1- initialize the modem in 0710 mux mode (usually AT+CMUX= command) through | ||
14 | its serial port. Depending on the modem used, you can pass more or less | ||
15 | parameters to this command, | ||
16 | 2- switch the serial line to using the n_gsm line discipline by using | ||
17 | TIOCSETD ioctl, | ||
18 | 3- configure the mux using GSMIOC_GETCONF / GSMIOC_SETCONF ioctl, | ||
19 | |||
20 | Major parts of the initialization program : | ||
21 | (a good starting point is util-linux-ng/sys-utils/ldattach.c) | ||
22 | #include <linux/gsmmux.h> | ||
23 | #define N_GSM0710 21 /* GSM 0710 Mux */ | ||
24 | #define DEFAULT_SPEED B115200 | ||
25 | #define SERIAL_PORT /dev/ttyS0 | ||
26 | |||
27 | int ldisc = N_GSM0710; | ||
28 | struct gsm_config c; | ||
29 | struct termios configuration; | ||
30 | |||
31 | /* open the serial port connected to the modem */ | ||
32 | fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY); | ||
33 | |||
34 | /* configure the serial port : speed, flow control ... */ | ||
35 | |||
36 | /* send the AT commands to switch the modem to CMUX mode | ||
37 | and check that it's succesful (should return OK) */ | ||
38 | write(fd, "AT+CMUX=0\r", 10); | ||
39 | |||
40 | /* experience showed that some modems need some time before | ||
41 | being able to answer to the first MUX packet so a delay | ||
42 | may be needed here in some case */ | ||
43 | sleep(3); | ||
44 | |||
45 | /* use n_gsm line discipline */ | ||
46 | ioctl(fd, TIOCSETD, &ldisc); | ||
47 | |||
48 | /* get n_gsm configuration */ | ||
49 | ioctl(fd, GSMIOC_GETCONF, &c); | ||
50 | /* we are initiator and need encoding 0 (basic) */ | ||
51 | c.initiator = 1; | ||
52 | c.encapsulation = 0; | ||
53 | /* our modem defaults to a maximum size of 127 bytes */ | ||
54 | c.mru = 127; | ||
55 | c.mtu = 127; | ||
56 | /* set the new configuration */ | ||
57 | ioctl(fd, GSMIOC_SETCONF, &c); | ||
58 | |||
59 | /* and wait for ever to keep the line discipline enabled */ | ||
60 | daemon(0,0); | ||
61 | pause(); | ||
62 | |||
63 | 4- create the devices corresponding to the "virtual" serial ports (take care, | ||
64 | each modem has its configuration and some DLC have dedicated functions, | ||
65 | for example GPS), starting with minor 1 (DLC0 is reserved for the management | ||
66 | of the mux) | ||
67 | |||
68 | MAJOR=`cat /proc/devices |grep gsmtty | awk '{print $1}` | ||
69 | for i in `seq 1 4`; do | ||
70 | mknod /dev/ttygsm$i c $MAJOR $i | ||
71 | done | ||
72 | |||
73 | 5- use these devices as plain serial ports. | ||
74 | for example, it's possible : | ||
75 | - and to use gnokii to send / receive SMS on ttygsm1 | ||
76 | - to use ppp to establish a datalink on ttygsm2 | ||
77 | |||
78 | 6- first close all virtual ports before closing the physical port. | ||
79 | |||
80 | Additional Documentation | ||
81 | ------------------------ | ||
82 | More practical details on the protocol and how it's supported by industrial | ||
83 | modems can be found in the following documents : | ||
84 | http://www.telit.com/module/infopool/download.php?id=616 | ||
85 | http://www.u-blox.com/images/downloads/Product_Docs/LEON-G100-G200-MuxImplementation_ApplicationNote_%28GSM%20G1-CS-10002%29.pdf | ||
86 | http://www.sierrawireless.com/Support/Downloads/AirPrime/WMP_Series/~/media/Support_Downloads/AirPrime/Application_notes/CMUX_Feature_Application_Note-Rev004.ashx | ||
87 | http://wm.sim.com/sim/News/photo/2010721161442.pdf | ||
88 | |||
89 | 11-03-08 - Eric B茅nard - <eric@eukrea.com> | ||
diff --git a/Documentation/spinlocks.txt b/Documentation/spinlocks.txt index 178c831b907d..2e3c64b1a6a5 100644 --- a/Documentation/spinlocks.txt +++ b/Documentation/spinlocks.txt | |||
@@ -86,7 +86,7 @@ to change the variables it has to get an exclusive write lock. | |||
86 | 86 | ||
87 | The routines look the same as above: | 87 | The routines look the same as above: |
88 | 88 | ||
89 | rwlock_t xxx_lock = RW_LOCK_UNLOCKED; | 89 | rwlock_t xxx_lock = __RW_LOCK_UNLOCKED(xxx_lock); |
90 | 90 | ||
91 | unsigned long flags; | 91 | unsigned long flags; |
92 | 92 | ||
@@ -196,25 +196,3 @@ appropriate: | |||
196 | 196 | ||
197 | For static initialization, use DEFINE_SPINLOCK() / DEFINE_RWLOCK() or | 197 | For static initialization, use DEFINE_SPINLOCK() / DEFINE_RWLOCK() or |
198 | __SPIN_LOCK_UNLOCKED() / __RW_LOCK_UNLOCKED() as appropriate. | 198 | __SPIN_LOCK_UNLOCKED() / __RW_LOCK_UNLOCKED() as appropriate. |
199 | |||
200 | SPIN_LOCK_UNLOCKED and RW_LOCK_UNLOCKED are deprecated. These interfere | ||
201 | with lockdep state tracking. | ||
202 | |||
203 | Most of the time, you can simply turn: | ||
204 | static spinlock_t xxx_lock = SPIN_LOCK_UNLOCKED; | ||
205 | into: | ||
206 | static DEFINE_SPINLOCK(xxx_lock); | ||
207 | |||
208 | Static structure member variables go from: | ||
209 | |||
210 | struct foo bar { | ||
211 | .lock = SPIN_LOCK_UNLOCKED; | ||
212 | }; | ||
213 | |||
214 | to: | ||
215 | |||
216 | struct foo bar { | ||
217 | .lock = __SPIN_LOCK_UNLOCKED(bar.lock); | ||
218 | }; | ||
219 | |||
220 | Declaration of static rw_locks undergo a similar transformation. | ||
diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt index 62682500878a..4af0614147ef 100644 --- a/Documentation/sysctl/fs.txt +++ b/Documentation/sysctl/fs.txt | |||
@@ -88,20 +88,19 @@ you might want to raise the limit. | |||
88 | 88 | ||
89 | file-max & file-nr: | 89 | file-max & file-nr: |
90 | 90 | ||
91 | The kernel allocates file handles dynamically, but as yet it | ||
92 | doesn't free them again. | ||
93 | |||
94 | The value in file-max denotes the maximum number of file- | 91 | The value in file-max denotes the maximum number of file- |
95 | handles that the Linux kernel will allocate. When you get lots | 92 | handles that the Linux kernel will allocate. When you get lots |
96 | of error messages about running out of file handles, you might | 93 | of error messages about running out of file handles, you might |
97 | want to increase this limit. | 94 | want to increase this limit. |
98 | 95 | ||
99 | Historically, the three values in file-nr denoted the number of | 96 | Historically,the kernel was able to allocate file handles |
100 | allocated file handles, the number of allocated but unused file | 97 | dynamically, but not to free them again. The three values in |
101 | handles, and the maximum number of file handles. Linux 2.6 always | 98 | file-nr denote the number of allocated file handles, the number |
102 | reports 0 as the number of free file handles -- this is not an | 99 | of allocated but unused file handles, and the maximum number of |
103 | error, it just means that the number of allocated file handles | 100 | file handles. Linux 2.6 always reports 0 as the number of free |
104 | exactly matches the number of used file handles. | 101 | file handles -- this is not an error, it just means that the |
102 | number of allocated file handles exactly matches the number of | ||
103 | used file handles. | ||
105 | 104 | ||
106 | Attempts to allocate more file descriptors than file-max are | 105 | Attempts to allocate more file descriptors than file-max are |
107 | reported with printk, look for "VFS: file-max limit <number> | 106 | reported with printk, look for "VFS: file-max limit <number> |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 11d5ceda5bb0..36f007514db3 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -367,7 +367,7 @@ the different loglevels. | |||
367 | 367 | ||
368 | - console_loglevel: messages with a higher priority than | 368 | - console_loglevel: messages with a higher priority than |
369 | this will be printed to the console | 369 | this will be printed to the console |
370 | - default_message_level: messages without an explicit priority | 370 | - default_message_loglevel: messages without an explicit priority |
371 | will be printed with this priority | 371 | will be printed with this priority |
372 | - minimum_console_loglevel: minimum (highest) value to which | 372 | - minimum_console_loglevel: minimum (highest) value to which |
373 | console_loglevel can be set | 373 | console_loglevel can be set |
diff --git a/Documentation/trace/ftrace-design.txt b/Documentation/trace/ftrace-design.txt index dc52bd442c92..79fcafc7fd64 100644 --- a/Documentation/trace/ftrace-design.txt +++ b/Documentation/trace/ftrace-design.txt | |||
@@ -247,6 +247,13 @@ You need very few things to get the syscalls tracing in an arch. | |||
247 | - Support the TIF_SYSCALL_TRACEPOINT thread flags. | 247 | - Support the TIF_SYSCALL_TRACEPOINT thread flags. |
248 | - Put the trace_sys_enter() and trace_sys_exit() tracepoints calls from ptrace | 248 | - Put the trace_sys_enter() and trace_sys_exit() tracepoints calls from ptrace |
249 | in the ptrace syscalls tracing path. | 249 | in the ptrace syscalls tracing path. |
250 | - If the system call table on this arch is more complicated than a simple array | ||
251 | of addresses of the system calls, implement an arch_syscall_addr to return | ||
252 | the address of a given system call. | ||
253 | - If the symbol names of the system calls do not match the function names on | ||
254 | this arch, define ARCH_HAS_SYSCALL_MATCH_SYM_NAME in asm/ftrace.h and | ||
255 | implement arch_syscall_match_sym_name with the appropriate logic to return | ||
256 | true if the function name corresponds with the symbol name. | ||
250 | - Tag this arch as HAVE_SYSCALL_TRACEPOINTS. | 257 | - Tag this arch as HAVE_SYSCALL_TRACEPOINTS. |
251 | 258 | ||
252 | 259 | ||
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index 557c1edeccaf..1ebc24cf9a55 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt | |||
@@ -80,11 +80,11 @@ of ftrace. Here is a list of some of the key files: | |||
80 | tracers listed here can be configured by | 80 | tracers listed here can be configured by |
81 | echoing their name into current_tracer. | 81 | echoing their name into current_tracer. |
82 | 82 | ||
83 | tracing_enabled: | 83 | tracing_on: |
84 | 84 | ||
85 | This sets or displays whether the current_tracer | 85 | This sets or displays whether writing to the trace |
86 | is activated and tracing or not. Echo 0 into this | 86 | ring buffer is enabled. Echo 0 into this file to disable |
87 | file to disable the tracer or 1 to enable it. | 87 | the tracer or 1 to enable it. |
88 | 88 | ||
89 | trace: | 89 | trace: |
90 | 90 | ||
@@ -202,10 +202,6 @@ Here is the list of current tracers that may be configured. | |||
202 | to draw a graph of function calls similar to C code | 202 | to draw a graph of function calls similar to C code |
203 | source. | 203 | source. |
204 | 204 | ||
205 | "sched_switch" | ||
206 | |||
207 | Traces the context switches and wakeups between tasks. | ||
208 | |||
209 | "irqsoff" | 205 | "irqsoff" |
210 | 206 | ||
211 | Traces the areas that disable interrupts and saves | 207 | Traces the areas that disable interrupts and saves |
@@ -273,39 +269,6 @@ format, the function name that was traced "path_put" and the | |||
273 | parent function that called this function "path_walk". The | 269 | parent function that called this function "path_walk". The |
274 | timestamp is the time at which the function was entered. | 270 | timestamp is the time at which the function was entered. |
275 | 271 | ||
276 | The sched_switch tracer also includes tracing of task wakeups | ||
277 | and context switches. | ||
278 | |||
279 | ksoftirqd/1-7 [01] 1453.070013: 7:115:R + 2916:115:S | ||
280 | ksoftirqd/1-7 [01] 1453.070013: 7:115:R + 10:115:S | ||
281 | ksoftirqd/1-7 [01] 1453.070013: 7:115:R ==> 10:115:R | ||
282 | events/1-10 [01] 1453.070013: 10:115:S ==> 2916:115:R | ||
283 | kondemand/1-2916 [01] 1453.070013: 2916:115:S ==> 7:115:R | ||
284 | ksoftirqd/1-7 [01] 1453.070013: 7:115:S ==> 0:140:R | ||
285 | |||
286 | Wake ups are represented by a "+" and the context switches are | ||
287 | shown as "==>". The format is: | ||
288 | |||
289 | Context switches: | ||
290 | |||
291 | Previous task Next Task | ||
292 | |||
293 | <pid>:<prio>:<state> ==> <pid>:<prio>:<state> | ||
294 | |||
295 | Wake ups: | ||
296 | |||
297 | Current task Task waking up | ||
298 | |||
299 | <pid>:<prio>:<state> + <pid>:<prio>:<state> | ||
300 | |||
301 | The prio is the internal kernel priority, which is the inverse | ||
302 | of the priority that is usually displayed by user-space tools. | ||
303 | Zero represents the highest priority (99). Prio 100 starts the | ||
304 | "nice" priorities with 100 being equal to nice -20 and 139 being | ||
305 | nice 19. The prio "140" is reserved for the idle task which is | ||
306 | the lowest priority thread (pid 0). | ||
307 | |||
308 | |||
309 | Latency trace format | 272 | Latency trace format |
310 | -------------------- | 273 | -------------------- |
311 | 274 | ||
@@ -491,78 +454,10 @@ x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6] | |||
491 | latencies, as described in "Latency | 454 | latencies, as described in "Latency |
492 | trace format". | 455 | trace format". |
493 | 456 | ||
494 | sched_switch | 457 | overwrite - This controls what happens when the trace buffer is |
495 | ------------ | 458 | full. If "1" (default), the oldest events are |
496 | 459 | discarded and overwritten. If "0", then the newest | |
497 | This tracer simply records schedule switches. Here is an example | 460 | events are discarded. |
498 | of how to use it. | ||
499 | |||
500 | # echo sched_switch > current_tracer | ||
501 | # echo 1 > tracing_enabled | ||
502 | # sleep 1 | ||
503 | # echo 0 > tracing_enabled | ||
504 | # cat trace | ||
505 | |||
506 | # tracer: sched_switch | ||
507 | # | ||
508 | # TASK-PID CPU# TIMESTAMP FUNCTION | ||
509 | # | | | | | | ||
510 | bash-3997 [01] 240.132281: 3997:120:R + 4055:120:R | ||
511 | bash-3997 [01] 240.132284: 3997:120:R ==> 4055:120:R | ||
512 | sleep-4055 [01] 240.132371: 4055:120:S ==> 3997:120:R | ||
513 | bash-3997 [01] 240.132454: 3997:120:R + 4055:120:S | ||
514 | bash-3997 [01] 240.132457: 3997:120:R ==> 4055:120:R | ||
515 | sleep-4055 [01] 240.132460: 4055:120:D ==> 3997:120:R | ||
516 | bash-3997 [01] 240.132463: 3997:120:R + 4055:120:D | ||
517 | bash-3997 [01] 240.132465: 3997:120:R ==> 4055:120:R | ||
518 | <idle>-0 [00] 240.132589: 0:140:R + 4:115:S | ||
519 | <idle>-0 [00] 240.132591: 0:140:R ==> 4:115:R | ||
520 | ksoftirqd/0-4 [00] 240.132595: 4:115:S ==> 0:140:R | ||
521 | <idle>-0 [00] 240.132598: 0:140:R + 4:115:S | ||
522 | <idle>-0 [00] 240.132599: 0:140:R ==> 4:115:R | ||
523 | ksoftirqd/0-4 [00] 240.132603: 4:115:S ==> 0:140:R | ||
524 | sleep-4055 [01] 240.133058: 4055:120:S ==> 3997:120:R | ||
525 | [...] | ||
526 | |||
527 | |||
528 | As we have discussed previously about this format, the header | ||
529 | shows the name of the trace and points to the options. The | ||
530 | "FUNCTION" is a misnomer since here it represents the wake ups | ||
531 | and context switches. | ||
532 | |||
533 | The sched_switch file only lists the wake ups (represented with | ||
534 | '+') and context switches ('==>') with the previous task or | ||
535 | current task first followed by the next task or task waking up. | ||
536 | The format for both of these is PID:KERNEL-PRIO:TASK-STATE. | ||
537 | Remember that the KERNEL-PRIO is the inverse of the actual | ||
538 | priority with zero (0) being the highest priority and the nice | ||
539 | values starting at 100 (nice -20). Below is a quick chart to map | ||
540 | the kernel priority to user land priorities. | ||
541 | |||
542 | Kernel Space User Space | ||
543 | =============================================================== | ||
544 | 0(high) to 98(low) user RT priority 99(high) to 1(low) | ||
545 | with SCHED_RR or SCHED_FIFO | ||
546 | --------------------------------------------------------------- | ||
547 | 99 sched_priority is not used in scheduling | ||
548 | decisions(it must be specified as 0) | ||
549 | --------------------------------------------------------------- | ||
550 | 100(high) to 139(low) user nice -20(high) to 19(low) | ||
551 | --------------------------------------------------------------- | ||
552 | 140 idle task priority | ||
553 | --------------------------------------------------------------- | ||
554 | |||
555 | The task states are: | ||
556 | |||
557 | R - running : wants to run, may not actually be running | ||
558 | S - sleep : process is waiting to be woken up (handles signals) | ||
559 | D - disk sleep (uninterruptible sleep) : process must be woken up | ||
560 | (ignores signals) | ||
561 | T - stopped : process suspended | ||
562 | t - traced : process is being traced (with something like gdb) | ||
563 | Z - zombie : process waiting to be cleaned up | ||
564 | X - unknown | ||
565 | |||
566 | 461 | ||
567 | ftrace_enabled | 462 | ftrace_enabled |
568 | -------------- | 463 | -------------- |
@@ -607,10 +502,10 @@ an example: | |||
607 | # echo irqsoff > current_tracer | 502 | # echo irqsoff > current_tracer |
608 | # echo latency-format > trace_options | 503 | # echo latency-format > trace_options |
609 | # echo 0 > tracing_max_latency | 504 | # echo 0 > tracing_max_latency |
610 | # echo 1 > tracing_enabled | 505 | # echo 1 > tracing_on |
611 | # ls -ltr | 506 | # ls -ltr |
612 | [...] | 507 | [...] |
613 | # echo 0 > tracing_enabled | 508 | # echo 0 > tracing_on |
614 | # cat trace | 509 | # cat trace |
615 | # tracer: irqsoff | 510 | # tracer: irqsoff |
616 | # | 511 | # |
@@ -715,10 +610,10 @@ is much like the irqsoff tracer. | |||
715 | # echo preemptoff > current_tracer | 610 | # echo preemptoff > current_tracer |
716 | # echo latency-format > trace_options | 611 | # echo latency-format > trace_options |
717 | # echo 0 > tracing_max_latency | 612 | # echo 0 > tracing_max_latency |
718 | # echo 1 > tracing_enabled | 613 | # echo 1 > tracing_on |
719 | # ls -ltr | 614 | # ls -ltr |
720 | [...] | 615 | [...] |
721 | # echo 0 > tracing_enabled | 616 | # echo 0 > tracing_on |
722 | # cat trace | 617 | # cat trace |
723 | # tracer: preemptoff | 618 | # tracer: preemptoff |
724 | # | 619 | # |
@@ -863,10 +758,10 @@ tracers. | |||
863 | # echo preemptirqsoff > current_tracer | 758 | # echo preemptirqsoff > current_tracer |
864 | # echo latency-format > trace_options | 759 | # echo latency-format > trace_options |
865 | # echo 0 > tracing_max_latency | 760 | # echo 0 > tracing_max_latency |
866 | # echo 1 > tracing_enabled | 761 | # echo 1 > tracing_on |
867 | # ls -ltr | 762 | # ls -ltr |
868 | [...] | 763 | [...] |
869 | # echo 0 > tracing_enabled | 764 | # echo 0 > tracing_on |
870 | # cat trace | 765 | # cat trace |
871 | # tracer: preemptirqsoff | 766 | # tracer: preemptirqsoff |
872 | # | 767 | # |
@@ -1026,9 +921,9 @@ Instead of performing an 'ls', we will run 'sleep 1' under | |||
1026 | # echo wakeup > current_tracer | 921 | # echo wakeup > current_tracer |
1027 | # echo latency-format > trace_options | 922 | # echo latency-format > trace_options |
1028 | # echo 0 > tracing_max_latency | 923 | # echo 0 > tracing_max_latency |
1029 | # echo 1 > tracing_enabled | 924 | # echo 1 > tracing_on |
1030 | # chrt -f 5 sleep 1 | 925 | # chrt -f 5 sleep 1 |
1031 | # echo 0 > tracing_enabled | 926 | # echo 0 > tracing_on |
1032 | # cat trace | 927 | # cat trace |
1033 | # tracer: wakeup | 928 | # tracer: wakeup |
1034 | # | 929 | # |
@@ -1140,9 +1035,9 @@ ftrace_enabled is set; otherwise this tracer is a nop. | |||
1140 | 1035 | ||
1141 | # sysctl kernel.ftrace_enabled=1 | 1036 | # sysctl kernel.ftrace_enabled=1 |
1142 | # echo function > current_tracer | 1037 | # echo function > current_tracer |
1143 | # echo 1 > tracing_enabled | 1038 | # echo 1 > tracing_on |
1144 | # usleep 1 | 1039 | # usleep 1 |
1145 | # echo 0 > tracing_enabled | 1040 | # echo 0 > tracing_on |
1146 | # cat trace | 1041 | # cat trace |
1147 | # tracer: function | 1042 | # tracer: function |
1148 | # | 1043 | # |
@@ -1180,7 +1075,7 @@ int trace_fd; | |||
1180 | [...] | 1075 | [...] |
1181 | int main(int argc, char *argv[]) { | 1076 | int main(int argc, char *argv[]) { |
1182 | [...] | 1077 | [...] |
1183 | trace_fd = open(tracing_file("tracing_enabled"), O_WRONLY); | 1078 | trace_fd = open(tracing_file("tracing_on"), O_WRONLY); |
1184 | [...] | 1079 | [...] |
1185 | if (condition_hit()) { | 1080 | if (condition_hit()) { |
1186 | write(trace_fd, "0", 1); | 1081 | write(trace_fd, "0", 1); |
@@ -1631,9 +1526,9 @@ If I am only interested in sys_nanosleep and hrtimer_interrupt: | |||
1631 | # echo sys_nanosleep hrtimer_interrupt \ | 1526 | # echo sys_nanosleep hrtimer_interrupt \ |
1632 | > set_ftrace_filter | 1527 | > set_ftrace_filter |
1633 | # echo function > current_tracer | 1528 | # echo function > current_tracer |
1634 | # echo 1 > tracing_enabled | 1529 | # echo 1 > tracing_on |
1635 | # usleep 1 | 1530 | # usleep 1 |
1636 | # echo 0 > tracing_enabled | 1531 | # echo 0 > tracing_on |
1637 | # cat trace | 1532 | # cat trace |
1638 | # tracer: ftrace | 1533 | # tracer: ftrace |
1639 | # | 1534 | # |
@@ -1879,9 +1774,9 @@ different. The trace is live. | |||
1879 | # echo function > current_tracer | 1774 | # echo function > current_tracer |
1880 | # cat trace_pipe > /tmp/trace.out & | 1775 | # cat trace_pipe > /tmp/trace.out & |
1881 | [1] 4153 | 1776 | [1] 4153 |
1882 | # echo 1 > tracing_enabled | 1777 | # echo 1 > tracing_on |
1883 | # usleep 1 | 1778 | # usleep 1 |
1884 | # echo 0 > tracing_enabled | 1779 | # echo 0 > tracing_on |
1885 | # cat trace | 1780 | # cat trace |
1886 | # tracer: function | 1781 | # tracer: function |
1887 | # | 1782 | # |
diff --git a/Documentation/trace/kprobetrace.txt b/Documentation/trace/kprobetrace.txt index 5f77d94598dd..6d27ab8d6e9f 100644 --- a/Documentation/trace/kprobetrace.txt +++ b/Documentation/trace/kprobetrace.txt | |||
@@ -42,11 +42,25 @@ Synopsis of kprobe_events | |||
42 | +|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address.(**) | 42 | +|-offs(FETCHARG) : Fetch memory at FETCHARG +|- offs address.(**) |
43 | NAME=FETCHARG : Set NAME as the argument name of FETCHARG. | 43 | NAME=FETCHARG : Set NAME as the argument name of FETCHARG. |
44 | FETCHARG:TYPE : Set TYPE as the type of FETCHARG. Currently, basic types | 44 | FETCHARG:TYPE : Set TYPE as the type of FETCHARG. Currently, basic types |
45 | (u8/u16/u32/u64/s8/s16/s32/s64) and string are supported. | 45 | (u8/u16/u32/u64/s8/s16/s32/s64), "string" and bitfield |
46 | are supported. | ||
46 | 47 | ||
47 | (*) only for return probe. | 48 | (*) only for return probe. |
48 | (**) this is useful for fetching a field of data structures. | 49 | (**) this is useful for fetching a field of data structures. |
49 | 50 | ||
51 | Types | ||
52 | ----- | ||
53 | Several types are supported for fetch-args. Kprobe tracer will access memory | ||
54 | by given type. Prefix 's' and 'u' means those types are signed and unsigned | ||
55 | respectively. Traced arguments are shown in decimal (signed) or hex (unsigned). | ||
56 | String type is a special type, which fetches a "null-terminated" string from | ||
57 | kernel space. This means it will fail and store NULL if the string container | ||
58 | has been paged out. | ||
59 | Bitfield is another special type, which takes 3 parameters, bit-width, bit- | ||
60 | offset, and container-size (usually 32). The syntax is; | ||
61 | |||
62 | b<bit-width>@<bit-offset>/<container-size> | ||
63 | |||
50 | 64 | ||
51 | Per-Probe Event Filtering | 65 | Per-Probe Event Filtering |
52 | ------------------------- | 66 | ------------------------- |
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt index 66f92d1194c1..a4efa0462f05 100644 --- a/Documentation/usb/usbmon.txt +++ b/Documentation/usb/usbmon.txt | |||
@@ -12,6 +12,10 @@ Controller Drivers (HCD). So, if HCD is buggy, the traces reported by | |||
12 | usbmon may not correspond to bus transactions precisely. This is the same | 12 | usbmon may not correspond to bus transactions precisely. This is the same |
13 | situation as with tcpdump. | 13 | situation as with tcpdump. |
14 | 14 | ||
15 | Two APIs are currently implemented: "text" and "binary". The binary API | ||
16 | is available through a character device in /dev namespace and is an ABI. | ||
17 | The text API is deprecated since 2.6.35, but available for convenience. | ||
18 | |||
15 | * How to use usbmon to collect raw text traces | 19 | * How to use usbmon to collect raw text traces |
16 | 20 | ||
17 | Unlike the packet socket, usbmon has an interface which provides traces | 21 | Unlike the packet socket, usbmon has an interface which provides traces |
@@ -162,39 +166,11 @@ Here is the list of words, from left to right: | |||
162 | not machine words, but really just a byte stream split into words to make | 166 | not machine words, but really just a byte stream split into words to make |
163 | it easier to read. Thus, the last word may contain from one to four bytes. | 167 | it easier to read. Thus, the last word may contain from one to four bytes. |
164 | The length of collected data is limited and can be less than the data length | 168 | The length of collected data is limited and can be less than the data length |
165 | report in Data Length word. | 169 | reported in the Data Length word. In the case of an Isochronous input (Zi) |
166 | 170 | completion where the received data is sparse in the buffer, the length of | |
167 | Here is an example of code to read the data stream in a well known programming | 171 | the collected data can be greater than the Data Length value (because Data |
168 | language: | 172 | Length counts only the bytes that were received whereas the Data words |
169 | 173 | contain the entire transfer buffer). | |
170 | class ParsedLine { | ||
171 | int data_len; /* Available length of data */ | ||
172 | byte data[]; | ||
173 | |||
174 | void parseData(StringTokenizer st) { | ||
175 | int availwords = st.countTokens(); | ||
176 | data = new byte[availwords * 4]; | ||
177 | data_len = 0; | ||
178 | while (st.hasMoreTokens()) { | ||
179 | String data_str = st.nextToken(); | ||
180 | int len = data_str.length() / 2; | ||
181 | int i; | ||
182 | int b; // byte is signed, apparently?! XXX | ||
183 | for (i = 0; i < len; i++) { | ||
184 | // data[data_len] = Byte.parseByte( | ||
185 | // data_str.substring(i*2, i*2 + 2), | ||
186 | // 16); | ||
187 | b = Integer.parseInt( | ||
188 | data_str.substring(i*2, i*2 + 2), | ||
189 | 16); | ||
190 | if (b >= 128) | ||
191 | b *= -1; | ||
192 | data[data_len] = (byte) b; | ||
193 | data_len++; | ||
194 | } | ||
195 | } | ||
196 | } | ||
197 | } | ||
198 | 174 | ||
199 | Examples: | 175 | Examples: |
200 | 176 | ||
diff --git a/Documentation/vm/unevictable-lru.txt b/Documentation/vm/unevictable-lru.txt index 2d70d0d95108..97bae3c576c2 100644 --- a/Documentation/vm/unevictable-lru.txt +++ b/Documentation/vm/unevictable-lru.txt | |||
@@ -84,8 +84,7 @@ indicate that the page is being managed on the unevictable list. | |||
84 | 84 | ||
85 | The PG_unevictable flag is analogous to, and mutually exclusive with, the | 85 | The PG_unevictable flag is analogous to, and mutually exclusive with, the |
86 | PG_active flag in that it indicates on which LRU list a page resides when | 86 | PG_active flag in that it indicates on which LRU list a page resides when |
87 | PG_lru is set. The unevictable list is compile-time configurable based on the | 87 | PG_lru is set. |
88 | UNEVICTABLE_LRU Kconfig option. | ||
89 | 88 | ||
90 | The Unevictable LRU infrastructure maintains unevictable pages on an additional | 89 | The Unevictable LRU infrastructure maintains unevictable pages on an additional |
91 | LRU list for a few reasons: | 90 | LRU list for a few reasons: |
diff --git a/Documentation/workqueue.txt b/Documentation/workqueue.txt index 996a27d9b8db..01c513fac40e 100644 --- a/Documentation/workqueue.txt +++ b/Documentation/workqueue.txt | |||
@@ -190,9 +190,9 @@ resources, scheduled and executed. | |||
190 | * Long running CPU intensive workloads which can be better | 190 | * Long running CPU intensive workloads which can be better |
191 | managed by the system scheduler. | 191 | managed by the system scheduler. |
192 | 192 | ||
193 | WQ_FREEZEABLE | 193 | WQ_FREEZABLE |
194 | 194 | ||
195 | A freezeable wq participates in the freeze phase of the system | 195 | A freezable wq participates in the freeze phase of the system |
196 | suspend operations. Work items on the wq are drained and no | 196 | suspend operations. Work items on the wq are drained and no |
197 | new work item starts execution until thawed. | 197 | new work item starts execution until thawed. |
198 | 198 | ||
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt index 7fbbaf85f5b7..48c13b8ab90c 100644 --- a/Documentation/x86/x86_64/boot-options.txt +++ b/Documentation/x86/x86_64/boot-options.txt | |||
@@ -189,13 +189,13 @@ ACPI | |||
189 | 189 | ||
190 | PCI | 190 | PCI |
191 | 191 | ||
192 | pci=off Don't use PCI | 192 | pci=off Don't use PCI |
193 | pci=conf1 Use conf1 access. | 193 | pci=conf1 Use conf1 access. |
194 | pci=conf2 Use conf2 access. | 194 | pci=conf2 Use conf2 access. |
195 | pci=rom Assign ROMs. | 195 | pci=rom Assign ROMs. |
196 | pci=assign-busses Assign busses | 196 | pci=assign-busses Assign busses |
197 | pci=irqmask=MASK Set PCI interrupt mask to MASK | 197 | pci=irqmask=MASK Set PCI interrupt mask to MASK |
198 | pci=lastbus=NUMBER Scan upto NUMBER busses, no matter what the mptable says. | 198 | pci=lastbus=NUMBER Scan up to NUMBER busses, no matter what the mptable says. |
199 | pci=noacpi Don't use ACPI to set up PCI interrupt routing. | 199 | pci=noacpi Don't use ACPI to set up PCI interrupt routing. |
200 | 200 | ||
201 | IOMMU (input/output memory management unit) | 201 | IOMMU (input/output memory management unit) |
diff --git a/Documentation/zh_CN/SecurityBugs b/Documentation/zh_CN/SecurityBugs new file mode 100644 index 000000000000..d21eb07fe943 --- /dev/null +++ b/Documentation/zh_CN/SecurityBugs | |||
@@ -0,0 +1,50 @@ | |||
1 | Chinese translated version of Documentation/SecurityBugs | ||
2 | |||
3 | If you have any comment or update to the content, please contact the | ||
4 | original document maintainer directly. However, if you have a problem | ||
5 | communicating in English you can also ask the Chinese maintainer for | ||
6 | help. Contact the Chinese maintainer if this translation is outdated | ||
7 | or if there is a problem with the translation. | ||
8 | |||
9 | Chinese maintainer: Harry Wei <harryxiyou@gmail.com> | ||
10 | --------------------------------------------------------------------- | ||
11 | Documentation/SecurityBugs 鐨勪腑鏂囩炕璇 | ||
12 | |||
13 | 濡傛灉鎯宠瘎璁烘垨鏇存柊鏈枃鐨勫唴瀹癸紝璇风洿鎺ヨ仈绯诲師鏂囨。鐨勭淮鎶よ呫傚鏋滀綘浣跨敤鑻辨枃 | ||
14 | 浜ゆ祦鏈夊洶闅剧殑璇濓紝涔熷彲浠ュ悜涓枃鐗堢淮鎶よ呮眰鍔┿傚鏋滄湰缈昏瘧鏇存柊涓嶅強鏃舵垨鑰呯炕 | ||
15 | 璇戝瓨鍦ㄩ棶棰橈紝璇疯仈绯讳腑鏂囩増缁存姢鑰呫 | ||
16 | |||
17 | 涓枃鐗堢淮鎶よ咃細 璐惧▉濞 Harry Wei <harryxiyou@gmail.com> | ||
18 | 涓枃鐗堢炕璇戣咃細 璐惧▉濞 Harry Wei <harryxiyou@gmail.com> | ||
19 | 涓枃鐗堟牎璇戣咃細 璐惧▉濞 Harry Wei <harryxiyou@gmail.com> | ||
20 | |||
21 | |||
22 | 浠ヤ笅涓烘鏂 | ||
23 | --------------------------------------------------------------------- | ||
24 | Linux鍐呮牳寮鍙戣呰涓哄畨鍏ㄩ潪甯搁噸瑕併傚洜姝わ紝鎴戜滑鎯宠鐭ラ亾褰撲竴涓湁鍏充簬 | ||
25 | 瀹夊叏鐨勬紡娲炶鍙戠幇鐨勬椂鍊欙紝骞朵笖瀹冨彲鑳戒細琚敖蹇殑淇鎴栬呭叕寮銆傝鎶婅繖涓畨鍏 | ||
26 | 婕忔礊鎶ュ憡缁橪inux鍐呮牳瀹夊叏鍥㈤槦銆 | ||
27 | |||
28 | 1) 鑱旂郴 | ||
29 | |||
30 | linux鍐呮牳瀹夊叏鍥㈤槦鍙互閫氳繃email<security@kernel.org>鏉ヨ仈绯汇傝繖鏄 | ||
31 | 涓缁勭嫭绔嬬殑瀹夊叏宸ヤ綔浜哄憳锛屽彲浠ュ府鍔╂敼鍠勬紡娲炴姤鍛婂苟涓斿叕甯冨拰鍙栨秷涓涓慨澶嶃傚畨 | ||
32 | 鍏ㄥ洟闃熸湁鍙兘浼氫粠閮ㄥ垎鐨勭淮鎶よ呴偅閲屽紩杩涢澶栫殑甯姪鏉ヤ簡瑙e苟涓斾慨澶嶅畨鍏ㄦ紡娲炪 | ||
33 | 褰撻亣鍒颁换浣曟紡娲烇紝鎵鑳芥彁渚涚殑淇℃伅瓒婂灏辫秺鑳借瘖鏂拰淇銆傚鏋滀綘涓嶆竻妤氫粈涔 | ||
34 | 鏄湁甯姪鐨勪俊鎭紝閭e氨璇烽噸娓╀竴涓婻EPORTING-BUGS鏂囦欢涓殑姒傝堪杩囩▼銆備换 | ||
35 | 浣曟敾鍑绘х殑浠g爜閮芥槸闈炲父鏈夌敤鐨勶紝鏈粡鎶ュ憡鑰呯殑鍚屾剰涓嶄細琚彇娑堬紝闄ら潪瀹冨凡缁 | ||
36 | 琚叕甯冧簬浼椼 | ||
37 | |||
38 | 2) 鍏紑 | ||
39 | |||
40 | Linux鍐呮牳瀹夊叏鍥㈤槦鐨勫畻鏃ㄥ氨鏄拰婕忔礊鎻愪氦鑰呬竴璧峰鐞嗘紡娲炵殑瑙e喅鏂规鐩 | ||
41 | 鍒板叕寮銆傛垜浠枩娆㈠敖蹇湴瀹屽叏鍏紑婕忔礊銆傚綋涓涓紡娲炴垨鑰呬慨澶嶈繕娌℃湁琚畬鍏ㄥ湴鐞 | ||
42 | 瑙o紝瑙e喅鏂规娌℃湁閫氳繃娴嬭瘯鎴栬呬緵搴斿晢鍗忚皟锛屽彲浠ュ悎鐞嗗湴寤惰繜鍏紑銆傜劧鑰岋紝鎴戜滑 | ||
43 | 鏈熸湜杩欎簺寤惰繜灏藉彲鑳界殑鐭簺锛屾槸鍙暟鐨勫嚑澶╋紝鑰屼笉鏄嚑涓槦鏈熸垨鑰呭嚑涓湀銆傚叕寮 | ||
44 | 鏃ユ湡鏄氳繃瀹夊叏鍥㈤槦鍜屾紡娲炴彁渚涜呬互鍙婁緵搴斿晢娲借皥鍚庣殑缁撴灉銆傚叕寮鏃堕棿琛ㄦ槸浠庡緢 | ||
45 | 鐭紙鐗规畩鐨勶紝瀹冨凡缁忚鍏紬鎵鐭ラ亾锛夊埌鍑犱釜鏄熸湡銆備綔涓轰竴涓熀鏈殑榛樿鏀跨瓥锛屾垜 | ||
46 | 浠墍鏈熸湜閫氱煡鍏紬鐨勬棩鏈熸槸7澶╃殑瀹夋帓銆 | ||
47 | |||
48 | 3) 淇濆瘑鍗忚 | ||
49 | |||
50 | Linux鍐呮牳瀹夊叏鍥㈤槦涓嶆槸涓涓寮忕殑鍥綋锛屽洜姝や笉鑳藉姞鍏ヤ换浣曠殑淇濆瘑鍗忚銆 | ||
diff --git a/Documentation/zh_CN/SubmitChecklist b/Documentation/zh_CN/SubmitChecklist new file mode 100644 index 000000000000..951415bbab0c --- /dev/null +++ b/Documentation/zh_CN/SubmitChecklist | |||
@@ -0,0 +1,109 @@ | |||
1 | Chinese translated version of Documentation/SubmitChecklist | ||
2 | |||
3 | If you have any comment or update to the content, please contact the | ||
4 | original document maintainer directly. However, if you have a problem | ||
5 | communicating in English you can also ask the Chinese maintainer for | ||
6 | help. Contact the Chinese maintainer if this translation is outdated | ||
7 | or if there is a problem with the translation. | ||
8 | |||
9 | Chinese maintainer: Harry Wei <harryxiyou@gmail.com> | ||
10 | --------------------------------------------------------------------- | ||
11 | Documentation/SubmitChecklist 的中文翻译 | ||
12 | |||
13 | 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文 | ||
14 | 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 | ||
15 | 译存在问题,请联系中文版维护者。 | ||
16 | |||
17 | 中文版维护者: 贾威威 Harry Wei <harryxiyou@gmail.com> | ||
18 | 中文版翻译者: 贾威威 Harry Wei <harryxiyou@gmail.com> | ||
19 | 中文版校译者: 贾威威 Harry Wei <harryxiyou@gmail.com> | ||
20 | |||
21 | |||
22 | 以下为正文 | ||
23 | --------------------------------------------------------------------- | ||
24 | Linux内核提交清单 | ||
25 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
26 | |||
27 | 这里有一些内核开发者应该做的基本事情,如果他们想看到自己的内核补丁提交 | ||
28 | 被接受的更快。 | ||
29 | |||
30 | 这些都是超出Documentation/SubmittingPatches文档里所提供的以及其他 | ||
31 | 关于提交Linux内核补丁的说明。 | ||
32 | |||
33 | 1:如果你使用了一个功能那么就#include定义/声明那个功能的那个文件。 | ||
34 | 不要依靠其他间接引入定义/声明那个功能的头文件。 | ||
35 | |||
36 | 2:构建简洁适用或者更改CONFIG选项 =y,=m,或者=n。 | ||
37 | 不要有编译警告/错误, 不要有链接警告/错误。 | ||
38 | |||
39 | 2b:通过 allnoconfig, allmodconfig | ||
40 | |||
41 | 2c:当使用 0=builddir 成功地构建 | ||
42 | |||
43 | 3:通过使用本地交叉编译工具或者其他一些构建产所,在多CPU框架上构建。 | ||
44 | |||
45 | 4:ppc64 是一个很好的检查交叉编译的框架,因为它往往把‘unsigned long’ | ||
46 | 当64位值来使用。 | ||
47 | |||
48 | 5:按照Documentation/CodingStyle文件里的详细描述,检查你补丁的整体风格。 | ||
49 | 使用补丁风格检查琐碎的违规(scripts/checkpatch.pl),审核员优先提交。 | ||
50 | 你应该调整遗留在你补丁中的所有违规。 | ||
51 | |||
52 | 6:任何更新或者改动CONFIG选项都不能打乱配置菜单。 | ||
53 | |||
54 | 7:所有的Kconfig选项更新都要有说明文字。 | ||
55 | |||
56 | 8:已经认真地总结了相关的Kconfig组合。这是很难通过测试做好的--脑力在这里下降。 | ||
57 | |||
58 | 9:检查具有简洁性。 | ||
59 | |||
60 | 10:使用'make checkstack'和'make namespacecheck'检查,然后修改所找到的问题。 | ||
61 | 注意:堆栈检查不会明确地出现问题,但是任何的一个函数在堆栈上使用多于512字节 | ||
62 | 都要准备修改。 | ||
63 | |||
64 | 11:包含kernel-doc到全局内核APIs文件。(不要求静态的函数,但是包含也无所谓。) | ||
65 | 使用'make htmldocs'或者'make mandocs'来检查kernel-doc,然后修改任何 | ||
66 | 发现的问题。 | ||
67 | |||
68 | 12:已经通过CONFIG_PREEMPT, CONFIG_DEBUG_PREEMPT, | ||
69 | CONFIG_DEBUG_SLAB, CONFIG_DEBUG_PAGEALLOC, CONFIG_DEBUG_MUTEXES, | ||
70 | CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_SPINLOCK_SLEEP测试,并且同时都 | ||
71 | 使能。 | ||
72 | |||
73 | 13:已经都构建并且使用或者不使用 CONFIG_SMP 和 CONFIG_PREEMPT测试执行时间。 | ||
74 | |||
75 | 14:如果补丁影响IO/Disk,等等:已经通过使用或者不使用 CONFIG_LBDAF 测试。 | ||
76 | |||
77 | 15:所有的codepaths已经行使所有lockdep启用功能。 | ||
78 | |||
79 | 16:所有的/proc记录更新都要作成文件放在Documentation/目录下。 | ||
80 | |||
81 | 17:所有的内核启动参数更新都被记录到Documentation/kernel-parameters.txt文件中。 | ||
82 | |||
83 | 18:所有的模块参数更新都用MODULE_PARM_DESC()记录。 | ||
84 | |||
85 | 19:所有的用户空间接口更新都被记录到Documentation/ABI/。查看Documentation/ABI/README | ||
86 | 可以获得更多的信息。改变用户空间接口的补丁应该被邮件抄送给linux-api@vger.kernel.org。 | ||
87 | |||
88 | 20:检查它是不是都通过`make headers_check'。 | ||
89 | |||
90 | 21:已经通过至少引入slab和page-allocation失败检查。查看Documentation/fault-injection/。 | ||
91 | |||
92 | 22:新加入的源码已经通过`gcc -W'(使用"make EXTRA_CFLAGS=-W")编译。这样将产生很多烦恼, | ||
93 | 但是对于寻找漏洞很有益处,例如:"warning: comparison between signed and unsigned"。 | ||
94 | |||
95 | 23:当它被合并到-mm补丁集后再测试,用来确定它是否还和补丁队列中的其他补丁一起工作以及在VM,VFS | ||
96 | 和其他子系统中各个变化。 | ||
97 | |||
98 | 24:所有的内存屏障{e.g., barrier(), rmb(), wmb()}需要在源代码中的一个注释来解释他们都是干什么的 | ||
99 | 以及原因。 | ||
100 | |||
101 | 25:如果有任何输入输出控制的补丁被添加,也要更新Documentation/ioctl/ioctl-number.txt。 | ||
102 | |||
103 | 26:如果你的更改代码依靠或者使用任何的内核APIs或者与下面的kconfig符号有关系的功能,你就要 | ||
104 | 使用相关的kconfig符号关闭, and/or =m(如果选项提供)[在同一时间不是所用的都启用,仅仅各个或者自由 | ||
105 | 组合他们]: | ||
106 | |||
107 | CONFIG_SMP, CONFIG_SYSFS, CONFIG_PROC_FS, CONFIG_INPUT, CONFIG_PCI, | ||
108 | CONFIG_BLOCK, CONFIG_PM, CONFIG_HOTPLUG, CONFIG_MAGIC_SYSRQ, | ||
109 | CONFIG_NET, CONFIG_INET=n (后一个使用 CONFIG_NET=y) | ||
diff --git a/Documentation/zh_CN/SubmittingPatches b/Documentation/zh_CN/SubmittingPatches index 9a1a6e1ed09e..0f4385a62a49 100644 --- a/Documentation/zh_CN/SubmittingPatches +++ b/Documentation/zh_CN/SubmittingPatches | |||
@@ -100,7 +100,7 @@ http://userweb.kernel.org/~akpm/stuff/patch-scripts.tar.gz | |||
100 | 100 | ||
101 | 灏嗘敼鍔ㄦ媶鍒嗭紝閫昏緫绫讳技鐨勬斁鍒板悓涓涓ˉ涓佹枃浠堕噷銆 | 101 | 灏嗘敼鍔ㄦ媶鍒嗭紝閫昏緫绫讳技鐨勬斁鍒板悓涓涓ˉ涓佹枃浠堕噷銆 |
102 | 102 | ||
103 | 渚嬪锛屽鏋滀綘鐨勬敼鍔ㄩ噷鍚屾椂鏈塨ug淇鍜屾ц兘浼樺寲锛岄偅涔堟妸杩欎簺鏀瑰姩墠鍒嗗埌涓や釜鎴 | 103 | 渚嬪锛屽鏋滀綘鐨勬敼鍔ㄩ噷鍚屾椂鏈塨ug淇鍜屾ц兘浼樺寲锛岄偅涔堟妸杩欎簺鏀瑰姩媶鍒嗗埌涓や釜鎴 |
104 | 鑰呮洿澶氱殑琛ヤ竵鏂囦欢涓傚鏋滀綘鐨勬敼鍔ㄥ寘鍚API鐨勪慨鏀癸紝骞朵笖淇敼浜嗛┍鍔ㄧ▼搴忔潵閫 | 104 | 鑰呮洿澶氱殑琛ヤ竵鏂囦欢涓傚鏋滀綘鐨勬敼鍔ㄥ寘鍚API鐨勪慨鏀癸紝骞朵笖淇敼浜嗛┍鍔ㄧ▼搴忔潵閫 |
105 | 搴旇繖浜涙柊鐨凙PI锛岄偅涔堟妸杩欎簺淇敼鍒嗘垚涓や釜琛ヤ竵銆 | 105 | 搴旇繖浜涙柊鐨凙PI锛岄偅涔堟妸杩欎簺淇敼鍒嗘垚涓や釜琛ヤ竵銆 |
106 | 106 | ||
@@ -230,7 +230,7 @@ pref("mailnews.display.disable_format_flowed_support", true); | |||
230 | 浜涘師鍥狅紝淇閿欒锛岄噸鏂版彁浜ゆ洿鏂板悗鐨勬敼鍔紝鏄綘鑷繁鐨勫伐浣溿 | 230 | 浜涘師鍥狅紝淇閿欒锛岄噸鏂版彁浜ゆ洿鏂板悗鐨勬敼鍔紝鏄綘鑷繁鐨勫伐浣溿 |
231 | 231 | ||
232 | Linus涓嶇粰鍑轰换浣曡瘎璁哄氨鈥滀涪寮冣濅綘鐨勮ˉ涓佹槸甯歌鐨勪簨鎯呫傚湪绯荤粺涓繖鏍风殑浜嬫儏寰 | 232 | Linus涓嶇粰鍑轰换浣曡瘎璁哄氨鈥滀涪寮冣濅綘鐨勮ˉ涓佹槸甯歌鐨勪簨鎯呫傚湪绯荤粺涓繖鏍风殑浜嬫儏寰 |
233 | 骞冲父銆傚鏋滀粬娌℃湁鎺ュ彈浣犵殑琛ヤ竵锛屼篃璁告槸鐢变簬浠ヤ笅鍘鏈锛 | 233 | 骞冲父銆傚鏋滀粬娌℃湁鎺ュ彈浣犵殑琛ヤ竵锛屼篃璁告槸鐢变簬浠ヤ笅鍘鍥锛 |
234 | * 浣犵殑琛ヤ竵涓嶈兘鍦ㄦ渶鏂扮増鏈殑鍐呮牳涓婂共鍑鐨勬墦涓娿 | 234 | * 浣犵殑琛ヤ竵涓嶈兘鍦ㄦ渶鏂扮増鏈殑鍐呮牳涓婂共鍑鐨勬墦涓娿 |
235 | * 浣犵殑琛ヤ竵鍦 linux-kernel 閭欢鍒楄〃涓病鏈夊緱鍒板厖鍒嗙殑璁ㄨ銆 | 235 | * 浣犵殑琛ヤ竵鍦 linux-kernel 閭欢鍒楄〃涓病鏈夊緱鍒板厖鍒嗙殑璁ㄨ銆 |
236 | * 椋庢牸闂锛堝弬鐓х2灏忚妭锛 | 236 | * 椋庢牸闂锛堝弬鐓х2灏忚妭锛 |
diff --git a/Documentation/zh_CN/magic-number.txt b/Documentation/zh_CN/magic-number.txt new file mode 100644 index 000000000000..4c4ce853577b --- /dev/null +++ b/Documentation/zh_CN/magic-number.txt | |||
@@ -0,0 +1,167 @@ | |||
1 | Chinese translated version of Documentation/magic-number.txt | ||
2 | |||
3 | If you have any comment or update to the content, please post to LKML directly. | ||
4 | However, if you have problem communicating in English you can also ask the | ||
5 | Chinese maintainer for help. Contact the Chinese maintainer, if this | ||
6 | translation is outdated or there is problem with translation. | ||
7 | |||
8 | Chinese maintainer: Jia Wei Wei <harryxiyou@gmail.com> | ||
9 | --------------------------------------------------------------------- | ||
10 | Documentation/magic-number.txt鐨勪腑鏂囩炕璇 | ||
11 | |||
12 | 濡傛灉鎯宠瘎璁烘垨鏇存柊鏈枃鐨勫唴瀹癸紝璇风洿鎺ュ彂淇″埌LKML銆傚鏋滀綘浣跨敤鑻辨枃浜ゆ祦鏈夊洶闅剧殑璇濓紝涔熷彲 | ||
13 | 浠ュ悜涓枃鐗堢淮鎶よ呮眰鍔┿傚鏋滄湰缈昏瘧鏇存柊涓嶅強鏃舵垨鑰呯炕璇戝瓨鍦ㄩ棶棰橈紝璇疯仈绯讳腑鏂囩増缁存姢鑰呫 | ||
14 | |||
15 | 涓枃鐗堢淮鎶よ咃細 璐惧▉濞 Jia Wei Wei <harryxiyou@gmail.com> | ||
16 | 涓枃鐗堢炕璇戣咃細 璐惧▉濞 Jia Wei Wei <harryxiyou@gmail.com> | ||
17 | 涓枃鐗堟牎璇戣咃細 璐惧▉濞 Jia Wei Wei <harryxiyou@gmail.com> | ||
18 | |||
19 | 浠ヤ笅涓烘鏂 | ||
20 | --------------------------------------------------------------------- | ||
21 | 杩欎釜鏂囦欢鏄湁鍏冲綋鍓嶄娇鐢ㄧ殑榄旀湳鍊兼敞鍐岃〃銆傚綋浣犵粰涓涓粨鏋勬坊鍔犱簡涓涓瓟鏈硷紝浣犱篃搴旇鎶婅繖涓瓟鏈兼坊鍔犲埌杩欎釜鏂囦欢锛屽洜涓烘垜浠渶濂芥妸鐢ㄤ簬鍚勭缁撴瀯鐨勯瓟鏈肩粺涓璧锋潵銆 | ||
22 | |||
23 | 浣跨敤榄旀湳鍊兼潵淇濇姢鍐呮牳鏁版嵁缁撴瀯鏄竴涓潪甯稿ソ鐨勪富鎰忋傝繖灏卞厑璁镐綘鍦ㄨ繍琛屾湡妫鏌(a)涓涓粨鏋勬槸鍚﹀凡缁忚鏀诲嚮锛屾垨鑰(b)浣犲凡缁忕粰涓涓緥琛岀▼搴忛氳繃浜嗕竴涓敊璇殑缁撴瀯銆傚悗涓绉嶆儏鍐电壒鍒湴鏈夌敤---鐗瑰埆鏄綋浣犻氳繃涓涓┖鎸囬拡鎸囧悜缁撴瀯浣撶殑鏃跺欍倀ty婧愮爜锛屼緥濡傦紝缁忓父閫氳繃鐗瑰畾椹卞姩浣跨敤杩欑鏂规硶骞朵笖鍙嶅鍦版帓鍒楃壒瀹氭柟闈㈢殑缁撴瀯銆 | ||
24 | |||
25 | 浣跨敤榄旀湳鍊肩殑鏂规硶鏄湪缁撴瀯鐨勫紑濮嬪澹版槑鐨勶紝濡備笅锛 | ||
26 | |||
27 | struct tty_ldisc { | ||
28 | int magic; | ||
29 | ... | ||
30 | }; | ||
31 | |||
32 | 褰撲綘浠ュ悗缁欏唴鏍告坊鍔犲寮哄姛鑳界殑鏃跺欙紝璇烽伒瀹堣繖鏉¤鍒欙紒杩欐牱灏变細鑺傜渷鏁颁笉娓呯殑璋冭瘯鏃堕棿锛岀壒鍒槸涓浜涘彜鎬殑鎯呭喌锛屼緥濡傦紝鏁扮粍瓒呭嚭鑼冨洿骞朵笖閲嶆柊鍐欎簡瓒呭嚭閮ㄥ垎銆傞伒瀹堣繖涓鍒欙紝鈥繖浜涙儏鍐靛彲浠ヨ蹇熷湴锛屽畨鍏ㄥ湴閬垮厤銆 | ||
33 | |||
34 | Theodore Ts'o | ||
35 | 31 Mar 94 | ||
36 | |||
37 | 缁欏綋鍓嶇殑Linux 2.1.55娣诲姞榄旀湳琛ㄣ | ||
38 | |||
39 | Michael Chastain | ||
40 | <mailto:mec@shout.net> | ||
41 | 22 Sep 1997 | ||
42 | |||
43 | 鐜板湪搴旇鏈鏂扮殑Linux 2.1.112.鍥犱负鍦ㄧ壒鎬у喕缁撴湡闂达紝涓嶈兘鍦2.2.x鍓嶆敼鍙樹换浣曚笢瑗裤傝繖浜涙潯鐩鏁板煙鎵鎺掑簭銆 | ||
44 | |||
45 | Krzysztof G.Baranowski | ||
46 | <mailto: kgb@knm.org.pl> | ||
47 | 29 Jul 1998 | ||
48 | |||
49 | 鏇存柊榄旀湳琛ㄥ埌Linux 2.5.45銆傚垰濂借秺杩囩壒鎬у喕缁擄紝浣嗘槸鏈夊彲鑳借繕浼氭湁涓浜涙柊鐨勯瓟鏈煎湪2.6.x涔嬪墠铻嶅叆鍒板唴鏍镐腑銆 | ||
50 | |||
51 | Petr Baudis | ||
52 | <pasky@ucw.cz> | ||
53 | 03 Nov 2002 | ||
54 | |||
55 | 鏇存柊榄旀湳琛ㄥ埌Linux 2.5.74銆 | ||
56 | |||
57 | Fabian Frederick | ||
58 | <ffrederick@users.sourceforge.net> | ||
59 | 09 Jul 2003 | ||
60 | |||
61 | 榄旀湳鍚 鍦板潃 缁撴瀯 鎵鍦ㄦ枃浠 | ||
62 | =========================================================================== | ||
63 | PG_MAGIC 'P' pg_{read,write}_hdr include/linux/pg.h | ||
64 | CMAGIC 0x0111 user include/linux/a.out.h | ||
65 | MKISS_DRIVER_MAGIC 0x04bf mkiss_channel drivers/net/mkiss.h | ||
66 | RISCOM8_MAGIC 0x0907 riscom_port drivers/char/riscom8.h | ||
67 | SPECIALIX_MAGIC 0x0907 specialix_port drivers/char/specialix_io8.h | ||
68 | HDLC_MAGIC 0x239e n_hdlc drivers/char/n_hdlc.c | ||
69 | APM_BIOS_MAGIC 0x4101 apm_user arch/i386/kernel/apm.c | ||
70 | CYCLADES_MAGIC 0x4359 cyclades_port include/linux/cyclades.h | ||
71 | DB_MAGIC 0x4442 fc_info drivers/net/iph5526_novram.c | ||
72 | DL_MAGIC 0x444d fc_info drivers/net/iph5526_novram.c | ||
73 | FASYNC_MAGIC 0x4601 fasync_struct include/linux/fs.h | ||
74 | FF_MAGIC 0x4646 fc_info drivers/net/iph5526_novram.c | ||
75 | ISICOM_MAGIC 0x4d54 isi_port include/linux/isicom.h | ||
76 | PTY_MAGIC 0x5001 drivers/char/pty.c | ||
77 | PPP_MAGIC 0x5002 ppp include/linux/if_pppvar.h | ||
78 | SERIAL_MAGIC 0x5301 async_struct include/linux/serial.h | ||
79 | SSTATE_MAGIC 0x5302 serial_state include/linux/serial.h | ||
80 | SLIP_MAGIC 0x5302 slip drivers/net/slip.h | ||
81 | STRIP_MAGIC 0x5303 strip drivers/net/strip.c | ||
82 | X25_ASY_MAGIC 0x5303 x25_asy drivers/net/x25_asy.h | ||
83 | SIXPACK_MAGIC 0x5304 sixpack drivers/net/hamradio/6pack.h | ||
84 | AX25_MAGIC 0x5316 ax_disp drivers/net/mkiss.h | ||
85 | ESP_MAGIC 0x53ee esp_struct drivers/char/esp.h | ||
86 | TTY_MAGIC 0x5401 tty_struct include/linux/tty.h | ||
87 | MGSL_MAGIC 0x5401 mgsl_info drivers/char/synclink.c | ||
88 | TTY_DRIVER_MAGIC 0x5402 tty_driver include/linux/tty_driver.h | ||
89 | MGSLPC_MAGIC 0x5402 mgslpc_info drivers/char/pcmcia/synclink_cs.c | ||
90 | TTY_LDISC_MAGIC 0x5403 tty_ldisc include/linux/tty_ldisc.h | ||
91 | USB_SERIAL_MAGIC 0x6702 usb_serial drivers/usb/serial/usb-serial.h | ||
92 | FULL_DUPLEX_MAGIC 0x6969 drivers/net/tulip/de2104x.c | ||
93 | USB_BLUETOOTH_MAGIC 0x6d02 usb_bluetooth drivers/usb/class/bluetty.c | ||
94 | RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c | ||
95 | USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h | ||
96 | CG_MAGIC 0x00090255 ufs_cylinder_group include/linux/ufs_fs.h | ||
97 | A2232_MAGIC 0x000a2232 gs_port drivers/char/ser_a2232.h | ||
98 | RPORT_MAGIC 0x00525001 r_port drivers/char/rocket_int.h | ||
99 | LSEMAGIC 0x05091998 lse drivers/fc4/fc.c | ||
100 | GDTIOCTL_MAGIC 0x06030f07 gdth_iowr_str drivers/scsi/gdth_ioctl.h | ||
101 | RIEBL_MAGIC 0x09051990 drivers/net/atarilance.c | ||
102 | RIO_MAGIC 0x12345678 gs_port drivers/char/rio/rio_linux.c | ||
103 | SX_MAGIC 0x12345678 gs_port drivers/char/sx.h | ||
104 | NBD_REQUEST_MAGIC 0x12560953 nbd_request include/linux/nbd.h | ||
105 | RED_MAGIC2 0x170fc2a5 (any) mm/slab.c | ||
106 | BAYCOM_MAGIC 0x19730510 baycom_state drivers/net/baycom_epp.c | ||
107 | ISDN_X25IFACE_MAGIC 0x1e75a2b9 isdn_x25iface_proto_data | ||
108 | drivers/isdn/isdn_x25iface.h | ||
109 | ECP_MAGIC 0x21504345 cdkecpsig include/linux/cdk.h | ||
110 | LSOMAGIC 0x27091997 lso drivers/fc4/fc.c | ||
111 | LSMAGIC 0x2a3b4d2a ls drivers/fc4/fc.c | ||
112 | WANPIPE_MAGIC 0x414C4453 sdla_{dump,exec} include/linux/wanpipe.h | ||
113 | CS_CARD_MAGIC 0x43525553 cs_card sound/oss/cs46xx.c | ||
114 | LABELCL_MAGIC 0x4857434c labelcl_info_s include/asm/ia64/sn/labelcl.h | ||
115 | ISDN_ASYNC_MAGIC 0x49344C01 modem_info include/linux/isdn.h | ||
116 | CTC_ASYNC_MAGIC 0x49344C01 ctc_tty_info drivers/s390/net/ctctty.c | ||
117 | ISDN_NET_MAGIC 0x49344C02 isdn_net_local_s drivers/isdn/i4l/isdn_net_lib.h | ||
118 | SAVEKMSG_MAGIC2 0x4B4D5347 savekmsg arch/*/amiga/config.c | ||
119 | STLI_BOARDMAGIC 0x4bc6c825 stlibrd include/linux/istallion.h | ||
120 | CS_STATE_MAGIC 0x4c4f4749 cs_state sound/oss/cs46xx.c | ||
121 | SLAB_C_MAGIC 0x4f17a36d kmem_cache mm/slab.c | ||
122 | COW_MAGIC 0x4f4f4f4d cow_header_v1 arch/um/drivers/ubd_user.c | ||
123 | I810_CARD_MAGIC 0x5072696E i810_card sound/oss/i810_audio.c | ||
124 | TRIDENT_CARD_MAGIC 0x5072696E trident_card sound/oss/trident.c | ||
125 | ROUTER_MAGIC 0x524d4157 wan_device include/linux/wanrouter.h | ||
126 | SCC_MAGIC 0x52696368 gs_port drivers/char/scc.h | ||
127 | SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c | ||
128 | GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h | ||
129 | RED_MAGIC1 0x5a2cf071 (any) mm/slab.c | ||
130 | STL_PORTMAGIC 0x5a7182c9 stlport include/linux/stallion.h | ||
131 | EEPROM_MAGIC_VALUE 0x5ab478d2 lanai_dev drivers/atm/lanai.c | ||
132 | HDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state include/linux/hdlcdrv.h | ||
133 | EPCA_MAGIC 0x5c6df104 channel include/linux/epca.h | ||
134 | PCXX_MAGIC 0x5c6df104 channel drivers/char/pcxx.h | ||
135 | KV_MAGIC 0x5f4b565f kernel_vars_s arch/mips/include/asm/sn/klkernvars.h | ||
136 | I810_STATE_MAGIC 0x63657373 i810_state sound/oss/i810_audio.c | ||
137 | TRIDENT_STATE_MAGIC 0x63657373 trient_state sound/oss/trident.c | ||
138 | M3_CARD_MAGIC 0x646e6f50 m3_card sound/oss/maestro3.c | ||
139 | FW_HEADER_MAGIC 0x65726F66 fw_header drivers/atm/fore200e.h | ||
140 | SLOT_MAGIC 0x67267321 slot drivers/hotplug/cpqphp.h | ||
141 | SLOT_MAGIC 0x67267322 slot drivers/hotplug/acpiphp.h | ||
142 | LO_MAGIC 0x68797548 nbd_device include/linux/nbd.h | ||
143 | OPROFILE_MAGIC 0x6f70726f super_block drivers/oprofile/oprofilefs.h | ||
144 | M3_STATE_MAGIC 0x734d724d m3_state sound/oss/maestro3.c | ||
145 | STL_PANELMAGIC 0x7ef621a1 stlpanel include/linux/stallion.h | ||
146 | VMALLOC_MAGIC 0x87654320 snd_alloc_track sound/core/memory.c | ||
147 | KMALLOC_MAGIC 0x87654321 snd_alloc_track sound/core/memory.c | ||
148 | PWC_MAGIC 0x89DC10AB pwc_device drivers/usb/media/pwc.h | ||
149 | NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h | ||
150 | STL_BOARDMAGIC 0xa2267f52 stlbrd include/linux/stallion.h | ||
151 | ENI155_MAGIC 0xa54b872d midway_eprom drivers/atm/eni.h | ||
152 | SCI_MAGIC 0xbabeface gs_port drivers/char/sh-sci.h | ||
153 | CODA_MAGIC 0xC0DAC0DA coda_file_info include/linux/coda_fs_i.h | ||
154 | DPMEM_MAGIC 0xc0ffee11 gdt_pci_sram drivers/scsi/gdth.h | ||
155 | STLI_PORTMAGIC 0xe671c7a1 stliport include/linux/istallion.h | ||
156 | YAM_MAGIC 0xF10A7654 yam_port drivers/net/hamradio/yam.c | ||
157 | CCB_MAGIC 0xf2691ad2 ccb drivers/scsi/ncr53c8xx.c | ||
158 | QUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry drivers/scsi/arm/queue.c | ||
159 | QUEUE_MAGIC_USED 0xf7e1cc33 queue_entry drivers/scsi/arm/queue.c | ||
160 | HTB_CMAGIC 0xFEFAFEF1 htb_class net/sched/sch_htb.c | ||
161 | NMI_MAGIC 0x48414d4d455201 nmi_s arch/mips/include/asm/sn/nmi.h | ||
162 | |||
163 | 璇锋敞鎰忥紝鍦ㄥ0闊宠蹇嗙鐞嗕腑浠嶇劧鏈夋瘡涓浜涜瀹氫箟鐨勯┍鍔ㄩ瓟鏈笺傛煡鐪媔nclude/sound/sndmagic.h鏉ヨ幏鍙栦粬浠畬鏁寸殑鍒楄〃淇℃伅銆傚緢澶歄SS澹伴煶椹卞姩鎷ユ湁鑷繁浠庡0鍗CI ID鏋勫缓鐨勯瓟鏈-浠栦滑涔熸病鏈夎鍒楀湪杩欓噷銆 | ||
164 | |||
165 | IrDA瀛愮郴缁熶篃浣跨敤浜嗗ぇ閲忕殑鑷繁鐨勯瓟鏈硷紝鏌ョ湅include/net/irda/irda.h鏉ヨ幏鍙栦粬浠畬鏁寸殑淇℃伅銆 | ||
166 | |||
167 | HFS鏄彟澶栦竴涓瘮杈冨ぇ鐨勪娇鐢ㄩ瓟鏈肩殑鏂囦欢绯荤粺-浣犲彲浠ュ湪fs/hfs/hfs.h涓壘鍒颁粬浠 | ||