diff options
author | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-12-29 00:47:18 -0500 |
---|---|---|
committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-12-29 00:47:18 -0500 |
commit | 0a8c5395f90f06d128247844b2515c8bf3f2826b (patch) | |
tree | d95382dcdfa303b99d480c01763d6cb6767fdaca /Documentation | |
parent | 25051158bbed127e8672b43396c71c5eb610e5f1 (diff) | |
parent | 3c92ec8ae91ecf59d88c798301833d7cf83f2179 (diff) |
[XFS] Fix merge failures
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
fs/xfs/linux-2.6/xfs_cred.h
fs/xfs/linux-2.6/xfs_globals.h
fs/xfs/linux-2.6/xfs_ioctl.c
fs/xfs/xfs_vnodeops.h
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Diffstat (limited to 'Documentation')
38 files changed, 2208 insertions, 776 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 9b1f6ca100d1..0a08126d3094 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -6,7 +6,7 @@ | |||
6 | # To add a new book the only step required is to add the book to the | 6 | # To add a new book the only step required is to add the book to the |
7 | # list of DOCBOOKS. | 7 | # list of DOCBOOKS. |
8 | 8 | ||
9 | DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml \ | 9 | DOCBOOKS := z8530book.xml mcabook.xml \ |
10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ | 10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ |
11 | procfs-guide.xml writing_usb_driver.xml networking.xml \ | 11 | procfs-guide.xml writing_usb_driver.xml networking.xml \ |
12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ | 12 | kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ |
diff --git a/Documentation/DocBook/networking.tmpl b/Documentation/DocBook/networking.tmpl index f24f9e85e4ae..627707a3cb9d 100644 --- a/Documentation/DocBook/networking.tmpl +++ b/Documentation/DocBook/networking.tmpl | |||
@@ -98,9 +98,6 @@ | |||
98 | X!Enet/core/wireless.c | 98 | X!Enet/core/wireless.c |
99 | </sect1> | 99 | </sect1> |
100 | --> | 100 | --> |
101 | <sect1><title>Synchronous PPP</title> | ||
102 | !Edrivers/net/wan/syncppp.c | ||
103 | </sect1> | ||
104 | </chapter> | 101 | </chapter> |
105 | 102 | ||
106 | </book> | 103 | </book> |
diff --git a/Documentation/DocBook/wanbook.tmpl b/Documentation/DocBook/wanbook.tmpl deleted file mode 100644 index 8c93db122f04..000000000000 --- a/Documentation/DocBook/wanbook.tmpl +++ /dev/null | |||
@@ -1,99 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||
4 | |||
5 | <book id="WANGuide"> | ||
6 | <bookinfo> | ||
7 | <title>Synchronous PPP and Cisco HDLC Programming Guide</title> | ||
8 | |||
9 | <authorgroup> | ||
10 | <author> | ||
11 | <firstname>Alan</firstname> | ||
12 | <surname>Cox</surname> | ||
13 | <affiliation> | ||
14 | <address> | ||
15 | <email>alan@lxorguk.ukuu.org.uk</email> | ||
16 | </address> | ||
17 | </affiliation> | ||
18 | </author> | ||
19 | </authorgroup> | ||
20 | |||
21 | <copyright> | ||
22 | <year>2000</year> | ||
23 | <holder>Alan Cox</holder> | ||
24 | </copyright> | ||
25 | |||
26 | <legalnotice> | ||
27 | <para> | ||
28 | This documentation is free software; you can redistribute | ||
29 | it and/or modify it under the terms of the GNU General Public | ||
30 | License as published by the Free Software Foundation; either | ||
31 | version 2 of the License, or (at your option) any later | ||
32 | version. | ||
33 | </para> | ||
34 | |||
35 | <para> | ||
36 | This program is distributed in the hope that it will be | ||
37 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
38 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
39 | See the GNU General Public License for more details. | ||
40 | </para> | ||
41 | |||
42 | <para> | ||
43 | You should have received a copy of the GNU General Public | ||
44 | License along with this program; if not, write to the Free | ||
45 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
46 | MA 02111-1307 USA | ||
47 | </para> | ||
48 | |||
49 | <para> | ||
50 | For more details see the file COPYING in the source | ||
51 | distribution of Linux. | ||
52 | </para> | ||
53 | </legalnotice> | ||
54 | </bookinfo> | ||
55 | |||
56 | <toc></toc> | ||
57 | |||
58 | <chapter id="intro"> | ||
59 | <title>Introduction</title> | ||
60 | <para> | ||
61 | The syncppp drivers in Linux provide a fairly complete | ||
62 | implementation of Cisco HDLC and a minimal implementation of | ||
63 | PPP. The longer term goal is to switch the PPP layer to the | ||
64 | generic PPP interface that is new in Linux 2.3.x. The API should | ||
65 | remain unchanged when this is done, but support will then be | ||
66 | available for IPX, compression and other PPP features | ||
67 | </para> | ||
68 | </chapter> | ||
69 | <chapter id="bugs"> | ||
70 | <title>Known Bugs And Assumptions</title> | ||
71 | <para> | ||
72 | <variablelist> | ||
73 | <varlistentry><term>PPP is minimal</term> | ||
74 | <listitem> | ||
75 | <para> | ||
76 | The current PPP implementation is very basic, although sufficient | ||
77 | for most wan usages. | ||
78 | </para> | ||
79 | </listitem></varlistentry> | ||
80 | |||
81 | <varlistentry><term>Cisco HDLC Quirks</term> | ||
82 | <listitem> | ||
83 | <para> | ||
84 | Currently we do not end all packets with the correct Cisco multicast | ||
85 | or unicast flags. Nothing appears to mind too much but this should | ||
86 | be corrected. | ||
87 | </para> | ||
88 | </listitem></varlistentry> | ||
89 | </variablelist> | ||
90 | |||
91 | </para> | ||
92 | </chapter> | ||
93 | |||
94 | <chapter id="pubfunctions"> | ||
95 | <title>Public Functions Provided</title> | ||
96 | !Edrivers/net/wan/syncppp.c | ||
97 | </chapter> | ||
98 | |||
99 | </book> | ||
diff --git a/Documentation/RCU/rculist_nulls.txt b/Documentation/RCU/rculist_nulls.txt new file mode 100644 index 000000000000..239f542d48ba --- /dev/null +++ b/Documentation/RCU/rculist_nulls.txt | |||
@@ -0,0 +1,167 @@ | |||
1 | Using hlist_nulls to protect read-mostly linked lists and | ||
2 | objects using SLAB_DESTROY_BY_RCU allocations. | ||
3 | |||
4 | Please read the basics in Documentation/RCU/listRCU.txt | ||
5 | |||
6 | Using special makers (called 'nulls') is a convenient way | ||
7 | to solve following problem : | ||
8 | |||
9 | A typical RCU linked list managing objects which are | ||
10 | allocated with SLAB_DESTROY_BY_RCU kmem_cache can | ||
11 | use following algos : | ||
12 | |||
13 | 1) Lookup algo | ||
14 | -------------- | ||
15 | rcu_read_lock() | ||
16 | begin: | ||
17 | obj = lockless_lookup(key); | ||
18 | if (obj) { | ||
19 | if (!try_get_ref(obj)) // might fail for free objects | ||
20 | goto begin; | ||
21 | /* | ||
22 | * Because a writer could delete object, and a writer could | ||
23 | * reuse these object before the RCU grace period, we | ||
24 | * must check key after geting the reference on object | ||
25 | */ | ||
26 | if (obj->key != key) { // not the object we expected | ||
27 | put_ref(obj); | ||
28 | goto begin; | ||
29 | } | ||
30 | } | ||
31 | rcu_read_unlock(); | ||
32 | |||
33 | Beware that lockless_lookup(key) cannot use traditional hlist_for_each_entry_rcu() | ||
34 | but a version with an additional memory barrier (smp_rmb()) | ||
35 | |||
36 | lockless_lookup(key) | ||
37 | { | ||
38 | struct hlist_node *node, *next; | ||
39 | for (pos = rcu_dereference((head)->first); | ||
40 | pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) && | ||
41 | ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); | ||
42 | pos = rcu_dereference(next)) | ||
43 | if (obj->key == key) | ||
44 | return obj; | ||
45 | return NULL; | ||
46 | |||
47 | And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb() : | ||
48 | |||
49 | struct hlist_node *node; | ||
50 | for (pos = rcu_dereference((head)->first); | ||
51 | pos && ({ prefetch(pos->next); 1; }) && | ||
52 | ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); | ||
53 | pos = rcu_dereference(pos->next)) | ||
54 | if (obj->key == key) | ||
55 | return obj; | ||
56 | return NULL; | ||
57 | } | ||
58 | |||
59 | Quoting Corey Minyard : | ||
60 | |||
61 | "If the object is moved from one list to another list in-between the | ||
62 | time the hash is calculated and the next field is accessed, and the | ||
63 | object has moved to the end of a new list, the traversal will not | ||
64 | complete properly on the list it should have, since the object will | ||
65 | be on the end of the new list and there's not a way to tell it's on a | ||
66 | new list and restart the list traversal. I think that this can be | ||
67 | solved by pre-fetching the "next" field (with proper barriers) before | ||
68 | checking the key." | ||
69 | |||
70 | 2) Insert algo : | ||
71 | ---------------- | ||
72 | |||
73 | We need to make sure a reader cannot read the new 'obj->obj_next' value | ||
74 | and previous value of 'obj->key'. Or else, an item could be deleted | ||
75 | from a chain, and inserted into another chain. If new chain was empty | ||
76 | before the move, 'next' pointer is NULL, and lockless reader can | ||
77 | not detect it missed following items in original chain. | ||
78 | |||
79 | /* | ||
80 | * Please note that new inserts are done at the head of list, | ||
81 | * not in the middle or end. | ||
82 | */ | ||
83 | obj = kmem_cache_alloc(...); | ||
84 | lock_chain(); // typically a spin_lock() | ||
85 | obj->key = key; | ||
86 | atomic_inc(&obj->refcnt); | ||
87 | /* | ||
88 | * we need to make sure obj->key is updated before obj->next | ||
89 | */ | ||
90 | smp_wmb(); | ||
91 | hlist_add_head_rcu(&obj->obj_node, list); | ||
92 | unlock_chain(); // typically a spin_unlock() | ||
93 | |||
94 | |||
95 | 3) Remove algo | ||
96 | -------------- | ||
97 | Nothing special here, we can use a standard RCU hlist deletion. | ||
98 | But thanks to SLAB_DESTROY_BY_RCU, beware a deleted object can be reused | ||
99 | very very fast (before the end of RCU grace period) | ||
100 | |||
101 | if (put_last_reference_on(obj) { | ||
102 | lock_chain(); // typically a spin_lock() | ||
103 | hlist_del_init_rcu(&obj->obj_node); | ||
104 | unlock_chain(); // typically a spin_unlock() | ||
105 | kmem_cache_free(cachep, obj); | ||
106 | } | ||
107 | |||
108 | |||
109 | |||
110 | -------------------------------------------------------------------------- | ||
111 | With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup() | ||
112 | and extra smp_wmb() in insert function. | ||
113 | |||
114 | For example, if we choose to store the slot number as the 'nulls' | ||
115 | end-of-list marker for each slot of the hash table, we can detect | ||
116 | a race (some writer did a delete and/or a move of an object | ||
117 | to another chain) checking the final 'nulls' value if | ||
118 | the lookup met the end of chain. If final 'nulls' value | ||
119 | is not the slot number, then we must restart the lookup at | ||
120 | the begining. If the object was moved to same chain, | ||
121 | then the reader doesnt care : It might eventually | ||
122 | scan the list again without harm. | ||
123 | |||
124 | |||
125 | 1) lookup algo | ||
126 | |||
127 | head = &table[slot]; | ||
128 | rcu_read_lock(); | ||
129 | begin: | ||
130 | hlist_nulls_for_each_entry_rcu(obj, node, head, member) { | ||
131 | if (obj->key == key) { | ||
132 | if (!try_get_ref(obj)) // might fail for free objects | ||
133 | goto begin; | ||
134 | if (obj->key != key) { // not the object we expected | ||
135 | put_ref(obj); | ||
136 | goto begin; | ||
137 | } | ||
138 | goto out; | ||
139 | } | ||
140 | /* | ||
141 | * if the nulls value we got at the end of this lookup is | ||
142 | * not the expected one, we must restart lookup. | ||
143 | * We probably met an item that was moved to another chain. | ||
144 | */ | ||
145 | if (get_nulls_value(node) != slot) | ||
146 | goto begin; | ||
147 | obj = NULL; | ||
148 | |||
149 | out: | ||
150 | rcu_read_unlock(); | ||
151 | |||
152 | 2) Insert function : | ||
153 | -------------------- | ||
154 | |||
155 | /* | ||
156 | * Please note that new inserts are done at the head of list, | ||
157 | * not in the middle or end. | ||
158 | */ | ||
159 | obj = kmem_cache_alloc(cachep); | ||
160 | lock_chain(); // typically a spin_lock() | ||
161 | obj->key = key; | ||
162 | atomic_set(&obj->refcnt, 1); | ||
163 | /* | ||
164 | * insert obj in RCU way (readers might be traversing chain) | ||
165 | */ | ||
166 | hlist_nulls_add_head_rcu(&obj->obj_node, list); | ||
167 | unlock_chain(); // typically a spin_unlock() | ||
diff --git a/Documentation/controllers/cpuacct.txt b/Documentation/controllers/cpuacct.txt new file mode 100644 index 000000000000..bb775fbe43d7 --- /dev/null +++ b/Documentation/controllers/cpuacct.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | CPU Accounting Controller | ||
2 | ------------------------- | ||
3 | |||
4 | The CPU accounting controller is used to group tasks using cgroups and | ||
5 | account the CPU usage of these groups of tasks. | ||
6 | |||
7 | The CPU accounting controller supports multi-hierarchy groups. An accounting | ||
8 | group accumulates the CPU usage of all of its child groups and the tasks | ||
9 | directly present in its group. | ||
10 | |||
11 | Accounting groups can be created by first mounting the cgroup filesystem. | ||
12 | |||
13 | # mkdir /cgroups | ||
14 | # mount -t cgroup -ocpuacct none /cgroups | ||
15 | |||
16 | With the above step, the initial or the parent accounting group | ||
17 | becomes visible at /cgroups. At bootup, this group includes all the | ||
18 | tasks in the system. /cgroups/tasks lists the tasks in this cgroup. | ||
19 | /cgroups/cpuacct.usage gives the CPU time (in nanoseconds) obtained by | ||
20 | this group which is essentially the CPU time obtained by all the tasks | ||
21 | in the system. | ||
22 | |||
23 | New accounting groups can be created under the parent group /cgroups. | ||
24 | |||
25 | # cd /cgroups | ||
26 | # mkdir g1 | ||
27 | # echo $$ > g1 | ||
28 | |||
29 | The above steps create a new group g1 and move the current shell | ||
30 | process (bash) into it. CPU time consumed by this bash and its children | ||
31 | can be obtained from g1/cpuacct.usage and the same is accumulated in | ||
32 | /cgroups/cpuacct.usage also. | ||
diff --git a/Documentation/cpu-freq/user-guide.txt b/Documentation/cpu-freq/user-guide.txt index 4f3f3840320e..e3443ddcfb89 100644 --- a/Documentation/cpu-freq/user-guide.txt +++ b/Documentation/cpu-freq/user-guide.txt | |||
@@ -93,10 +93,8 @@ Several "PowerBook" and "iBook2" notebooks are supported. | |||
93 | 1.5 SuperH | 93 | 1.5 SuperH |
94 | ---------- | 94 | ---------- |
95 | 95 | ||
96 | The following SuperH processors are supported by cpufreq: | 96 | All SuperH processors supporting rate rounding through the clock |
97 | 97 | framework are supported by cpufreq. | |
98 | SH-3 | ||
99 | SH-4 | ||
100 | 98 | ||
101 | 1.6 Blackfin | 99 | 1.6 Blackfin |
102 | ------------ | 100 | ------------ |
diff --git a/Documentation/credentials.txt b/Documentation/credentials.txt new file mode 100644 index 000000000000..df03169782ea --- /dev/null +++ b/Documentation/credentials.txt | |||
@@ -0,0 +1,582 @@ | |||
1 | ==================== | ||
2 | CREDENTIALS IN LINUX | ||
3 | ==================== | ||
4 | |||
5 | By: David Howells <dhowells@redhat.com> | ||
6 | |||
7 | Contents: | ||
8 | |||
9 | (*) Overview. | ||
10 | |||
11 | (*) Types of credentials. | ||
12 | |||
13 | (*) File markings. | ||
14 | |||
15 | (*) Task credentials. | ||
16 | |||
17 | - Immutable credentials. | ||
18 | - Accessing task credentials. | ||
19 | - Accessing another task's credentials. | ||
20 | - Altering credentials. | ||
21 | - Managing credentials. | ||
22 | |||
23 | (*) Open file credentials. | ||
24 | |||
25 | (*) Overriding the VFS's use of credentials. | ||
26 | |||
27 | |||
28 | ======== | ||
29 | OVERVIEW | ||
30 | ======== | ||
31 | |||
32 | There are several parts to the security check performed by Linux when one | ||
33 | object acts upon another: | ||
34 | |||
35 | (1) Objects. | ||
36 | |||
37 | Objects are things in the system that may be acted upon directly by | ||
38 | userspace programs. Linux has a variety of actionable objects, including: | ||
39 | |||
40 | - Tasks | ||
41 | - Files/inodes | ||
42 | - Sockets | ||
43 | - Message queues | ||
44 | - Shared memory segments | ||
45 | - Semaphores | ||
46 | - Keys | ||
47 | |||
48 | As a part of the description of all these objects there is a set of | ||
49 | credentials. What's in the set depends on the type of object. | ||
50 | |||
51 | (2) Object ownership. | ||
52 | |||
53 | Amongst the credentials of most objects, there will be a subset that | ||
54 | indicates the ownership of that object. This is used for resource | ||
55 | accounting and limitation (disk quotas and task rlimits for example). | ||
56 | |||
57 | In a standard UNIX filesystem, for instance, this will be defined by the | ||
58 | UID marked on the inode. | ||
59 | |||
60 | (3) The objective context. | ||
61 | |||
62 | Also amongst the credentials of those objects, there will be a subset that | ||
63 | indicates the 'objective context' of that object. This may or may not be | ||
64 | the same set as in (2) - in standard UNIX files, for instance, this is the | ||
65 | defined by the UID and the GID marked on the inode. | ||
66 | |||
67 | The objective context is used as part of the security calculation that is | ||
68 | carried out when an object is acted upon. | ||
69 | |||
70 | (4) Subjects. | ||
71 | |||
72 | A subject is an object that is acting upon another object. | ||
73 | |||
74 | Most of the objects in the system are inactive: they don't act on other | ||
75 | objects within the system. Processes/tasks are the obvious exception: | ||
76 | they do stuff; they access and manipulate things. | ||
77 | |||
78 | Objects other than tasks may under some circumstances also be subjects. | ||
79 | For instance an open file may send SIGIO to a task using the UID and EUID | ||
80 | given to it by a task that called fcntl(F_SETOWN) upon it. In this case, | ||
81 | the file struct will have a subjective context too. | ||
82 | |||
83 | (5) The subjective context. | ||
84 | |||
85 | A subject has an additional interpretation of its credentials. A subset | ||
86 | of its credentials forms the 'subjective context'. The subjective context | ||
87 | is used as part of the security calculation that is carried out when a | ||
88 | subject acts. | ||
89 | |||
90 | A Linux task, for example, has the FSUID, FSGID and the supplementary | ||
91 | group list for when it is acting upon a file - which are quite separate | ||
92 | from the real UID and GID that normally form the objective context of the | ||
93 | task. | ||
94 | |||
95 | (6) Actions. | ||
96 | |||
97 | Linux has a number of actions available that a subject may perform upon an | ||
98 | object. The set of actions available depends on the nature of the subject | ||
99 | and the object. | ||
100 | |||
101 | Actions include reading, writing, creating and deleting files; forking or | ||
102 | signalling and tracing tasks. | ||
103 | |||
104 | (7) Rules, access control lists and security calculations. | ||
105 | |||
106 | When a subject acts upon an object, a security calculation is made. This | ||
107 | involves taking the subjective context, the objective context and the | ||
108 | action, and searching one or more sets of rules to see whether the subject | ||
109 | is granted or denied permission to act in the desired manner on the | ||
110 | object, given those contexts. | ||
111 | |||
112 | There are two main sources of rules: | ||
113 | |||
114 | (a) Discretionary access control (DAC): | ||
115 | |||
116 | Sometimes the object will include sets of rules as part of its | ||
117 | description. This is an 'Access Control List' or 'ACL'. A Linux | ||
118 | file may supply more than one ACL. | ||
119 | |||
120 | A traditional UNIX file, for example, includes a permissions mask that | ||
121 | is an abbreviated ACL with three fixed classes of subject ('user', | ||
122 | 'group' and 'other'), each of which may be granted certain privileges | ||
123 | ('read', 'write' and 'execute' - whatever those map to for the object | ||
124 | in question). UNIX file permissions do not allow the arbitrary | ||
125 | specification of subjects, however, and so are of limited use. | ||
126 | |||
127 | A Linux file might also sport a POSIX ACL. This is a list of rules | ||
128 | that grants various permissions to arbitrary subjects. | ||
129 | |||
130 | (b) Mandatory access control (MAC): | ||
131 | |||
132 | The system as a whole may have one or more sets of rules that get | ||
133 | applied to all subjects and objects, regardless of their source. | ||
134 | SELinux and Smack are examples of this. | ||
135 | |||
136 | In the case of SELinux and Smack, each object is given a label as part | ||
137 | of its credentials. When an action is requested, they take the | ||
138 | subject label, the object label and the action and look for a rule | ||
139 | that says that this action is either granted or denied. | ||
140 | |||
141 | |||
142 | ==================== | ||
143 | TYPES OF CREDENTIALS | ||
144 | ==================== | ||
145 | |||
146 | The Linux kernel supports the following types of credentials: | ||
147 | |||
148 | (1) Traditional UNIX credentials. | ||
149 | |||
150 | Real User ID | ||
151 | Real Group ID | ||
152 | |||
153 | The UID and GID are carried by most, if not all, Linux objects, even if in | ||
154 | some cases it has to be invented (FAT or CIFS files for example, which are | ||
155 | derived from Windows). These (mostly) define the objective context of | ||
156 | that object, with tasks being slightly different in some cases. | ||
157 | |||
158 | Effective, Saved and FS User ID | ||
159 | Effective, Saved and FS Group ID | ||
160 | Supplementary groups | ||
161 | |||
162 | These are additional credentials used by tasks only. Usually, an | ||
163 | EUID/EGID/GROUPS will be used as the subjective context, and real UID/GID | ||
164 | will be used as the objective. For tasks, it should be noted that this is | ||
165 | not always true. | ||
166 | |||
167 | (2) Capabilities. | ||
168 | |||
169 | Set of permitted capabilities | ||
170 | Set of inheritable capabilities | ||
171 | Set of effective capabilities | ||
172 | Capability bounding set | ||
173 | |||
174 | These are only carried by tasks. They indicate superior capabilities | ||
175 | granted piecemeal to a task that an ordinary task wouldn't otherwise have. | ||
176 | These are manipulated implicitly by changes to the traditional UNIX | ||
177 | credentials, but can also be manipulated directly by the capset() system | ||
178 | call. | ||
179 | |||
180 | The permitted capabilities are those caps that the process might grant | ||
181 | itself to its effective or permitted sets through capset(). This | ||
182 | inheritable set might also be so constrained. | ||
183 | |||
184 | The effective capabilities are the ones that a task is actually allowed to | ||
185 | make use of itself. | ||
186 | |||
187 | The inheritable capabilities are the ones that may get passed across | ||
188 | execve(). | ||
189 | |||
190 | The bounding set limits the capabilities that may be inherited across | ||
191 | execve(), especially when a binary is executed that will execute as UID 0. | ||
192 | |||
193 | (3) Secure management flags (securebits). | ||
194 | |||
195 | These are only carried by tasks. These govern the way the above | ||
196 | credentials are manipulated and inherited over certain operations such as | ||
197 | execve(). They aren't used directly as objective or subjective | ||
198 | credentials. | ||
199 | |||
200 | (4) Keys and keyrings. | ||
201 | |||
202 | These are only carried by tasks. They carry and cache security tokens | ||
203 | that don't fit into the other standard UNIX credentials. They are for | ||
204 | making such things as network filesystem keys available to the file | ||
205 | accesses performed by processes, without the necessity of ordinary | ||
206 | programs having to know about security details involved. | ||
207 | |||
208 | Keyrings are a special type of key. They carry sets of other keys and can | ||
209 | be searched for the desired key. Each process may subscribe to a number | ||
210 | of keyrings: | ||
211 | |||
212 | Per-thread keying | ||
213 | Per-process keyring | ||
214 | Per-session keyring | ||
215 | |||
216 | When a process accesses a key, if not already present, it will normally be | ||
217 | cached on one of these keyrings for future accesses to find. | ||
218 | |||
219 | For more information on using keys, see Documentation/keys.txt. | ||
220 | |||
221 | (5) LSM | ||
222 | |||
223 | The Linux Security Module allows extra controls to be placed over the | ||
224 | operations that a task may do. Currently Linux supports two main | ||
225 | alternate LSM options: SELinux and Smack. | ||
226 | |||
227 | Both work by labelling the objects in a system and then applying sets of | ||
228 | rules (policies) that say what operations a task with one label may do to | ||
229 | an object with another label. | ||
230 | |||
231 | (6) AF_KEY | ||
232 | |||
233 | This is a socket-based approach to credential management for networking | ||
234 | stacks [RFC 2367]. It isn't discussed by this document as it doesn't | ||
235 | interact directly with task and file credentials; rather it keeps system | ||
236 | level credentials. | ||
237 | |||
238 | |||
239 | When a file is opened, part of the opening task's subjective context is | ||
240 | recorded in the file struct created. This allows operations using that file | ||
241 | struct to use those credentials instead of the subjective context of the task | ||
242 | that issued the operation. An example of this would be a file opened on a | ||
243 | network filesystem where the credentials of the opened file should be presented | ||
244 | to the server, regardless of who is actually doing a read or a write upon it. | ||
245 | |||
246 | |||
247 | ============= | ||
248 | FILE MARKINGS | ||
249 | ============= | ||
250 | |||
251 | Files on disk or obtained over the network may have annotations that form the | ||
252 | objective security context of that file. Depending on the type of filesystem, | ||
253 | this may include one or more of the following: | ||
254 | |||
255 | (*) UNIX UID, GID, mode; | ||
256 | |||
257 | (*) Windows user ID; | ||
258 | |||
259 | (*) Access control list; | ||
260 | |||
261 | (*) LSM security label; | ||
262 | |||
263 | (*) UNIX exec privilege escalation bits (SUID/SGID); | ||
264 | |||
265 | (*) File capabilities exec privilege escalation bits. | ||
266 | |||
267 | These are compared to the task's subjective security context, and certain | ||
268 | operations allowed or disallowed as a result. In the case of execve(), the | ||
269 | privilege escalation bits come into play, and may allow the resulting process | ||
270 | extra privileges, based on the annotations on the executable file. | ||
271 | |||
272 | |||
273 | ================ | ||
274 | TASK CREDENTIALS | ||
275 | ================ | ||
276 | |||
277 | In Linux, all of a task's credentials are held in (uid, gid) or through | ||
278 | (groups, keys, LSM security) a refcounted structure of type 'struct cred'. | ||
279 | Each task points to its credentials by a pointer called 'cred' in its | ||
280 | task_struct. | ||
281 | |||
282 | Once a set of credentials has been prepared and committed, it may not be | ||
283 | changed, barring the following exceptions: | ||
284 | |||
285 | (1) its reference count may be changed; | ||
286 | |||
287 | (2) the reference count on the group_info struct it points to may be changed; | ||
288 | |||
289 | (3) the reference count on the security data it points to may be changed; | ||
290 | |||
291 | (4) the reference count on any keyrings it points to may be changed; | ||
292 | |||
293 | (5) any keyrings it points to may be revoked, expired or have their security | ||
294 | attributes changed; and | ||
295 | |||
296 | (6) the contents of any keyrings to which it points may be changed (the whole | ||
297 | point of keyrings being a shared set of credentials, modifiable by anyone | ||
298 | with appropriate access). | ||
299 | |||
300 | To alter anything in the cred struct, the copy-and-replace principle must be | ||
301 | adhered to. First take a copy, then alter the copy and then use RCU to change | ||
302 | the task pointer to make it point to the new copy. There are wrappers to aid | ||
303 | with this (see below). | ||
304 | |||
305 | A task may only alter its _own_ credentials; it is no longer permitted for a | ||
306 | task to alter another's credentials. This means the capset() system call is no | ||
307 | longer permitted to take any PID other than the one of the current process. | ||
308 | Also keyctl_instantiate() and keyctl_negate() functions no longer permit | ||
309 | attachment to process-specific keyrings in the requesting process as the | ||
310 | instantiating process may need to create them. | ||
311 | |||
312 | |||
313 | IMMUTABLE CREDENTIALS | ||
314 | --------------------- | ||
315 | |||
316 | Once a set of credentials has been made public (by calling commit_creds() for | ||
317 | example), it must be considered immutable, barring two exceptions: | ||
318 | |||
319 | (1) The reference count may be altered. | ||
320 | |||
321 | (2) Whilst the keyring subscriptions of a set of credentials may not be | ||
322 | changed, the keyrings subscribed to may have their contents altered. | ||
323 | |||
324 | To catch accidental credential alteration at compile time, struct task_struct | ||
325 | has _const_ pointers to its credential sets, as does struct file. Furthermore, | ||
326 | certain functions such as get_cred() and put_cred() operate on const pointers, | ||
327 | thus rendering casts unnecessary, but require to temporarily ditch the const | ||
328 | qualification to be able to alter the reference count. | ||
329 | |||
330 | |||
331 | ACCESSING TASK CREDENTIALS | ||
332 | -------------------------- | ||
333 | |||
334 | A task being able to alter only its own credentials permits the current process | ||
335 | to read or replace its own credentials without the need for any form of locking | ||
336 | - which simplifies things greatly. It can just call: | ||
337 | |||
338 | const struct cred *current_cred() | ||
339 | |||
340 | to get a pointer to its credentials structure, and it doesn't have to release | ||
341 | it afterwards. | ||
342 | |||
343 | There are convenience wrappers for retrieving specific aspects of a task's | ||
344 | credentials (the value is simply returned in each case): | ||
345 | |||
346 | uid_t current_uid(void) Current's real UID | ||
347 | gid_t current_gid(void) Current's real GID | ||
348 | uid_t current_euid(void) Current's effective UID | ||
349 | gid_t current_egid(void) Current's effective GID | ||
350 | uid_t current_fsuid(void) Current's file access UID | ||
351 | gid_t current_fsgid(void) Current's file access GID | ||
352 | kernel_cap_t current_cap(void) Current's effective capabilities | ||
353 | void *current_security(void) Current's LSM security pointer | ||
354 | struct user_struct *current_user(void) Current's user account | ||
355 | |||
356 | There are also convenience wrappers for retrieving specific associated pairs of | ||
357 | a task's credentials: | ||
358 | |||
359 | void current_uid_gid(uid_t *, gid_t *); | ||
360 | void current_euid_egid(uid_t *, gid_t *); | ||
361 | void current_fsuid_fsgid(uid_t *, gid_t *); | ||
362 | |||
363 | which return these pairs of values through their arguments after retrieving | ||
364 | them from the current task's credentials. | ||
365 | |||
366 | |||
367 | In addition, there is a function for obtaining a reference on the current | ||
368 | process's current set of credentials: | ||
369 | |||
370 | const struct cred *get_current_cred(void); | ||
371 | |||
372 | and functions for getting references to one of the credentials that don't | ||
373 | actually live in struct cred: | ||
374 | |||
375 | struct user_struct *get_current_user(void); | ||
376 | struct group_info *get_current_groups(void); | ||
377 | |||
378 | which get references to the current process's user accounting structure and | ||
379 | supplementary groups list respectively. | ||
380 | |||
381 | Once a reference has been obtained, it must be released with put_cred(), | ||
382 | free_uid() or put_group_info() as appropriate. | ||
383 | |||
384 | |||
385 | ACCESSING ANOTHER TASK'S CREDENTIALS | ||
386 | ------------------------------------ | ||
387 | |||
388 | Whilst a task may access its own credentials without the need for locking, the | ||
389 | same is not true of a task wanting to access another task's credentials. It | ||
390 | must use the RCU read lock and rcu_dereference(). | ||
391 | |||
392 | The rcu_dereference() is wrapped by: | ||
393 | |||
394 | const struct cred *__task_cred(struct task_struct *task); | ||
395 | |||
396 | This should be used inside the RCU read lock, as in the following example: | ||
397 | |||
398 | void foo(struct task_struct *t, struct foo_data *f) | ||
399 | { | ||
400 | const struct cred *tcred; | ||
401 | ... | ||
402 | rcu_read_lock(); | ||
403 | tcred = __task_cred(t); | ||
404 | f->uid = tcred->uid; | ||
405 | f->gid = tcred->gid; | ||
406 | f->groups = get_group_info(tcred->groups); | ||
407 | rcu_read_unlock(); | ||
408 | ... | ||
409 | } | ||
410 | |||
411 | A function need not get RCU read lock to use __task_cred() if it is holding a | ||
412 | spinlock at the time as this implicitly holds the RCU read lock. | ||
413 | |||
414 | Should it be necessary to hold another task's credentials for a long period of | ||
415 | time, and possibly to sleep whilst doing so, then the caller should get a | ||
416 | reference on them using: | ||
417 | |||
418 | const struct cred *get_task_cred(struct task_struct *task); | ||
419 | |||
420 | This does all the RCU magic inside of it. The caller must call put_cred() on | ||
421 | the credentials so obtained when they're finished with. | ||
422 | |||
423 | There are a couple of convenience functions to access bits of another task's | ||
424 | credentials, hiding the RCU magic from the caller: | ||
425 | |||
426 | uid_t task_uid(task) Task's real UID | ||
427 | uid_t task_euid(task) Task's effective UID | ||
428 | |||
429 | If the caller is holding a spinlock or the RCU read lock at the time anyway, | ||
430 | then: | ||
431 | |||
432 | __task_cred(task)->uid | ||
433 | __task_cred(task)->euid | ||
434 | |||
435 | should be used instead. Similarly, if multiple aspects of a task's credentials | ||
436 | need to be accessed, RCU read lock or a spinlock should be used, __task_cred() | ||
437 | called, the result stored in a temporary pointer and then the credential | ||
438 | aspects called from that before dropping the lock. This prevents the | ||
439 | potentially expensive RCU magic from being invoked multiple times. | ||
440 | |||
441 | Should some other single aspect of another task's credentials need to be | ||
442 | accessed, then this can be used: | ||
443 | |||
444 | task_cred_xxx(task, member) | ||
445 | |||
446 | where 'member' is a non-pointer member of the cred struct. For instance: | ||
447 | |||
448 | uid_t task_cred_xxx(task, suid); | ||
449 | |||
450 | will retrieve 'struct cred::suid' from the task, doing the appropriate RCU | ||
451 | magic. This may not be used for pointer members as what they point to may | ||
452 | disappear the moment the RCU read lock is dropped. | ||
453 | |||
454 | |||
455 | ALTERING CREDENTIALS | ||
456 | -------------------- | ||
457 | |||
458 | As previously mentioned, a task may only alter its own credentials, and may not | ||
459 | alter those of another task. This means that it doesn't need to use any | ||
460 | locking to alter its own credentials. | ||
461 | |||
462 | To alter the current process's credentials, a function should first prepare a | ||
463 | new set of credentials by calling: | ||
464 | |||
465 | struct cred *prepare_creds(void); | ||
466 | |||
467 | this locks current->cred_replace_mutex and then allocates and constructs a | ||
468 | duplicate of the current process's credentials, returning with the mutex still | ||
469 | held if successful. It returns NULL if not successful (out of memory). | ||
470 | |||
471 | The mutex prevents ptrace() from altering the ptrace state of a process whilst | ||
472 | security checks on credentials construction and changing is taking place as | ||
473 | the ptrace state may alter the outcome, particularly in the case of execve(). | ||
474 | |||
475 | The new credentials set should be altered appropriately, and any security | ||
476 | checks and hooks done. Both the current and the proposed sets of credentials | ||
477 | are available for this purpose as current_cred() will return the current set | ||
478 | still at this point. | ||
479 | |||
480 | |||
481 | When the credential set is ready, it should be committed to the current process | ||
482 | by calling: | ||
483 | |||
484 | int commit_creds(struct cred *new); | ||
485 | |||
486 | This will alter various aspects of the credentials and the process, giving the | ||
487 | LSM a chance to do likewise, then it will use rcu_assign_pointer() to actually | ||
488 | commit the new credentials to current->cred, it will release | ||
489 | current->cred_replace_mutex to allow ptrace() to take place, and it will notify | ||
490 | the scheduler and others of the changes. | ||
491 | |||
492 | This function is guaranteed to return 0, so that it can be tail-called at the | ||
493 | end of such functions as sys_setresuid(). | ||
494 | |||
495 | Note that this function consumes the caller's reference to the new credentials. | ||
496 | The caller should _not_ call put_cred() on the new credentials afterwards. | ||
497 | |||
498 | Furthermore, once this function has been called on a new set of credentials, | ||
499 | those credentials may _not_ be changed further. | ||
500 | |||
501 | |||
502 | Should the security checks fail or some other error occur after prepare_creds() | ||
503 | has been called, then the following function should be invoked: | ||
504 | |||
505 | void abort_creds(struct cred *new); | ||
506 | |||
507 | This releases the lock on current->cred_replace_mutex that prepare_creds() got | ||
508 | and then releases the new credentials. | ||
509 | |||
510 | |||
511 | A typical credentials alteration function would look something like this: | ||
512 | |||
513 | int alter_suid(uid_t suid) | ||
514 | { | ||
515 | struct cred *new; | ||
516 | int ret; | ||
517 | |||
518 | new = prepare_creds(); | ||
519 | if (!new) | ||
520 | return -ENOMEM; | ||
521 | |||
522 | new->suid = suid; | ||
523 | ret = security_alter_suid(new); | ||
524 | if (ret < 0) { | ||
525 | abort_creds(new); | ||
526 | return ret; | ||
527 | } | ||
528 | |||
529 | return commit_creds(new); | ||
530 | } | ||
531 | |||
532 | |||
533 | MANAGING CREDENTIALS | ||
534 | -------------------- | ||
535 | |||
536 | There are some functions to help manage credentials: | ||
537 | |||
538 | (*) void put_cred(const struct cred *cred); | ||
539 | |||
540 | This releases a reference to the given set of credentials. If the | ||
541 | reference count reaches zero, the credentials will be scheduled for | ||
542 | destruction by the RCU system. | ||
543 | |||
544 | (*) const struct cred *get_cred(const struct cred *cred); | ||
545 | |||
546 | This gets a reference on a live set of credentials, returning a pointer to | ||
547 | that set of credentials. | ||
548 | |||
549 | (*) struct cred *get_new_cred(struct cred *cred); | ||
550 | |||
551 | This gets a reference on a set of credentials that is under construction | ||
552 | and is thus still mutable, returning a pointer to that set of credentials. | ||
553 | |||
554 | |||
555 | ===================== | ||
556 | OPEN FILE CREDENTIALS | ||
557 | ===================== | ||
558 | |||
559 | When a new file is opened, a reference is obtained on the opening task's | ||
560 | credentials and this is attached to the file struct as 'f_cred' in place of | ||
561 | 'f_uid' and 'f_gid'. Code that used to access file->f_uid and file->f_gid | ||
562 | should now access file->f_cred->fsuid and file->f_cred->fsgid. | ||
563 | |||
564 | It is safe to access f_cred without the use of RCU or locking because the | ||
565 | pointer will not change over the lifetime of the file struct, and nor will the | ||
566 | contents of the cred struct pointed to, barring the exceptions listed above | ||
567 | (see the Task Credentials section). | ||
568 | |||
569 | |||
570 | ======================================= | ||
571 | OVERRIDING THE VFS'S USE OF CREDENTIALS | ||
572 | ======================================= | ||
573 | |||
574 | Under some circumstances it is desirable to override the credentials used by | ||
575 | the VFS, and that can be done by calling into such as vfs_mkdir() with a | ||
576 | different set of credentials. This is done in the following places: | ||
577 | |||
578 | (*) sys_faccessat(). | ||
579 | |||
580 | (*) do_coredump(). | ||
581 | |||
582 | (*) nfs4recover.c. | ||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index c28a2ac88f9d..dc7c681e532c 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -120,13 +120,6 @@ Who: Christoph Hellwig <hch@lst.de> | |||
120 | 120 | ||
121 | --------------------------- | 121 | --------------------------- |
122 | 122 | ||
123 | What: eepro100 network driver | ||
124 | When: January 2007 | ||
125 | Why: replaced by the e100 driver | ||
126 | Who: Adrian Bunk <bunk@stusta.de> | ||
127 | |||
128 | --------------------------- | ||
129 | |||
130 | What: Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports | 123 | What: Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports |
131 | (temporary transition config option provided until then) | 124 | (temporary transition config option provided until then) |
132 | The transition config option will also be removed at the same time. | 125 | The transition config option will also be removed at the same time. |
@@ -244,18 +237,6 @@ Who: Michael Buesch <mb@bu3sch.de> | |||
244 | 237 | ||
245 | --------------------------- | 238 | --------------------------- |
246 | 239 | ||
247 | What: init_mm export | ||
248 | When: 2.6.26 | ||
249 | Why: Not used in-tree. The current out-of-tree users used it to | ||
250 | work around problems in the CPA code which should be resolved | ||
251 | by now. One usecase was described to provide verification code | ||
252 | of the CPA operation. That's a good idea in general, but such | ||
253 | code / infrastructure should be in the kernel and not in some | ||
254 | out-of-tree driver. | ||
255 | Who: Thomas Gleixner <tglx@linutronix.de> | ||
256 | |||
257 | ---------------------------- | ||
258 | |||
259 | What: usedac i386 kernel parameter | 240 | What: usedac i386 kernel parameter |
260 | When: 2.6.27 | 241 | When: 2.6.27 |
261 | Why: replaced by allowdac and no dac combination | 242 | Why: replaced by allowdac and no dac combination |
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index bb1b0dd3bfcb..71df353e367c 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -1339,10 +1339,13 @@ nmi_watchdog | |||
1339 | 1339 | ||
1340 | Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero | 1340 | Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero |
1341 | the NMI watchdog is enabled and will continuously test all online cpus to | 1341 | the NMI watchdog is enabled and will continuously test all online cpus to |
1342 | determine whether or not they are still functioning properly. | 1342 | determine whether or not they are still functioning properly. Currently, |
1343 | passing "nmi_watchdog=" parameter at boot time is required for this function | ||
1344 | to work. | ||
1343 | 1345 | ||
1344 | Because the NMI watchdog shares registers with oprofile, by disabling the NMI | 1346 | If LAPIC NMI watchdog method is in use (nmi_watchdog=2 kernel parameter), the |
1345 | watchdog, oprofile may have more registers to utilize. | 1347 | NMI watchdog shares registers with oprofile. By disabling the NMI watchdog, |
1348 | oprofile may have more registers to utilize. | ||
1346 | 1349 | ||
1347 | msgmni | 1350 | msgmni |
1348 | ------ | 1351 | ------ |
diff --git a/Documentation/ftrace.txt b/Documentation/ftrace.txt index 9cc4d685dde5..803b1318b13d 100644 --- a/Documentation/ftrace.txt +++ b/Documentation/ftrace.txt | |||
@@ -82,7 +82,7 @@ of ftrace. Here is a list of some of the key files: | |||
82 | tracer is not adding more data, they will display | 82 | tracer is not adding more data, they will display |
83 | the same information every time they are read. | 83 | the same information every time they are read. |
84 | 84 | ||
85 | iter_ctrl: This file lets the user control the amount of data | 85 | trace_options: This file lets the user control the amount of data |
86 | that is displayed in one of the above output | 86 | that is displayed in one of the above output |
87 | files. | 87 | files. |
88 | 88 | ||
@@ -94,10 +94,10 @@ of ftrace. Here is a list of some of the key files: | |||
94 | only be recorded if the latency is greater than | 94 | only be recorded if the latency is greater than |
95 | the value in this file. (in microseconds) | 95 | the value in this file. (in microseconds) |
96 | 96 | ||
97 | trace_entries: This sets or displays the number of bytes each CPU | 97 | buffer_size_kb: This sets or displays the number of kilobytes each CPU |
98 | buffer can hold. The tracer buffers are the same size | 98 | buffer can hold. The tracer buffers are the same size |
99 | for each CPU. The displayed number is the size of the | 99 | for each CPU. The displayed number is the size of the |
100 | CPU buffer and not total size of all buffers. The | 100 | CPU buffer and not total size of all buffers. The |
101 | trace buffers are allocated in pages (blocks of memory | 101 | trace buffers are allocated in pages (blocks of memory |
102 | that the kernel uses for allocation, usually 4 KB in size). | 102 | that the kernel uses for allocation, usually 4 KB in size). |
103 | If the last page allocated has room for more bytes | 103 | If the last page allocated has room for more bytes |
@@ -127,6 +127,8 @@ of ftrace. Here is a list of some of the key files: | |||
127 | be traced. If a function exists in both set_ftrace_filter | 127 | be traced. If a function exists in both set_ftrace_filter |
128 | and set_ftrace_notrace, the function will _not_ be traced. | 128 | and set_ftrace_notrace, the function will _not_ be traced. |
129 | 129 | ||
130 | set_ftrace_pid: Have the function tracer only trace a single thread. | ||
131 | |||
130 | available_filter_functions: This lists the functions that ftrace | 132 | available_filter_functions: This lists the functions that ftrace |
131 | has processed and can trace. These are the function | 133 | has processed and can trace. These are the function |
132 | names that you can pass to "set_ftrace_filter" or | 134 | names that you can pass to "set_ftrace_filter" or |
@@ -316,23 +318,23 @@ The above is mostly meaningful for kernel developers. | |||
316 | The rest is the same as the 'trace' file. | 318 | The rest is the same as the 'trace' file. |
317 | 319 | ||
318 | 320 | ||
319 | iter_ctrl | 321 | trace_options |
320 | --------- | 322 | ------------- |
321 | 323 | ||
322 | The iter_ctrl file is used to control what gets printed in the trace | 324 | The trace_options file is used to control what gets printed in the trace |
323 | output. To see what is available, simply cat the file: | 325 | output. To see what is available, simply cat the file: |
324 | 326 | ||
325 | cat /debug/tracing/iter_ctrl | 327 | cat /debug/tracing/trace_options |
326 | print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \ | 328 | print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \ |
327 | noblock nostacktrace nosched-tree | 329 | noblock nostacktrace nosched-tree nouserstacktrace nosym-userobj |
328 | 330 | ||
329 | To disable one of the options, echo in the option prepended with "no". | 331 | To disable one of the options, echo in the option prepended with "no". |
330 | 332 | ||
331 | echo noprint-parent > /debug/tracing/iter_ctrl | 333 | echo noprint-parent > /debug/tracing/trace_options |
332 | 334 | ||
333 | To enable an option, leave off the "no". | 335 | To enable an option, leave off the "no". |
334 | 336 | ||
335 | echo sym-offset > /debug/tracing/iter_ctrl | 337 | echo sym-offset > /debug/tracing/trace_options |
336 | 338 | ||
337 | Here are the available options: | 339 | Here are the available options: |
338 | 340 | ||
@@ -378,6 +380,20 @@ Here are the available options: | |||
378 | When a trace is recorded, so is the stack of functions. | 380 | When a trace is recorded, so is the stack of functions. |
379 | This allows for back traces of trace sites. | 381 | This allows for back traces of trace sites. |
380 | 382 | ||
383 | userstacktrace - This option changes the trace. | ||
384 | It records a stacktrace of the current userspace thread. | ||
385 | |||
386 | sym-userobj - when user stacktrace are enabled, look up which object the | ||
387 | address belongs to, and print a relative address | ||
388 | This is especially useful when ASLR is on, otherwise you don't | ||
389 | get a chance to resolve the address to object/file/line after the app is no | ||
390 | longer running | ||
391 | |||
392 | The lookup is performed when you read trace,trace_pipe,latency_trace. Example: | ||
393 | |||
394 | a.out-1623 [000] 40874.465068: /root/a.out[+0x480] <-/root/a.out[+0 | ||
395 | x494] <- /root/a.out[+0x4a8] <- /lib/libc-2.7.so[+0x1e1a6] | ||
396 | |||
381 | sched-tree - TBD (any users??) | 397 | sched-tree - TBD (any users??) |
382 | 398 | ||
383 | 399 | ||
@@ -1059,6 +1075,83 @@ For simple one time traces, the above is sufficent. For anything else, | |||
1059 | a search through /proc/mounts may be needed to find where the debugfs | 1075 | a search through /proc/mounts may be needed to find where the debugfs |
1060 | file-system is mounted. | 1076 | file-system is mounted. |
1061 | 1077 | ||
1078 | |||
1079 | Single thread tracing | ||
1080 | --------------------- | ||
1081 | |||
1082 | By writing into /debug/tracing/set_ftrace_pid you can trace a | ||
1083 | single thread. For example: | ||
1084 | |||
1085 | # cat /debug/tracing/set_ftrace_pid | ||
1086 | no pid | ||
1087 | # echo 3111 > /debug/tracing/set_ftrace_pid | ||
1088 | # cat /debug/tracing/set_ftrace_pid | ||
1089 | 3111 | ||
1090 | # echo function > /debug/tracing/current_tracer | ||
1091 | # cat /debug/tracing/trace | head | ||
1092 | # tracer: function | ||
1093 | # | ||
1094 | # TASK-PID CPU# TIMESTAMP FUNCTION | ||
1095 | # | | | | | | ||
1096 | yum-updatesd-3111 [003] 1637.254676: finish_task_switch <-thread_return | ||
1097 | yum-updatesd-3111 [003] 1637.254681: hrtimer_cancel <-schedule_hrtimeout_range | ||
1098 | yum-updatesd-3111 [003] 1637.254682: hrtimer_try_to_cancel <-hrtimer_cancel | ||
1099 | yum-updatesd-3111 [003] 1637.254683: lock_hrtimer_base <-hrtimer_try_to_cancel | ||
1100 | yum-updatesd-3111 [003] 1637.254685: fget_light <-do_sys_poll | ||
1101 | yum-updatesd-3111 [003] 1637.254686: pipe_poll <-do_sys_poll | ||
1102 | # echo -1 > /debug/tracing/set_ftrace_pid | ||
1103 | # cat /debug/tracing/trace |head | ||
1104 | # tracer: function | ||
1105 | # | ||
1106 | # TASK-PID CPU# TIMESTAMP FUNCTION | ||
1107 | # | | | | | | ||
1108 | ##### CPU 3 buffer started #### | ||
1109 | yum-updatesd-3111 [003] 1701.957688: free_poll_entry <-poll_freewait | ||
1110 | yum-updatesd-3111 [003] 1701.957689: remove_wait_queue <-free_poll_entry | ||
1111 | yum-updatesd-3111 [003] 1701.957691: fput <-free_poll_entry | ||
1112 | yum-updatesd-3111 [003] 1701.957692: audit_syscall_exit <-sysret_audit | ||
1113 | yum-updatesd-3111 [003] 1701.957693: path_put <-audit_syscall_exit | ||
1114 | |||
1115 | If you want to trace a function when executing, you could use | ||
1116 | something like this simple program: | ||
1117 | |||
1118 | #include <stdio.h> | ||
1119 | #include <stdlib.h> | ||
1120 | #include <sys/types.h> | ||
1121 | #include <sys/stat.h> | ||
1122 | #include <fcntl.h> | ||
1123 | #include <unistd.h> | ||
1124 | |||
1125 | int main (int argc, char **argv) | ||
1126 | { | ||
1127 | if (argc < 1) | ||
1128 | exit(-1); | ||
1129 | |||
1130 | if (fork() > 0) { | ||
1131 | int fd, ffd; | ||
1132 | char line[64]; | ||
1133 | int s; | ||
1134 | |||
1135 | ffd = open("/debug/tracing/current_tracer", O_WRONLY); | ||
1136 | if (ffd < 0) | ||
1137 | exit(-1); | ||
1138 | write(ffd, "nop", 3); | ||
1139 | |||
1140 | fd = open("/debug/tracing/set_ftrace_pid", O_WRONLY); | ||
1141 | s = sprintf(line, "%d\n", getpid()); | ||
1142 | write(fd, line, s); | ||
1143 | |||
1144 | write(ffd, "function", 8); | ||
1145 | |||
1146 | close(fd); | ||
1147 | close(ffd); | ||
1148 | |||
1149 | execvp(argv[1], argv+1); | ||
1150 | } | ||
1151 | |||
1152 | return 0; | ||
1153 | } | ||
1154 | |||
1062 | dynamic ftrace | 1155 | dynamic ftrace |
1063 | -------------- | 1156 | -------------- |
1064 | 1157 | ||
@@ -1158,7 +1251,11 @@ These are the only wild cards which are supported. | |||
1158 | 1251 | ||
1159 | <match>*<match> will not work. | 1252 | <match>*<match> will not work. |
1160 | 1253 | ||
1161 | # echo hrtimer_* > /debug/tracing/set_ftrace_filter | 1254 | Note: It is better to use quotes to enclose the wild cards, otherwise |
1255 | the shell may expand the parameters into names of files in the local | ||
1256 | directory. | ||
1257 | |||
1258 | # echo 'hrtimer_*' > /debug/tracing/set_ftrace_filter | ||
1162 | 1259 | ||
1163 | Produces: | 1260 | Produces: |
1164 | 1261 | ||
@@ -1213,7 +1310,7 @@ Again, now we want to append. | |||
1213 | # echo sys_nanosleep > /debug/tracing/set_ftrace_filter | 1310 | # echo sys_nanosleep > /debug/tracing/set_ftrace_filter |
1214 | # cat /debug/tracing/set_ftrace_filter | 1311 | # cat /debug/tracing/set_ftrace_filter |
1215 | sys_nanosleep | 1312 | sys_nanosleep |
1216 | # echo hrtimer_* >> /debug/tracing/set_ftrace_filter | 1313 | # echo 'hrtimer_*' >> /debug/tracing/set_ftrace_filter |
1217 | # cat /debug/tracing/set_ftrace_filter | 1314 | # cat /debug/tracing/set_ftrace_filter |
1218 | hrtimer_run_queues | 1315 | hrtimer_run_queues |
1219 | hrtimer_run_pending | 1316 | hrtimer_run_pending |
@@ -1299,41 +1396,29 @@ trace entries | |||
1299 | ------------- | 1396 | ------------- |
1300 | 1397 | ||
1301 | Having too much or not enough data can be troublesome in diagnosing | 1398 | Having too much or not enough data can be troublesome in diagnosing |
1302 | an issue in the kernel. The file trace_entries is used to modify | 1399 | an issue in the kernel. The file buffer_size_kb is used to modify |
1303 | the size of the internal trace buffers. The number listed | 1400 | the size of the internal trace buffers. The number listed |
1304 | is the number of entries that can be recorded per CPU. To know | 1401 | is the number of entries that can be recorded per CPU. To know |
1305 | the full size, multiply the number of possible CPUS with the | 1402 | the full size, multiply the number of possible CPUS with the |
1306 | number of entries. | 1403 | number of entries. |
1307 | 1404 | ||
1308 | # cat /debug/tracing/trace_entries | 1405 | # cat /debug/tracing/buffer_size_kb |
1309 | 65620 | 1406 | 1408 (units kilobytes) |
1310 | 1407 | ||
1311 | Note, to modify this, you must have tracing completely disabled. To do that, | 1408 | Note, to modify this, you must have tracing completely disabled. To do that, |
1312 | echo "nop" into the current_tracer. If the current_tracer is not set | 1409 | echo "nop" into the current_tracer. If the current_tracer is not set |
1313 | to "nop", an EINVAL error will be returned. | 1410 | to "nop", an EINVAL error will be returned. |
1314 | 1411 | ||
1315 | # echo nop > /debug/tracing/current_tracer | 1412 | # echo nop > /debug/tracing/current_tracer |
1316 | # echo 100000 > /debug/tracing/trace_entries | 1413 | # echo 10000 > /debug/tracing/buffer_size_kb |
1317 | # cat /debug/tracing/trace_entries | 1414 | # cat /debug/tracing/buffer_size_kb |
1318 | 100045 | 1415 | 10000 (units kilobytes) |
1319 | |||
1320 | |||
1321 | Notice that we echoed in 100,000 but the size is 100,045. The entries | ||
1322 | are held in individual pages. It allocates the number of pages it takes | ||
1323 | to fulfill the request. If more entries may fit on the last page | ||
1324 | then they will be added. | ||
1325 | |||
1326 | # echo 1 > /debug/tracing/trace_entries | ||
1327 | # cat /debug/tracing/trace_entries | ||
1328 | 85 | ||
1329 | |||
1330 | This shows us that 85 entries can fit in a single page. | ||
1331 | 1416 | ||
1332 | The number of pages which will be allocated is limited to a percentage | 1417 | The number of pages which will be allocated is limited to a percentage |
1333 | of available memory. Allocating too much will produce an error. | 1418 | of available memory. Allocating too much will produce an error. |
1334 | 1419 | ||
1335 | # echo 1000000000000 > /debug/tracing/trace_entries | 1420 | # echo 1000000000000 > /debug/tracing/buffer_size_kb |
1336 | -bash: echo: write error: Cannot allocate memory | 1421 | -bash: echo: write error: Cannot allocate memory |
1337 | # cat /debug/tracing/trace_entries | 1422 | # cat /debug/tracing/buffer_size_kb |
1338 | 85 | 1423 | 85 |
1339 | 1424 | ||
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index 7a7753321a26..51104f9194a5 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
@@ -383,6 +383,20 @@ more details, with real examples. | |||
383 | to prerequisites are referenced with $(src) (because they are not | 383 | to prerequisites are referenced with $(src) (because they are not |
384 | generated files). | 384 | generated files). |
385 | 385 | ||
386 | $(kecho) | ||
387 | echoing information to user in a rule is often a good practice | ||
388 | but when execution "make -s" one does not expect to see any output | ||
389 | except for warnings/errors. | ||
390 | To support this kbuild define $(kecho) which will echo out the | ||
391 | text following $(kecho) to stdout except if "make -s" is used. | ||
392 | |||
393 | Example: | ||
394 | #arch/blackfin/boot/Makefile | ||
395 | $(obj)/vmImage: $(obj)/vmlinux.gz | ||
396 | $(call if_changed,uimage) | ||
397 | @$(kecho) 'Kernel: $@ is ready' | ||
398 | |||
399 | |||
386 | --- 3.11 $(CC) support functions | 400 | --- 3.11 $(CC) support functions |
387 | 401 | ||
388 | The kernel may be built with several different versions of | 402 | The kernel may be built with several different versions of |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index e0f346d201ed..a2d8805c03d5 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -89,6 +89,7 @@ parameter is applicable: | |||
89 | SPARC Sparc architecture is enabled. | 89 | SPARC Sparc architecture is enabled. |
90 | SWSUSP Software suspend (hibernation) is enabled. | 90 | SWSUSP Software suspend (hibernation) is enabled. |
91 | SUSPEND System suspend states are enabled. | 91 | SUSPEND System suspend states are enabled. |
92 | FTRACE Function tracing enabled. | ||
92 | TS Appropriate touchscreen support is enabled. | 93 | TS Appropriate touchscreen support is enabled. |
93 | USB USB support is enabled. | 94 | USB USB support is enabled. |
94 | USBHID USB Human Interface Device support is enabled. | 95 | USBHID USB Human Interface Device support is enabled. |
@@ -220,14 +221,17 @@ and is between 256 and 4096 characters. It is defined in the file | |||
220 | Bits in debug_level correspond to a level in | 221 | Bits in debug_level correspond to a level in |
221 | ACPI_DEBUG_PRINT statements, e.g., | 222 | ACPI_DEBUG_PRINT statements, e.g., |
222 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, ... | 223 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, ... |
223 | See Documentation/acpi/debug.txt for more information | 224 | The debug_level mask defaults to "info". See |
224 | about debug layers and levels. | 225 | Documentation/acpi/debug.txt for more information about |
226 | debug layers and levels. | ||
225 | 227 | ||
228 | Enable processor driver info messages: | ||
229 | acpi.debug_layer=0x20000000 | ||
230 | Enable PCI/PCI interrupt routing info messages: | ||
231 | acpi.debug_layer=0x400000 | ||
226 | Enable AML "Debug" output, i.e., stores to the Debug | 232 | Enable AML "Debug" output, i.e., stores to the Debug |
227 | object while interpreting AML: | 233 | object while interpreting AML: |
228 | acpi.debug_layer=0xffffffff acpi.debug_level=0x2 | 234 | acpi.debug_layer=0xffffffff acpi.debug_level=0x2 |
229 | Enable PCI/PCI interrupt routing info messages: | ||
230 | acpi.debug_layer=0x400000 acpi.debug_level=0x4 | ||
231 | Enable all messages related to ACPI hardware: | 235 | Enable all messages related to ACPI hardware: |
232 | acpi.debug_layer=0x2 acpi.debug_level=0xffffffff | 236 | acpi.debug_layer=0x2 acpi.debug_level=0xffffffff |
233 | 237 | ||
@@ -750,6 +754,14 @@ and is between 256 and 4096 characters. It is defined in the file | |||
750 | parameter will force ia64_sal_cache_flush to call | 754 | parameter will force ia64_sal_cache_flush to call |
751 | ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. | 755 | ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. |
752 | 756 | ||
757 | ftrace=[tracer] | ||
758 | [ftrace] will set and start the specified tracer | ||
759 | as early as possible in order to facilitate early | ||
760 | boot debugging. | ||
761 | |||
762 | ftrace_dump_on_oops | ||
763 | [ftrace] will dump the trace buffers on oops. | ||
764 | |||
753 | gamecon.map[2|3]= | 765 | gamecon.map[2|3]= |
754 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad | 766 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad |
755 | support via parallel port (up to 5 devices per port) | 767 | support via parallel port (up to 5 devices per port) |
@@ -811,6 +823,9 @@ and is between 256 and 4096 characters. It is defined in the file | |||
811 | 823 | ||
812 | hlt [BUGS=ARM,SH] | 824 | hlt [BUGS=ARM,SH] |
813 | 825 | ||
826 | hvc_iucv= [S390] Number of z/VM IUCV Hypervisor console (HVC) | ||
827 | back-ends. Valid parameters: 0..8 | ||
828 | |||
814 | i8042.debug [HW] Toggle i8042 debug mode | 829 | i8042.debug [HW] Toggle i8042 debug mode |
815 | i8042.direct [HW] Put keyboard port into non-translated mode | 830 | i8042.direct [HW] Put keyboard port into non-translated mode |
816 | i8042.dumbkbd [HW] Pretend that controller can only read data from | 831 | i8042.dumbkbd [HW] Pretend that controller can only read data from |
@@ -1393,7 +1408,20 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1393 | when a NMI is triggered. | 1408 | when a NMI is triggered. |
1394 | Format: [state][,regs][,debounce][,die] | 1409 | Format: [state][,regs][,debounce][,die] |
1395 | 1410 | ||
1396 | nmi_watchdog= [KNL,BUGS=X86-32] Debugging features for SMP kernels | 1411 | nmi_watchdog= [KNL,BUGS=X86-32,X86-64] Debugging features for SMP kernels |
1412 | Format: [panic,][num] | ||
1413 | Valid num: 0,1,2 | ||
1414 | 0 - turn nmi_watchdog off | ||
1415 | 1 - use the IO-APIC timer for the NMI watchdog | ||
1416 | 2 - use the local APIC for the NMI watchdog using | ||
1417 | a performance counter. Note: This will use one performance | ||
1418 | counter and the local APIC's performance vector. | ||
1419 | When panic is specified panic when an NMI watchdog timeout occurs. | ||
1420 | This is useful when you use a panic=... timeout and need the box | ||
1421 | quickly up again. | ||
1422 | Instead of 1 and 2 it is possible to use the following | ||
1423 | symbolic names: lapic and ioapic | ||
1424 | Example: nmi_watchdog=2 or nmi_watchdog=panic,lapic | ||
1397 | 1425 | ||
1398 | no387 [BUGS=X86-32] Tells the kernel to use the 387 maths | 1426 | no387 [BUGS=X86-32] Tells the kernel to use the 387 maths |
1399 | emulation library even if a 387 maths coprocessor | 1427 | emulation library even if a 387 maths coprocessor |
@@ -1449,6 +1477,10 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1449 | instruction doesn't work correctly and not to | 1477 | instruction doesn't work correctly and not to |
1450 | use it. | 1478 | use it. |
1451 | 1479 | ||
1480 | no_file_caps Tells the kernel not to honor file capabilities. The | ||
1481 | only way then for a file to be executed with privilege | ||
1482 | is to be setuid root or executed by root. | ||
1483 | |||
1452 | nohalt [IA-64] Tells the kernel not to use the power saving | 1484 | nohalt [IA-64] Tells the kernel not to use the power saving |
1453 | function PAL_HALT_LIGHT when idle. This increases | 1485 | function PAL_HALT_LIGHT when idle. This increases |
1454 | power-consumption. On the positive side, it reduces | 1486 | power-consumption. On the positive side, it reduces |
@@ -1626,6 +1658,17 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1626 | nomsi [MSI] If the PCI_MSI kernel config parameter is | 1658 | nomsi [MSI] If the PCI_MSI kernel config parameter is |
1627 | enabled, this kernel boot option can be used to | 1659 | enabled, this kernel boot option can be used to |
1628 | disable the use of MSI interrupts system-wide. | 1660 | disable the use of MSI interrupts system-wide. |
1661 | noioapicquirk [APIC] Disable all boot interrupt quirks. | ||
1662 | Safety option to keep boot IRQs enabled. This | ||
1663 | should never be necessary. | ||
1664 | ioapicreroute [APIC] Enable rerouting of boot IRQs to the | ||
1665 | primary IO-APIC for bridges that cannot disable | ||
1666 | boot IRQs. This fixes a source of spurious IRQs | ||
1667 | when the system masks IRQs. | ||
1668 | noioapicreroute [APIC] Disable workaround that uses the | ||
1669 | boot IRQ equivalent of an IRQ that connects to | ||
1670 | a chipset where boot IRQs cannot be disabled. | ||
1671 | The opposite of ioapicreroute. | ||
1629 | biosirq [X86-32] Use PCI BIOS calls to get the interrupt | 1672 | biosirq [X86-32] Use PCI BIOS calls to get the interrupt |
1630 | routing table. These calls are known to be buggy | 1673 | routing table. These calls are known to be buggy |
1631 | on several machines and they hang the machine | 1674 | on several machines and they hang the machine |
@@ -2165,6 +2208,9 @@ and is between 256 and 4096 characters. It is defined in the file | |||
2165 | st= [HW,SCSI] SCSI tape parameters (buffers, etc.) | 2208 | st= [HW,SCSI] SCSI tape parameters (buffers, etc.) |
2166 | See Documentation/scsi/st.txt. | 2209 | See Documentation/scsi/st.txt. |
2167 | 2210 | ||
2211 | stacktrace [FTRACE] | ||
2212 | Enabled the stack tracer on boot up. | ||
2213 | |||
2168 | sti= [PARISC,HW] | 2214 | sti= [PARISC,HW] |
2169 | Format: <num> | 2215 | Format: <num> |
2170 | Set the STI (builtin display/keyboard on the HP-PARISC | 2216 | Set the STI (builtin display/keyboard on the HP-PARISC |
@@ -2249,12 +2295,27 @@ and is between 256 and 4096 characters. It is defined in the file | |||
2249 | See comment before function dc390_setup() in | 2295 | See comment before function dc390_setup() in |
2250 | drivers/scsi/tmscsim.c. | 2296 | drivers/scsi/tmscsim.c. |
2251 | 2297 | ||
2298 | topology= [S390] | ||
2299 | Format: {off | on} | ||
2300 | Specify if the kernel should make use of the cpu | ||
2301 | topology informations if the hardware supports these. | ||
2302 | The scheduler will make use of these informations and | ||
2303 | e.g. base its process migration decisions on it. | ||
2304 | Default is off. | ||
2305 | |||
2252 | tp720= [HW,PS2] | 2306 | tp720= [HW,PS2] |
2253 | 2307 | ||
2254 | trix= [HW,OSS] MediaTrix AudioTrix Pro | 2308 | trix= [HW,OSS] MediaTrix AudioTrix Pro |
2255 | Format: | 2309 | Format: |
2256 | <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> | 2310 | <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> |
2257 | 2311 | ||
2312 | tsc= Disable clocksource-must-verify flag for TSC. | ||
2313 | Format: <string> | ||
2314 | [x86] reliable: mark tsc clocksource as reliable, this | ||
2315 | disables clocksource verification at runtime. | ||
2316 | Used to enable high-resolution timer mode on older | ||
2317 | hardware, and in virtualized environment. | ||
2318 | |||
2258 | turbografx.map[2|3]= [HW,JOY] | 2319 | turbografx.map[2|3]= [HW,JOY] |
2259 | TurboGraFX parallel port interface | 2320 | TurboGraFX parallel port interface |
2260 | Format: | 2321 | Format: |
diff --git a/Documentation/markers.txt b/Documentation/markers.txt index 089f6138fcd9..d2b3d0e91b26 100644 --- a/Documentation/markers.txt +++ b/Documentation/markers.txt | |||
@@ -51,11 +51,16 @@ to call) for the specific marker through marker_probe_register() and can be | |||
51 | activated by calling marker_arm(). Marker deactivation can be done by calling | 51 | activated by calling marker_arm(). Marker deactivation can be done by calling |
52 | marker_disarm() as many times as marker_arm() has been called. Removing a probe | 52 | marker_disarm() as many times as marker_arm() has been called. Removing a probe |
53 | is done through marker_probe_unregister(); it will disarm the probe. | 53 | is done through marker_probe_unregister(); it will disarm the probe. |
54 | marker_synchronize_unregister() must be called before the end of the module exit | 54 | |
55 | function to make sure there is no caller left using the probe. This, and the | 55 | marker_synchronize_unregister() must be called between probe unregistration and |
56 | fact that preemption is disabled around the probe call, make sure that probe | 56 | the first occurrence of |
57 | removal and module unload are safe. See the "Probe example" section below for a | 57 | - the end of module exit function, |
58 | sample probe module. | 58 | to make sure there is no caller left using the probe; |
59 | - the free of any resource used by the probes, | ||
60 | to make sure the probes wont be accessing invalid data. | ||
61 | This, and the fact that preemption is disabled around the probe call, make sure | ||
62 | that probe removal and module unload are safe. See the "Probe example" section | ||
63 | below for a sample probe module. | ||
59 | 64 | ||
60 | The marker mechanism supports inserting multiple instances of the same marker. | 65 | The marker mechanism supports inserting multiple instances of the same marker. |
61 | Markers can be put in inline functions, inlined static functions, and | 66 | Markers can be put in inline functions, inlined static functions, and |
@@ -70,6 +75,20 @@ a printk warning which identifies the inconsistency: | |||
70 | 75 | ||
71 | "Format mismatch for probe probe_name (format), marker (format)" | 76 | "Format mismatch for probe probe_name (format), marker (format)" |
72 | 77 | ||
78 | Another way to use markers is to simply define the marker without generating any | ||
79 | function call to actually call into the marker. This is useful in combination | ||
80 | with tracepoint probes in a scheme like this : | ||
81 | |||
82 | void probe_tracepoint_name(unsigned int arg1, struct task_struct *tsk); | ||
83 | |||
84 | DEFINE_MARKER_TP(marker_eventname, tracepoint_name, probe_tracepoint_name, | ||
85 | "arg1 %u pid %d"); | ||
86 | |||
87 | notrace void probe_tracepoint_name(unsigned int arg1, struct task_struct *tsk) | ||
88 | { | ||
89 | struct marker *marker = &GET_MARKER(kernel_irq_entry); | ||
90 | /* write data to trace buffers ... */ | ||
91 | } | ||
73 | 92 | ||
74 | * Probe / marker example | 93 | * Probe / marker example |
75 | 94 | ||
diff --git a/Documentation/networking/README.ipw2200 b/Documentation/networking/README.ipw2200 index 4f2a40f1dbc6..80c728522c4c 100644 --- a/Documentation/networking/README.ipw2200 +++ b/Documentation/networking/README.ipw2200 | |||
@@ -147,7 +147,7 @@ Where the supported parameter are: | |||
147 | driver. If disabled, the driver will not attempt to scan | 147 | driver. If disabled, the driver will not attempt to scan |
148 | for and associate to a network until it has been configured with | 148 | for and associate to a network until it has been configured with |
149 | one or more properties for the target network, for example configuring | 149 | one or more properties for the target network, for example configuring |
150 | the network SSID. Default is 1 (auto-associate) | 150 | the network SSID. Default is 0 (do not auto-associate) |
151 | 151 | ||
152 | Example: % modprobe ipw2200 associate=0 | 152 | Example: % modprobe ipw2200 associate=0 |
153 | 153 | ||
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 688dfe1e6b70..5ede7473b425 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -194,6 +194,48 @@ or, for backwards compatibility, the option value. E.g., | |||
194 | 194 | ||
195 | The parameters are as follows: | 195 | The parameters are as follows: |
196 | 196 | ||
197 | ad_select | ||
198 | |||
199 | Specifies the 802.3ad aggregation selection logic to use. The | ||
200 | possible values and their effects are: | ||
201 | |||
202 | stable or 0 | ||
203 | |||
204 | The active aggregator is chosen by largest aggregate | ||
205 | bandwidth. | ||
206 | |||
207 | Reselection of the active aggregator occurs only when all | ||
208 | slaves of the active aggregator are down or the active | ||
209 | aggregator has no slaves. | ||
210 | |||
211 | This is the default value. | ||
212 | |||
213 | bandwidth or 1 | ||
214 | |||
215 | The active aggregator is chosen by largest aggregate | ||
216 | bandwidth. Reselection occurs if: | ||
217 | |||
218 | - A slave is added to or removed from the bond | ||
219 | |||
220 | - Any slave's link state changes | ||
221 | |||
222 | - Any slave's 802.3ad association state changes | ||
223 | |||
224 | - The bond's adminstrative state changes to up | ||
225 | |||
226 | count or 2 | ||
227 | |||
228 | The active aggregator is chosen by the largest number of | ||
229 | ports (slaves). Reselection occurs as described under the | ||
230 | "bandwidth" setting, above. | ||
231 | |||
232 | The bandwidth and count selection policies permit failover of | ||
233 | 802.3ad aggregations when partial failure of the active aggregator | ||
234 | occurs. This keeps the aggregator with the highest availability | ||
235 | (either in bandwidth or in number of ports) active at all times. | ||
236 | |||
237 | This option was added in bonding version 3.4.0. | ||
238 | |||
197 | arp_interval | 239 | arp_interval |
198 | 240 | ||
199 | Specifies the ARP link monitoring frequency in milliseconds. | 241 | Specifies the ARP link monitoring frequency in milliseconds. |
@@ -551,6 +593,16 @@ num_grat_arp | |||
551 | affects only the active-backup mode. This option was added for | 593 | affects only the active-backup mode. This option was added for |
552 | bonding version 3.3.0. | 594 | bonding version 3.3.0. |
553 | 595 | ||
596 | num_unsol_na | ||
597 | |||
598 | Specifies the number of unsolicited IPv6 Neighbor Advertisements | ||
599 | to be issued after a failover event. One unsolicited NA is issued | ||
600 | immediately after the failover. | ||
601 | |||
602 | The valid range is 0 - 255; the default value is 1. This option | ||
603 | affects only the active-backup mode. This option was added for | ||
604 | bonding version 3.4.0. | ||
605 | |||
554 | primary | 606 | primary |
555 | 607 | ||
556 | A string (eth0, eth2, etc) specifying which slave is the | 608 | A string (eth0, eth2, etc) specifying which slave is the |
@@ -922,17 +974,19 @@ USERCTL=no | |||
922 | NETMASK, NETWORK and BROADCAST) to match your network configuration. | 974 | NETMASK, NETWORK and BROADCAST) to match your network configuration. |
923 | 975 | ||
924 | For later versions of initscripts, such as that found with Fedora | 976 | For later versions of initscripts, such as that found with Fedora |
925 | 7 and Red Hat Enterprise Linux version 5 (or later), it is possible, and, | 977 | 7 (or later) and Red Hat Enterprise Linux version 5 (or later), it is possible, |
926 | indeed, preferable, to specify the bonding options in the ifcfg-bond0 | 978 | and, indeed, preferable, to specify the bonding options in the ifcfg-bond0 |
927 | file, e.g. a line of the format: | 979 | file, e.g. a line of the format: |
928 | 980 | ||
929 | BONDING_OPTS="mode=active-backup arp_interval=60 arp_ip_target=+192.168.1.254" | 981 | BONDING_OPTS="mode=active-backup arp_interval=60 arp_ip_target=192.168.1.254" |
930 | 982 | ||
931 | will configure the bond with the specified options. The options | 983 | will configure the bond with the specified options. The options |
932 | specified in BONDING_OPTS are identical to the bonding module parameters | 984 | specified in BONDING_OPTS are identical to the bonding module parameters |
933 | except for the arp_ip_target field. Each target should be included as a | 985 | except for the arp_ip_target field when using versions of initscripts older |
934 | separate option and should be preceded by a '+' to indicate it should be | 986 | than and 8.57 (Fedora 8) and 8.45.19 (Red Hat Enterprise Linux 5.2). When |
935 | added to the list of queried targets, e.g., | 987 | using older versions each target should be included as a separate option and |
988 | should be preceded by a '+' to indicate it should be added to the list of | ||
989 | queried targets, e.g., | ||
936 | 990 | ||
937 | arp_ip_target=+192.168.1.1 arp_ip_target=+192.168.1.2 | 991 | arp_ip_target=+192.168.1.1 arp_ip_target=+192.168.1.2 |
938 | 992 | ||
@@ -940,7 +994,7 @@ added to the list of queried targets, e.g., | |||
940 | options via BONDING_OPTS, it is not necessary to edit /etc/modules.conf or | 994 | options via BONDING_OPTS, it is not necessary to edit /etc/modules.conf or |
941 | /etc/modprobe.conf. | 995 | /etc/modprobe.conf. |
942 | 996 | ||
943 | For older versions of initscripts that do not support | 997 | For even older versions of initscripts that do not support |
944 | BONDING_OPTS, it is necessary to edit /etc/modules.conf (or | 998 | BONDING_OPTS, it is necessary to edit /etc/modules.conf (or |
945 | /etc/modprobe.conf, depending upon your distro) to load the bonding module | 999 | /etc/modprobe.conf, depending upon your distro) to load the bonding module |
946 | with your desired options when the bond0 interface is brought up. The | 1000 | with your desired options when the bond0 interface is brought up. The |
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt index 39131a3c78f8..7a3bb1abb830 100644 --- a/Documentation/networking/dccp.txt +++ b/Documentation/networking/dccp.txt | |||
@@ -57,6 +57,24 @@ can be set before calling bind(). | |||
57 | DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet | 57 | DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet |
58 | size (application payload size) in bytes, see RFC 4340, section 14. | 58 | size (application payload size) in bytes, see RFC 4340, section 14. |
59 | 59 | ||
60 | DCCP_SOCKOPT_AVAILABLE_CCIDS is also read-only and returns the list of CCIDs | ||
61 | supported by the endpoint (see include/linux/dccp.h for symbolic constants). | ||
62 | The caller needs to provide a sufficiently large (> 2) array of type uint8_t. | ||
63 | |||
64 | DCCP_SOCKOPT_CCID is write-only and sets both the TX and RX CCIDs at the same | ||
65 | time, combining the operation of the next two socket options. This option is | ||
66 | preferrable over the latter two, since often applications will use the same | ||
67 | type of CCID for both directions; and mixed use of CCIDs is not currently well | ||
68 | understood. This socket option takes as argument at least one uint8_t value, or | ||
69 | an array of uint8_t values, which must match available CCIDS (see above). CCIDs | ||
70 | must be registered on the socket before calling connect() or listen(). | ||
71 | |||
72 | DCCP_SOCKOPT_TX_CCID is read/write. It returns the current CCID (if set) or sets | ||
73 | the preference list for the TX CCID, using the same format as DCCP_SOCKOPT_CCID. | ||
74 | Please note that the getsockopt argument type here is `int', not uint8_t. | ||
75 | |||
76 | DCCP_SOCKOPT_RX_CCID is analogous to DCCP_SOCKOPT_TX_CCID, but for the RX CCID. | ||
77 | |||
60 | DCCP_SOCKOPT_SERVER_TIMEWAIT enables the server (listening socket) to hold | 78 | DCCP_SOCKOPT_SERVER_TIMEWAIT enables the server (listening socket) to hold |
61 | timewait state when closing the connection (RFC 4340, 8.3). The usual case is | 79 | timewait state when closing the connection (RFC 4340, 8.3). The usual case is |
62 | that the closing server sends a CloseReq, whereupon the client holds timewait | 80 | that the closing server sends a CloseReq, whereupon the client holds timewait |
@@ -115,20 +133,12 @@ retries2 | |||
115 | importance for retransmitted acknowledgments and feature negotiation, | 133 | importance for retransmitted acknowledgments and feature negotiation, |
116 | data packets are never retransmitted. Analogue of tcp_retries2. | 134 | data packets are never retransmitted. Analogue of tcp_retries2. |
117 | 135 | ||
118 | send_ndp = 1 | ||
119 | Whether or not to send NDP count options (sec. 7.7.2). | ||
120 | |||
121 | send_ackvec = 1 | ||
122 | Whether or not to send Ack Vector options (sec. 11.5). | ||
123 | |||
124 | ack_ratio = 2 | ||
125 | The default Ack Ratio (sec. 11.3) to use. | ||
126 | |||
127 | tx_ccid = 2 | 136 | tx_ccid = 2 |
128 | Default CCID for the sender-receiver half-connection. | 137 | Default CCID for the sender-receiver half-connection. Depending on the |
138 | choice of CCID, the Send Ack Vector feature is enabled automatically. | ||
129 | 139 | ||
130 | rx_ccid = 2 | 140 | rx_ccid = 2 |
131 | Default CCID for the receiver-sender half-connection. | 141 | Default CCID for the receiver-sender half-connection; see tx_ccid. |
132 | 142 | ||
133 | seq_window = 100 | 143 | seq_window = 100 |
134 | The initial sequence window (sec. 7.5.2). | 144 | The initial sequence window (sec. 7.5.2). |
diff --git a/Documentation/networking/driver.txt b/Documentation/networking/driver.txt index ea72d2e66ca8..03283daa64fe 100644 --- a/Documentation/networking/driver.txt +++ b/Documentation/networking/driver.txt | |||
@@ -13,7 +13,7 @@ Transmit path guidelines: | |||
13 | static int drv_hard_start_xmit(struct sk_buff *skb, | 13 | static int drv_hard_start_xmit(struct sk_buff *skb, |
14 | struct net_device *dev) | 14 | struct net_device *dev) |
15 | { | 15 | { |
16 | struct drv *dp = dev->priv; | 16 | struct drv *dp = netdev_priv(dev); |
17 | 17 | ||
18 | lock_tx(dp); | 18 | lock_tx(dp); |
19 | ... | 19 | ... |
diff --git a/Documentation/networking/generic-hdlc.txt b/Documentation/networking/generic-hdlc.txt index 31bc8b759b75..4eb3cc40b702 100644 --- a/Documentation/networking/generic-hdlc.txt +++ b/Documentation/networking/generic-hdlc.txt | |||
@@ -3,15 +3,15 @@ Krzysztof Halasa <khc@pm.waw.pl> | |||
3 | 3 | ||
4 | 4 | ||
5 | Generic HDLC layer currently supports: | 5 | Generic HDLC layer currently supports: |
6 | 1. Frame Relay (ANSI, CCITT, Cisco and no LMI). | 6 | 1. Frame Relay (ANSI, CCITT, Cisco and no LMI) |
7 | - Normal (routed) and Ethernet-bridged (Ethernet device emulation) | 7 | - Normal (routed) and Ethernet-bridged (Ethernet device emulation) |
8 | interfaces can share a single PVC. | 8 | interfaces can share a single PVC. |
9 | - ARP support (no InARP support in the kernel - there is an | 9 | - ARP support (no InARP support in the kernel - there is an |
10 | experimental InARP user-space daemon available on: | 10 | experimental InARP user-space daemon available on: |
11 | http://www.kernel.org/pub/linux/utils/net/hdlc/). | 11 | http://www.kernel.org/pub/linux/utils/net/hdlc/). |
12 | 2. raw HDLC - either IP (IPv4) interface or Ethernet device emulation. | 12 | 2. raw HDLC - either IP (IPv4) interface or Ethernet device emulation |
13 | 3. Cisco HDLC. | 13 | 3. Cisco HDLC |
14 | 4. PPP (uses syncppp.c). | 14 | 4. PPP |
15 | 5. X.25 (uses X.25 routines). | 15 | 5. X.25 (uses X.25 routines). |
16 | 16 | ||
17 | Generic HDLC is a protocol driver only - it needs a low-level driver | 17 | Generic HDLC is a protocol driver only - it needs a low-level driver |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index d84932650fd3..c7712787933c 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -27,6 +27,12 @@ min_adv_mss - INTEGER | |||
27 | The advertised MSS depends on the first hop route MTU, but will | 27 | The advertised MSS depends on the first hop route MTU, but will |
28 | never be lower than this setting. | 28 | never be lower than this setting. |
29 | 29 | ||
30 | rt_cache_rebuild_count - INTEGER | ||
31 | The per net-namespace route cache emergency rebuild threshold. | ||
32 | Any net-namespace having its route cache rebuilt due to | ||
33 | a hash bucket chain being too long more than this many times | ||
34 | will have its route caching disabled | ||
35 | |||
30 | IP Fragmentation: | 36 | IP Fragmentation: |
31 | 37 | ||
32 | ipfrag_high_thresh - INTEGER | 38 | ipfrag_high_thresh - INTEGER |
diff --git a/Documentation/networking/mac80211_hwsim/README b/Documentation/networking/mac80211_hwsim/README index 2ff8ccb8dc37..24ac91d56698 100644 --- a/Documentation/networking/mac80211_hwsim/README +++ b/Documentation/networking/mac80211_hwsim/README | |||
@@ -50,10 +50,6 @@ associates with the AP. hostapd and wpa_supplicant are used to take | |||
50 | care of WPA2-PSK authentication. In addition, hostapd is also | 50 | care of WPA2-PSK authentication. In addition, hostapd is also |
51 | processing access point side of association. | 51 | processing access point side of association. |
52 | 52 | ||
53 | Please note that the current Linux kernel does not enable AP mode, so a | ||
54 | simple patch is needed to enable AP mode selection: | ||
55 | http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch | ||
56 | |||
57 | 53 | ||
58 | # Build mac80211_hwsim as part of kernel configuration | 54 | # Build mac80211_hwsim as part of kernel configuration |
59 | 55 | ||
@@ -65,3 +61,8 @@ hostapd hostapd.conf | |||
65 | 61 | ||
66 | # Run wpa_supplicant (station) for wlan1 | 62 | # Run wpa_supplicant (station) for wlan1 |
67 | wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf | 63 | wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf |
64 | |||
65 | |||
66 | More test cases are available in hostap.git: | ||
67 | git://w1.fi/srv/git/hostap.git and mac80211_hwsim/tests subdirectory | ||
68 | (http://w1.fi/gitweb/gitweb.cgi?p=hostap.git;a=tree;f=mac80211_hwsim/tests) | ||
diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt index d0f71fc7f782..a2ab6a0b116d 100644 --- a/Documentation/networking/netdevices.txt +++ b/Documentation/networking/netdevices.txt | |||
@@ -18,7 +18,7 @@ There are routines in net_init.c to handle the common cases of | |||
18 | alloc_etherdev, alloc_netdev. These reserve extra space for driver | 18 | alloc_etherdev, alloc_netdev. These reserve extra space for driver |
19 | private data which gets freed when the network device is freed. If | 19 | private data which gets freed when the network device is freed. If |
20 | separately allocated data is attached to the network device | 20 | separately allocated data is attached to the network device |
21 | (dev->priv) then it is up to the module exit handler to free that. | 21 | (netdev_priv(dev)) then it is up to the module exit handler to free that. |
22 | 22 | ||
23 | MTU | 23 | MTU |
24 | === | 24 | === |
diff --git a/Documentation/networking/regulatory.txt b/Documentation/networking/regulatory.txt index a96989a8ff35..dcf31648414a 100644 --- a/Documentation/networking/regulatory.txt +++ b/Documentation/networking/regulatory.txt | |||
@@ -131,11 +131,13 @@ are expected to do this during initialization. | |||
131 | 131 | ||
132 | r = zd_reg2alpha2(mac->regdomain, alpha2); | 132 | r = zd_reg2alpha2(mac->regdomain, alpha2); |
133 | if (!r) | 133 | if (!r) |
134 | regulatory_hint(hw->wiphy, alpha2, NULL); | 134 | regulatory_hint(hw->wiphy, alpha2); |
135 | 135 | ||
136 | Example code - drivers providing a built in regulatory domain: | 136 | Example code - drivers providing a built in regulatory domain: |
137 | -------------------------------------------------------------- | 137 | -------------------------------------------------------------- |
138 | 138 | ||
139 | [NOTE: This API is not currently available, it can be added when required] | ||
140 | |||
139 | If you have regulatory information you can obtain from your | 141 | If you have regulatory information you can obtain from your |
140 | driver and you *need* to use this we let you build a regulatory domain | 142 | driver and you *need* to use this we let you build a regulatory domain |
141 | structure and pass it to the wireless core. To do this you should | 143 | structure and pass it to the wireless core. To do this you should |
@@ -167,7 +169,6 @@ struct ieee80211_regdomain mydriver_jp_regdom = { | |||
167 | 169 | ||
168 | Then in some part of your code after your wiphy has been registered: | 170 | Then in some part of your code after your wiphy has been registered: |
169 | 171 | ||
170 | int r; | ||
171 | struct ieee80211_regdomain *rd; | 172 | struct ieee80211_regdomain *rd; |
172 | int size_of_regd; | 173 | int size_of_regd; |
173 | int num_rules = mydriver_jp_regdom.n_reg_rules; | 174 | int num_rules = mydriver_jp_regdom.n_reg_rules; |
@@ -178,17 +179,12 @@ Then in some part of your code after your wiphy has been registered: | |||
178 | 179 | ||
179 | rd = kzalloc(size_of_regd, GFP_KERNEL); | 180 | rd = kzalloc(size_of_regd, GFP_KERNEL); |
180 | if (!rd) | 181 | if (!rd) |
181 | return -ENOMEM; | 182 | return -ENOMEM; |
182 | 183 | ||
183 | memcpy(rd, &mydriver_jp_regdom, sizeof(struct ieee80211_regdomain)); | 184 | memcpy(rd, &mydriver_jp_regdom, sizeof(struct ieee80211_regdomain)); |
184 | 185 | ||
185 | for (i=0; i < num_rules; i++) { | 186 | for (i=0; i < num_rules; i++) |
186 | memcpy(&rd->reg_rules[i], &mydriver_jp_regdom.reg_rules[i], | 187 | memcpy(&rd->reg_rules[i], |
187 | sizeof(struct ieee80211_reg_rule)); | 188 | &mydriver_jp_regdom.reg_rules[i], |
188 | } | 189 | sizeof(struct ieee80211_reg_rule)); |
189 | r = regulatory_hint(hw->wiphy, NULL, rd); | 190 | regulatory_struct_hint(rd); |
190 | if (r) { | ||
191 | kfree(rd); | ||
192 | return r; | ||
193 | } | ||
194 | |||
diff --git a/Documentation/nmi_watchdog.txt b/Documentation/nmi_watchdog.txt index 90aa4531cb67..bf9f80a98282 100644 --- a/Documentation/nmi_watchdog.txt +++ b/Documentation/nmi_watchdog.txt | |||
@@ -69,6 +69,11 @@ to the overall system performance. | |||
69 | On x86 nmi_watchdog is disabled by default so you have to enable it with | 69 | On x86 nmi_watchdog is disabled by default so you have to enable it with |
70 | a boot time parameter. | 70 | a boot time parameter. |
71 | 71 | ||
72 | It's possible to disable the NMI watchdog in run-time by writing "0" to | ||
73 | /proc/sys/kernel/nmi_watchdog. Writing "1" to the same file will re-enable | ||
74 | the NMI watchdog. Notice that you still need to use "nmi_watchdog=" parameter | ||
75 | at boot time. | ||
76 | |||
72 | NOTE: In kernels prior to 2.4.2-ac18 the NMI-oopser is enabled unconditionally | 77 | NOTE: In kernels prior to 2.4.2-ac18 the NMI-oopser is enabled unconditionally |
73 | on x86 SMP boxes. | 78 | on x86 SMP boxes. |
74 | 79 | ||
diff --git a/Documentation/powerpc/dts-bindings/fsl/tsec.txt b/Documentation/powerpc/dts-bindings/fsl/tsec.txt index cf55fa4112d2..7fa4b27574b5 100644 --- a/Documentation/powerpc/dts-bindings/fsl/tsec.txt +++ b/Documentation/powerpc/dts-bindings/fsl/tsec.txt | |||
@@ -2,8 +2,8 @@ | |||
2 | 2 | ||
3 | The MDIO is a bus to which the PHY devices are connected. For each | 3 | The MDIO is a bus to which the PHY devices are connected. For each |
4 | device that exists on this bus, a child node should be created. See | 4 | device that exists on this bus, a child node should be created. See |
5 | the definition of the PHY node below for an example of how to define | 5 | the definition of the PHY node in booting-without-of.txt for an example |
6 | a PHY. | 6 | of how to define a PHY. |
7 | 7 | ||
8 | Required properties: | 8 | Required properties: |
9 | - reg : Offset and length of the register set for the device | 9 | - reg : Offset and length of the register set for the device |
@@ -21,6 +21,14 @@ Example: | |||
21 | }; | 21 | }; |
22 | }; | 22 | }; |
23 | 23 | ||
24 | * TBI Internal MDIO bus | ||
25 | |||
26 | As of this writing, every tsec is associated with an internal TBI PHY. | ||
27 | This PHY is accessed through the local MDIO bus. These buses are defined | ||
28 | similarly to the mdio buses, except they are compatible with "fsl,gianfar-tbi". | ||
29 | The TBI PHYs underneath them are similar to normal PHYs, but the reg property | ||
30 | is considered instructive, rather than descriptive. The reg property should | ||
31 | be chosen so it doesn't interfere with other PHYs on the bus. | ||
24 | 32 | ||
25 | * Gianfar-compatible ethernet nodes | 33 | * Gianfar-compatible ethernet nodes |
26 | 34 | ||
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt index b65f0799df48..4d3ee317a4a3 100644 --- a/Documentation/rfkill.txt +++ b/Documentation/rfkill.txt | |||
@@ -191,12 +191,20 @@ Userspace input handlers (uevents) or kernel input handlers (rfkill-input): | |||
191 | to tell the devices registered with the rfkill class to change | 191 | to tell the devices registered with the rfkill class to change |
192 | their state (i.e. translates the input layer event into real | 192 | their state (i.e. translates the input layer event into real |
193 | action). | 193 | action). |
194 | |||
194 | * rfkill-input implements EPO by handling EV_SW SW_RFKILL_ALL 0 | 195 | * rfkill-input implements EPO by handling EV_SW SW_RFKILL_ALL 0 |
195 | (power off all transmitters) in a special way: it ignores any | 196 | (power off all transmitters) in a special way: it ignores any |
196 | overrides and local state cache and forces all transmitters to the | 197 | overrides and local state cache and forces all transmitters to the |
197 | RFKILL_STATE_SOFT_BLOCKED state (including those which are already | 198 | RFKILL_STATE_SOFT_BLOCKED state (including those which are already |
198 | supposed to be BLOCKED). Note that the opposite event (power on all | 199 | supposed to be BLOCKED). |
199 | transmitters) is handled normally. | 200 | * rfkill EPO will remain active until rfkill-input receives an |
201 | EV_SW SW_RFKILL_ALL 1 event. While the EPO is active, transmitters | ||
202 | are locked in the blocked state (rfkill will refuse to unblock them). | ||
203 | * rfkill-input implements different policies that the user can | ||
204 | select for handling EV_SW SW_RFKILL_ALL 1. It will unlock rfkill, | ||
205 | and either do nothing (leave transmitters blocked, but now unlocked), | ||
206 | restore the transmitters to their state before the EPO, or unblock | ||
207 | them all. | ||
200 | 208 | ||
201 | Userspace uevent handler or kernel platform-specific drivers hooked to the | 209 | Userspace uevent handler or kernel platform-specific drivers hooked to the |
202 | rfkill notifier chain: | 210 | rfkill notifier chain: |
@@ -331,11 +339,9 @@ class to get a sysfs interface :-) | |||
331 | correct event for your switch/button. These events are emergency power-off | 339 | correct event for your switch/button. These events are emergency power-off |
332 | events when they are trying to turn the transmitters off. An example of an | 340 | events when they are trying to turn the transmitters off. An example of an |
333 | input device which SHOULD generate *_RFKILL_ALL events is the wireless-kill | 341 | input device which SHOULD generate *_RFKILL_ALL events is the wireless-kill |
334 | switch in a laptop which is NOT a hotkey, but a real switch that kills radios | 342 | switch in a laptop which is NOT a hotkey, but a real sliding/rocker switch. |
335 | in hardware, even if the O.S. has gone to lunch. An example of an input device | 343 | An example of an input device which SHOULD NOT generate *_RFKILL_ALL events by |
336 | which SHOULD NOT generate *_RFKILL_ALL events by default, is any sort of hot | 344 | default, is any sort of hot key that is type-specific (e.g. the one for WLAN). |
337 | key that does nothing by itself, as well as any hot key that is type-specific | ||
338 | (e.g. the one for WLAN). | ||
339 | 345 | ||
340 | 346 | ||
341 | 3.1 Guidelines for wireless device drivers | 347 | 3.1 Guidelines for wireless device drivers |
diff --git a/Documentation/scheduler/sched-arch.txt b/Documentation/scheduler/sched-arch.txt index 941615a9769b..d43dbcbd163b 100644 --- a/Documentation/scheduler/sched-arch.txt +++ b/Documentation/scheduler/sched-arch.txt | |||
@@ -8,7 +8,7 @@ Context switch | |||
8 | By default, the switch_to arch function is called with the runqueue | 8 | By default, the switch_to arch function is called with the runqueue |
9 | locked. This is usually not a problem unless switch_to may need to | 9 | locked. This is usually not a problem unless switch_to may need to |
10 | take the runqueue lock. This is usually due to a wake up operation in | 10 | take the runqueue lock. This is usually due to a wake up operation in |
11 | the context switch. See include/asm-ia64/system.h for an example. | 11 | the context switch. See arch/ia64/include/asm/system.h for an example. |
12 | 12 | ||
13 | To request the scheduler call switch_to with the runqueue unlocked, | 13 | To request the scheduler call switch_to with the runqueue unlocked, |
14 | you must `#define __ARCH_WANT_UNLOCKED_CTXSW` in a header file | 14 | you must `#define __ARCH_WANT_UNLOCKED_CTXSW` in a header file |
@@ -23,7 +23,7 @@ disabled. Interrupts may be enabled over the call if it is likely to | |||
23 | introduce a significant interrupt latency by adding the line | 23 | introduce a significant interrupt latency by adding the line |
24 | `#define __ARCH_WANT_INTERRUPTS_ON_CTXSW` in the same place as for | 24 | `#define __ARCH_WANT_INTERRUPTS_ON_CTXSW` in the same place as for |
25 | unlocked context switches. This define also implies | 25 | unlocked context switches. This define also implies |
26 | `__ARCH_WANT_UNLOCKED_CTXSW`. See include/asm-arm/system.h for an | 26 | `__ARCH_WANT_UNLOCKED_CTXSW`. See arch/arm/include/asm/system.h for an |
27 | example. | 27 | example. |
28 | 28 | ||
29 | 29 | ||
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt index eb471c7a905e..8398ca4ff4ed 100644 --- a/Documentation/scheduler/sched-design-CFS.txt +++ b/Documentation/scheduler/sched-design-CFS.txt | |||
@@ -273,3 +273,24 @@ task groups and modify their CPU share using the "cgroups" pseudo filesystem. | |||
273 | 273 | ||
274 | # #Launch gmplayer (or your favourite movie player) | 274 | # #Launch gmplayer (or your favourite movie player) |
275 | # echo <movie_player_pid> > multimedia/tasks | 275 | # echo <movie_player_pid> > multimedia/tasks |
276 | |||
277 | 8. Implementation note: user namespaces | ||
278 | |||
279 | User namespaces are intended to be hierarchical. But they are currently | ||
280 | only partially implemented. Each of those has ramifications for CFS. | ||
281 | |||
282 | First, since user namespaces are hierarchical, the /sys/kernel/uids | ||
283 | presentation is inadequate. Eventually we will likely want to use sysfs | ||
284 | tagging to provide private views of /sys/kernel/uids within each user | ||
285 | namespace. | ||
286 | |||
287 | Second, the hierarchical nature is intended to support completely | ||
288 | unprivileged use of user namespaces. So if using user groups, then | ||
289 | we want the users in a user namespace to be children of the user | ||
290 | who created it. | ||
291 | |||
292 | That is currently unimplemented. So instead, every user in a new | ||
293 | user namespace will receive 1024 shares just like any user in the | ||
294 | initial user namespace. Note that at the moment creation of a new | ||
295 | user namespace requires each of CAP_SYS_ADMIN, CAP_SETUID, and | ||
296 | CAP_SETGID. | ||
diff --git a/Documentation/sh/kgdb.txt b/Documentation/sh/kgdb.txt deleted file mode 100644 index 05b4ba89d28c..000000000000 --- a/Documentation/sh/kgdb.txt +++ /dev/null | |||
@@ -1,179 +0,0 @@ | |||
1 | |||
2 | This file describes the configuration and behavior of KGDB for the SH | ||
3 | kernel. Based on a description from Henry Bell <henry.bell@st.com>, it | ||
4 | has been modified to account for quirks in the current implementation. | ||
5 | |||
6 | Version | ||
7 | ======= | ||
8 | |||
9 | This version of KGDB was written for 2.4.xx kernels for the SH architecture. | ||
10 | Further documentation is available from the linux-sh project website. | ||
11 | |||
12 | |||
13 | Debugging Setup: Host | ||
14 | ====================== | ||
15 | |||
16 | The two machines will be connected together via a serial line - this | ||
17 | should be a null modem cable i.e. with a twist. | ||
18 | |||
19 | On your DEVELOPMENT machine, go to your kernel source directory and | ||
20 | build the kernel, enabling KGDB support in the "kernel hacking" section. | ||
21 | This includes the KGDB code, and also makes the kernel be compiled with | ||
22 | the "-g" option set -- necessary for debugging. | ||
23 | |||
24 | To install this new kernel, use the following installation procedure. | ||
25 | |||
26 | Decide on which tty port you want the machines to communicate, then | ||
27 | cable them up back-to-back using the null modem. On the DEVELOPMENT | ||
28 | machine, you may wish to create an initialization file called .gdbinit | ||
29 | (in the kernel source directory or in your home directory) to execute | ||
30 | commonly-used commands at startup. | ||
31 | |||
32 | A minimal .gdbinit might look like this: | ||
33 | |||
34 | file vmlinux | ||
35 | set remotebaud 115200 | ||
36 | target remote /dev/ttyS0 | ||
37 | |||
38 | Change the "target" definition so that it specifies the tty port that | ||
39 | you intend to use. Change the "remotebaud" definition to match the | ||
40 | data rate that you are going to use for the com line (115200 is the | ||
41 | default). | ||
42 | |||
43 | Debugging Setup: Target | ||
44 | ======================== | ||
45 | |||
46 | By default, the KGDB stub will communicate with the host GDB using | ||
47 | ttySC1 at 115200 baud, 8 databits, no parity; these defaults can be | ||
48 | changed in the kernel configuration. As the kernel starts up, KGDB will | ||
49 | initialize so that breakpoints, kernel segfaults, and so forth will | ||
50 | generally enter the debugger. | ||
51 | |||
52 | This behavior can be modified by including the "kgdb" option in the | ||
53 | kernel command line; this option has the general form: | ||
54 | |||
55 | kgdb=<ttyspec>,<action> | ||
56 | |||
57 | The <ttyspec> indicates the port to use, and can optionally specify | ||
58 | baud, parity and databits -- e.g. "ttySC0,9600N8" or "ttySC1,19200". | ||
59 | |||
60 | The <action> can be "halt" or "disabled". The "halt" action enters the | ||
61 | debugger via a breakpoint as soon as kgdb is initialized; the "disabled" | ||
62 | action causes kgdb to ignore kernel segfaults and such until explicitly | ||
63 | entered by a breakpoint in the code or by external action (sysrq or NMI). | ||
64 | |||
65 | (Both <ttyspec> and <action> can appear alone, w/o the separating comma.) | ||
66 | |||
67 | For example, if you wish to debug early in kernel startup code, you | ||
68 | might specify the halt option: | ||
69 | |||
70 | kgdb=halt | ||
71 | |||
72 | Boot the TARGET machine, which will appear to hang. | ||
73 | |||
74 | On your DEVELOPMENT machine, cd to the source directory and run the gdb | ||
75 | program. (This is likely to be a cross GDB which runs on your host but | ||
76 | is built for an SH target.) If everything is working correctly you | ||
77 | should see gdb print out a few lines indicating that a breakpoint has | ||
78 | been taken. It will actually show a line of code in the target kernel | ||
79 | inside the gdbstub activation code. | ||
80 | |||
81 | NOTE: BE SURE TO TERMINATE OR SUSPEND any other host application which | ||
82 | may be using the same serial port (for example, a terminal emulator you | ||
83 | have been using to connect to the target boot code.) Otherwise, data | ||
84 | from the target may not all get to GDB! | ||
85 | |||
86 | You can now use whatever gdb commands you like to set breakpoints. | ||
87 | Enter "continue" to start your target machine executing again. At this | ||
88 | point the target system will run at full speed until it encounters | ||
89 | your breakpoint or gets a segment violation in the kernel, or whatever. | ||
90 | |||
91 | Serial Ports: KGDB, Console | ||
92 | ============================ | ||
93 | |||
94 | This version of KGDB may not gracefully handle conflict with other | ||
95 | drivers in the kernel using the same port. If KGDB is configured on the | ||
96 | same port (and with the same parameters) as the kernel console, or if | ||
97 | CONFIG_SH_KGDB_CONSOLE is configured, things should be fine (though in | ||
98 | some cases console messages may appear twice through GDB). But if the | ||
99 | KGDB port is not the kernel console and used by another serial driver | ||
100 | which assumes different serial parameters (e.g. baud rate) KGDB may not | ||
101 | recover. | ||
102 | |||
103 | Also, when KGDB is entered via sysrq-g (requires CONFIG_KGDB_SYSRQ) and | ||
104 | the kgdb port uses the same port as the console, detaching GDB will not | ||
105 | restore the console to working order without the port being re-opened. | ||
106 | |||
107 | Another serious consequence of this is that GDB currently CANNOT break | ||
108 | into KGDB externally (e.g. via ^C or <BREAK>); unless a breakpoint or | ||
109 | error is encountered, the only way to enter KGDB after the initial halt | ||
110 | (see above) is via NMI (CONFIG_KGDB_NMI) or sysrq-g (CONFIG_KGDB_SYSRQ). | ||
111 | |||
112 | Code is included for the basic Hitachi Solution Engine boards to allow | ||
113 | the use of ttyS0 for KGDB if desired; this is less robust, but may be | ||
114 | useful in some cases. (This cannot be selected using the config file, | ||
115 | but only through the kernel command line, e.g. "kgdb=ttyS0", though the | ||
116 | configured defaults for baud rate etc. still apply if not overridden.) | ||
117 | |||
118 | If gdbstub Does Not Work | ||
119 | ======================== | ||
120 | |||
121 | If it doesn't work, you will have to troubleshoot it. Do the easy | ||
122 | things first like double checking your cabling and data rates. You | ||
123 | might try some non-kernel based programs to see if the back-to-back | ||
124 | connection works properly. Just something simple like cat /etc/hosts | ||
125 | /dev/ttyS0 on one machine and cat /dev/ttyS0 on the other will tell you | ||
126 | if you can send data from one machine to the other. There is no point | ||
127 | in tearing out your hair in the kernel if the line doesn't work. | ||
128 | |||
129 | If you need to debug the GDB/KGDB communication itself, the gdb commands | ||
130 | "set debug remote 1" and "set debug serial 1" may be useful, but be | ||
131 | warned: they produce a lot of output. | ||
132 | |||
133 | Threads | ||
134 | ======= | ||
135 | |||
136 | Each process in a target machine is seen as a gdb thread. gdb thread related | ||
137 | commands (info threads, thread n) can be used. CONFIG_KGDB_THREAD must | ||
138 | be defined for this to work. | ||
139 | |||
140 | In this version, kgdb reports PID_MAX (32768) as the process ID for the | ||
141 | idle process (pid 0), since GDB does not accept 0 as an ID. | ||
142 | |||
143 | Detaching (exiting KGDB) | ||
144 | ========================= | ||
145 | |||
146 | There are two ways to resume full-speed target execution: "continue" and | ||
147 | "detach". With "continue", GDB inserts any specified breakpoints in the | ||
148 | target code and resumes execution; the target is still in "gdb mode". | ||
149 | If a breakpoint or other debug event (e.g. NMI) happens, the target | ||
150 | halts and communicates with GDB again, which is waiting for it. | ||
151 | |||
152 | With "detach", GDB does *not* insert any breakpoints; target execution | ||
153 | is resumed and GDB stops communicating (does not wait for the target). | ||
154 | In this case, the target is no longer in "gdb mode" -- for example, | ||
155 | console messages no longer get sent separately to the KGDB port, or | ||
156 | encapsulated for GDB. If a debug event (e.g. NMI) occurs, the target | ||
157 | will re-enter "gdb mode" and will display this fact on the console; you | ||
158 | must give a new "target remote" command to gdb. | ||
159 | |||
160 | NOTE: TO AVOID LOSSING CONSOLE MESSAGES IN CASE THE KERNEL CONSOLE AND | ||
161 | KGDB USING THE SAME PORT, THE TARGET WAITS FOR ANY INPUT CHARACTER ON | ||
162 | THE KGDB PORT AFTER A DETACH COMMAND. For example, after the detach you | ||
163 | could start a terminal emulator on the same host port and enter a <cr>; | ||
164 | however, this program must then be terminated or suspended in order to | ||
165 | use GBD again if KGDB is re-entered. | ||
166 | |||
167 | |||
168 | Acknowledgements | ||
169 | ================ | ||
170 | |||
171 | This code was mostly generated by Henry Bell <henry.bell@st.com>; | ||
172 | largely from KGDB by Amit S. Kale <akale@veritas.com> - extracts from | ||
173 | code by Glenn Engel, Jim Kingdon, David Grothe <dave@gcom.com>, Tigran | ||
174 | Aivazian <tigran@sco.com>, William Gatliff <bgat@open-widgets.com>, Ben | ||
175 | Lee, Steve Chamberlain and Benoit Miller <fulg@iname.com> are also | ||
176 | included. | ||
177 | |||
178 | Jeremy Siegel | ||
179 | <jsiegel@mvista.com> | ||
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 394d7d378dc7..841a9365d5fd 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -757,6 +757,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
757 | model - force the model name | 757 | model - force the model name |
758 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF) | 758 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF) |
759 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) | 759 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) |
760 | probe_only - Only probing and no codec initialization (default=off); | ||
761 | Useful to check the initial codec status for debugging | ||
760 | bdl_pos_adj - Specifies the DMA IRQ timing delay in samples. | 762 | bdl_pos_adj - Specifies the DMA IRQ timing delay in samples. |
761 | Passing -1 will make the driver to choose the appropriate | 763 | Passing -1 will make the driver to choose the appropriate |
762 | value based on the controller chip. | 764 | value based on the controller chip. |
@@ -772,327 +774,23 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
772 | 774 | ||
773 | This module supports multiple cards and autoprobe. | 775 | This module supports multiple cards and autoprobe. |
774 | 776 | ||
777 | See Documentation/sound/alsa/HD-Audio.txt for more details about | ||
778 | HD-audio driver. | ||
779 | |||
775 | Each codec may have a model table for different configurations. | 780 | Each codec may have a model table for different configurations. |
776 | If your machine isn't listed there, the default (usually minimal) | 781 | If your machine isn't listed there, the default (usually minimal) |
777 | configuration is set up. You can pass "model=<name>" option to | 782 | configuration is set up. You can pass "model=<name>" option to |
778 | specify a certain model in such a case. There are different | 783 | specify a certain model in such a case. There are different |
779 | models depending on the codec chip. | 784 | models depending on the codec chip. The list of available models |
780 | 785 | is found in HD-Audio-Models.txt | |
781 | Model name Description | ||
782 | ---------- ----------- | ||
783 | ALC880 | ||
784 | 3stack 3-jack in back and a headphone out | ||
785 | 3stack-digout 3-jack in back, a HP out and a SPDIF out | ||
786 | 5stack 5-jack in back, 2-jack in front | ||
787 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out | ||
788 | 6stack 6-jack in back, 2-jack in front | ||
789 | 6stack-digout 6-jack with a SPDIF out | ||
790 | w810 3-jack | ||
791 | z71v 3-jack (HP shared SPDIF) | ||
792 | asus 3-jack (ASUS Mobo) | ||
793 | asus-w1v ASUS W1V | ||
794 | asus-dig ASUS with SPDIF out | ||
795 | asus-dig2 ASUS with SPDIF out (using GPIO2) | ||
796 | uniwill 3-jack | ||
797 | fujitsu Fujitsu Laptops (Pi1536) | ||
798 | F1734 2-jack | ||
799 | lg LG laptop (m1 express dual) | ||
800 | lg-lw LG LW20/LW25 laptop | ||
801 | tcl TCL S700 | ||
802 | clevo Clevo laptops (m520G, m665n) | ||
803 | medion Medion Rim 2150 | ||
804 | test for testing/debugging purpose, almost all controls can be | ||
805 | adjusted. Appearing only when compiled with | ||
806 | $CONFIG_SND_DEBUG=y | ||
807 | auto auto-config reading BIOS (default) | ||
808 | |||
809 | ALC260 | ||
810 | hp HP machines | ||
811 | hp-3013 HP machines (3013-variant) | ||
812 | hp-dc7600 HP DC7600 | ||
813 | fujitsu Fujitsu S7020 | ||
814 | acer Acer TravelMate | ||
815 | will Will laptops (PB V7900) | ||
816 | replacer Replacer 672V | ||
817 | basic fixed pin assignment (old default model) | ||
818 | test for testing/debugging purpose, almost all controls can | ||
819 | adjusted. Appearing only when compiled with | ||
820 | $CONFIG_SND_DEBUG=y | ||
821 | auto auto-config reading BIOS (default) | ||
822 | |||
823 | ALC262 | ||
824 | fujitsu Fujitsu Laptop | ||
825 | hp-bpc HP xw4400/6400/8400/9400 laptops | ||
826 | hp-bpc-d7000 HP BPC D7000 | ||
827 | hp-tc-t5735 HP Thin Client T5735 | ||
828 | hp-rp5700 HP RP5700 | ||
829 | benq Benq ED8 | ||
830 | benq-t31 Benq T31 | ||
831 | hippo Hippo (ATI) with jack detection, Sony UX-90s | ||
832 | hippo_1 Hippo (Benq) with jack detection | ||
833 | sony-assamd Sony ASSAMD | ||
834 | toshiba-s06 Toshiba S06 | ||
835 | toshiba-rx1 Toshiba RX1 | ||
836 | ultra Samsung Q1 Ultra Vista model | ||
837 | lenovo-3000 Lenovo 3000 y410 | ||
838 | nec NEC Versa S9100 | ||
839 | basic fixed pin assignment w/o SPDIF | ||
840 | auto auto-config reading BIOS (default) | ||
841 | |||
842 | ALC267/268 | ||
843 | quanta-il1 Quanta IL1 mini-notebook | ||
844 | 3stack 3-stack model | ||
845 | toshiba Toshiba A205 | ||
846 | acer Acer laptops | ||
847 | acer-aspire Acer Aspire One | ||
848 | dell Dell OEM laptops (Vostro 1200) | ||
849 | zepto Zepto laptops | ||
850 | test for testing/debugging purpose, almost all controls can | ||
851 | adjusted. Appearing only when compiled with | ||
852 | $CONFIG_SND_DEBUG=y | ||
853 | auto auto-config reading BIOS (default) | ||
854 | |||
855 | ALC269 | ||
856 | basic Basic preset | ||
857 | quanta Quanta FL1 | ||
858 | eeepc-p703 ASUS Eeepc P703 P900A | ||
859 | eeepc-p901 ASUS Eeepc P901 S101 | ||
860 | |||
861 | ALC662/663 | ||
862 | 3stack-dig 3-stack (2-channel) with SPDIF | ||
863 | 3stack-6ch 3-stack (6-channel) | ||
864 | 3stack-6ch-dig 3-stack (6-channel) with SPDIF | ||
865 | 6stack-dig 6-stack with SPDIF | ||
866 | lenovo-101e Lenovo laptop | ||
867 | eeepc-p701 ASUS Eeepc P701 | ||
868 | eeepc-ep20 ASUS Eeepc EP20 | ||
869 | ecs ECS/Foxconn mobo | ||
870 | m51va ASUS M51VA | ||
871 | g71v ASUS G71V | ||
872 | h13 ASUS H13 | ||
873 | g50v ASUS G50V | ||
874 | asus-mode1 ASUS | ||
875 | asus-mode2 ASUS | ||
876 | asus-mode3 ASUS | ||
877 | asus-mode4 ASUS | ||
878 | asus-mode5 ASUS | ||
879 | asus-mode6 ASUS | ||
880 | auto auto-config reading BIOS (default) | ||
881 | |||
882 | ALC882/885 | ||
883 | 3stack-dig 3-jack with SPDIF I/O | ||
884 | 6stack-dig 6-jack digital with SPDIF I/O | ||
885 | arima Arima W820Di1 | ||
886 | targa Targa T8, MSI-1049 T8 | ||
887 | asus-a7j ASUS A7J | ||
888 | asus-a7m ASUS A7M | ||
889 | macpro MacPro support | ||
890 | mbp3 Macbook Pro rev3 | ||
891 | imac24 iMac 24'' with jack detection | ||
892 | w2jc ASUS W2JC | ||
893 | auto auto-config reading BIOS (default) | ||
894 | |||
895 | ALC883/888 | ||
896 | 3stack-dig 3-jack with SPDIF I/O | ||
897 | 6stack-dig 6-jack digital with SPDIF I/O | ||
898 | 3stack-6ch 3-jack 6-channel | ||
899 | 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O | ||
900 | 6stack-dig-demo 6-jack digital for Intel demo board | ||
901 | acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) | ||
902 | acer-aspire Acer Aspire 9810 | ||
903 | medion Medion Laptops | ||
904 | medion-md2 Medion MD2 | ||
905 | targa-dig Targa/MSI | ||
906 | targa-2ch-dig Targs/MSI with 2-channel | ||
907 | laptop-eapd 3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE) | ||
908 | lenovo-101e Lenovo 101E | ||
909 | lenovo-nb0763 Lenovo NB0763 | ||
910 | lenovo-ms7195-dig Lenovo MS7195 | ||
911 | lenovo-sky Lenovo Sky | ||
912 | haier-w66 Haier W66 | ||
913 | 3stack-hp HP machines with 3stack (Lucknow, Samba boards) | ||
914 | 6stack-dell Dell machines with 6stack (Inspiron 530) | ||
915 | mitac Mitac 8252D | ||
916 | clevo-m720 Clevo M720 laptop series | ||
917 | fujitsu-pi2515 Fujitsu AMILO Pi2515 | ||
918 | 3stack-6ch-intel Intel DG33* boards | ||
919 | auto auto-config reading BIOS (default) | ||
920 | |||
921 | ALC861/660 | ||
922 | 3stack 3-jack | ||
923 | 3stack-dig 3-jack with SPDIF I/O | ||
924 | 6stack-dig 6-jack with SPDIF I/O | ||
925 | 3stack-660 3-jack (for ALC660) | ||
926 | uniwill-m31 Uniwill M31 laptop | ||
927 | toshiba Toshiba laptop support | ||
928 | asus Asus laptop support | ||
929 | asus-laptop ASUS F2/F3 laptops | ||
930 | auto auto-config reading BIOS (default) | ||
931 | |||
932 | ALC861VD/660VD | ||
933 | 3stack 3-jack | ||
934 | 3stack-dig 3-jack with SPDIF OUT | ||
935 | 6stack-dig 6-jack with SPDIF OUT | ||
936 | 3stack-660 3-jack (for ALC660VD) | ||
937 | 3stack-660-digout 3-jack with SPDIF OUT (for ALC660VD) | ||
938 | lenovo Lenovo 3000 C200 | ||
939 | dallas Dallas laptops | ||
940 | hp HP TX1000 | ||
941 | auto auto-config reading BIOS (default) | ||
942 | |||
943 | CMI9880 | ||
944 | minimal 3-jack in back | ||
945 | min_fp 3-jack in back, 2-jack in front | ||
946 | full 6-jack in back, 2-jack in front | ||
947 | full_dig 6-jack in back, 2-jack in front, SPDIF I/O | ||
948 | allout 5-jack in back, 2-jack in front, SPDIF out | ||
949 | auto auto-config reading BIOS (default) | ||
950 | |||
951 | AD1882 / AD1882A | ||
952 | 3stack 3-stack mode (default) | ||
953 | 6stack 6-stack mode | ||
954 | |||
955 | AD1884A / AD1883 / AD1984A / AD1984B | ||
956 | desktop 3-stack desktop (default) | ||
957 | laptop laptop with HP jack sensing | ||
958 | mobile mobile devices with HP jack sensing | ||
959 | thinkpad Lenovo Thinkpad X300 | ||
960 | |||
961 | AD1884 | ||
962 | N/A | ||
963 | |||
964 | AD1981 | ||
965 | basic 3-jack (default) | ||
966 | hp HP nx6320 | ||
967 | thinkpad Lenovo Thinkpad T60/X60/Z60 | ||
968 | toshiba Toshiba U205 | ||
969 | |||
970 | AD1983 | ||
971 | N/A | ||
972 | |||
973 | AD1984 | ||
974 | basic default configuration | ||
975 | thinkpad Lenovo Thinkpad T61/X61 | ||
976 | dell Dell T3400 | ||
977 | |||
978 | AD1986A | ||
979 | 6stack 6-jack, separate surrounds (default) | ||
980 | 3stack 3-stack, shared surrounds | ||
981 | laptop 2-channel only (FSC V2060, Samsung M50) | ||
982 | laptop-eapd 2-channel with EAPD (Samsung R65, ASUS A6J) | ||
983 | laptop-automute 2-channel with EAPD and HP-automute (Lenovo N100) | ||
984 | ultra 2-channel with EAPD (Samsung Ultra tablet PC) | ||
985 | |||
986 | AD1988/AD1988B/AD1989A/AD1989B | ||
987 | 6stack 6-jack | ||
988 | 6stack-dig ditto with SPDIF | ||
989 | 3stack 3-jack | ||
990 | 3stack-dig ditto with SPDIF | ||
991 | laptop 3-jack with hp-jack automute | ||
992 | laptop-dig ditto with SPDIF | ||
993 | auto auto-config reading BIOS (default) | ||
994 | |||
995 | Conexant 5045 | ||
996 | laptop-hpsense Laptop with HP sense (old model laptop) | ||
997 | laptop-micsense Laptop with Mic sense (old model fujitsu) | ||
998 | laptop-hpmicsense Laptop with HP and Mic senses | ||
999 | benq Benq R55E | ||
1000 | test for testing/debugging purpose, almost all controls | ||
1001 | can be adjusted. Appearing only when compiled with | ||
1002 | $CONFIG_SND_DEBUG=y | ||
1003 | |||
1004 | Conexant 5047 | ||
1005 | laptop Basic Laptop config | ||
1006 | laptop-hp Laptop config for some HP models (subdevice 30A5) | ||
1007 | laptop-eapd Laptop config with EAPD support | ||
1008 | test for testing/debugging purpose, almost all controls | ||
1009 | can be adjusted. Appearing only when compiled with | ||
1010 | $CONFIG_SND_DEBUG=y | ||
1011 | |||
1012 | Conexant 5051 | ||
1013 | laptop Basic Laptop config (default) | ||
1014 | hp HP Spartan laptop | ||
1015 | |||
1016 | STAC9200 | ||
1017 | ref Reference board | ||
1018 | dell-d21 Dell (unknown) | ||
1019 | dell-d22 Dell (unknown) | ||
1020 | dell-d23 Dell (unknown) | ||
1021 | dell-m21 Dell Inspiron 630m, Dell Inspiron 640m | ||
1022 | dell-m22 Dell Latitude D620, Dell Latitude D820 | ||
1023 | dell-m23 Dell XPS M1710, Dell Precision M90 | ||
1024 | dell-m24 Dell Latitude 120L | ||
1025 | dell-m25 Dell Inspiron E1505n | ||
1026 | dell-m26 Dell Inspiron 1501 | ||
1027 | dell-m27 Dell Inspiron E1705/9400 | ||
1028 | gateway Gateway laptops with EAPD control | ||
1029 | panasonic Panasonic CF-74 | ||
1030 | |||
1031 | STAC9205/9254 | ||
1032 | ref Reference board | ||
1033 | dell-m42 Dell (unknown) | ||
1034 | dell-m43 Dell Precision | ||
1035 | dell-m44 Dell Inspiron | ||
1036 | |||
1037 | STAC9220/9221 | ||
1038 | ref Reference board | ||
1039 | 3stack D945 3stack | ||
1040 | 5stack D945 5stack + SPDIF | ||
1041 | intel-mac-v1 Intel Mac Type 1 | ||
1042 | intel-mac-v2 Intel Mac Type 2 | ||
1043 | intel-mac-v3 Intel Mac Type 3 | ||
1044 | intel-mac-v4 Intel Mac Type 4 | ||
1045 | intel-mac-v5 Intel Mac Type 5 | ||
1046 | intel-mac-auto Intel Mac (detect type according to subsystem id) | ||
1047 | macmini Intel Mac Mini (equivalent with type 3) | ||
1048 | macbook Intel Mac Book (eq. type 5) | ||
1049 | macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3) | ||
1050 | macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3) | ||
1051 | imac-intel Intel iMac (eq. type 2) | ||
1052 | imac-intel-20 Intel iMac (newer version) (eq. type 3) | ||
1053 | dell-d81 Dell (unknown) | ||
1054 | dell-d82 Dell (unknown) | ||
1055 | dell-m81 Dell (unknown) | ||
1056 | dell-m82 Dell XPS M1210 | ||
1057 | |||
1058 | STAC9202/9250/9251 | ||
1059 | ref Reference board, base config | ||
1060 | m2-2 Some Gateway MX series laptops | ||
1061 | m6 Some Gateway NX series laptops | ||
1062 | pa6 Gateway NX860 series | ||
1063 | |||
1064 | STAC9227/9228/9229/927x | ||
1065 | ref Reference board | ||
1066 | ref-no-jd Reference board without HP/Mic jack detection | ||
1067 | 3stack D965 3stack | ||
1068 | 5stack D965 5stack + SPDIF | ||
1069 | dell-3stack Dell Dimension E520 | ||
1070 | dell-bios Fixes with Dell BIOS setup | ||
1071 | |||
1072 | STAC92HD71B* | ||
1073 | ref Reference board | ||
1074 | dell-m4-1 Dell desktops | ||
1075 | dell-m4-2 Dell desktops | ||
1076 | dell-m4-3 Dell desktops | ||
1077 | |||
1078 | STAC92HD73* | ||
1079 | ref Reference board | ||
1080 | no-jd BIOS setup but without jack-detection | ||
1081 | dell-m6-amic Dell desktops/laptops with analog mics | ||
1082 | dell-m6-dmic Dell desktops/laptops with digital mics | ||
1083 | dell-m6 Dell desktops/laptops with both type of mics | ||
1084 | |||
1085 | STAC9872 | ||
1086 | vaio Setup for VAIO FE550G/SZ110 | ||
1087 | vaio-ar Setup for VAIO AR | ||
1088 | 786 | ||
1089 | The model name "genric" is treated as a special case. When this | 787 | The model name "genric" is treated as a special case. When this |
1090 | model is given, the driver uses the generic codec parser without | 788 | model is given, the driver uses the generic codec parser without |
1091 | "codec-patch". It's sometimes good for testing and debugging. | 789 | "codec-patch". It's sometimes good for testing and debugging. |
1092 | 790 | ||
1093 | If the default configuration doesn't work and one of the above | 791 | If the default configuration doesn't work and one of the above |
1094 | matches with your device, report it together with the PCI | 792 | matches with your device, report it together with alsa-info.sh |
1095 | subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel | 793 | output (with --no-upload option) to kernel bugzilla or alsa-devel |
1096 | ML (see the section "Links and Addresses"). | 794 | ML (see the section "Links and Addresses"). |
1097 | 795 | ||
1098 | power_save and power_save_controller options are for power-saving | 796 | power_save and power_save_controller options are for power-saving |
@@ -1652,7 +1350,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
1652 | * AuzenTech X-Meridian | 1350 | * AuzenTech X-Meridian |
1653 | * Bgears b-Enspirer | 1351 | * Bgears b-Enspirer |
1654 | * Club3D Theatron DTS | 1352 | * Club3D Theatron DTS |
1655 | * HT-Omega Claro | 1353 | * HT-Omega Claro (plus) |
1354 | * HT-Omega Claro halo (XT) | ||
1656 | * Razer Barracuda AC-1 | 1355 | * Razer Barracuda AC-1 |
1657 | * Sondigo Inferno | 1356 | * Sondigo Inferno |
1658 | 1357 | ||
@@ -2409,8 +2108,11 @@ Links and Addresses | |||
2409 | ALSA project homepage | 2108 | ALSA project homepage |
2410 | http://www.alsa-project.org | 2109 | http://www.alsa-project.org |
2411 | 2110 | ||
2412 | ALSA Bug Tracking System | 2111 | Kernel Bugzilla |
2413 | https://bugtrack.alsa-project.org/bugs/ | 2112 | http://bugzilla.kernel.org/ |
2414 | 2113 | ||
2415 | ALSA Developers ML | 2114 | ALSA Developers ML |
2416 | mailto:alsa-devel@alsa-project.org | 2115 | mailto:alsa-devel@alsa-project.org |
2116 | |||
2117 | alsa-info.sh script | ||
2118 | http://www.alsa-project.org/alsa-info.sh | ||
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt new file mode 100644 index 000000000000..4b7ac21ea9eb --- /dev/null +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -0,0 +1,348 @@ | |||
1 | Model name Description | ||
2 | ---------- ----------- | ||
3 | ALC880 | ||
4 | ====== | ||
5 | 3stack 3-jack in back and a headphone out | ||
6 | 3stack-digout 3-jack in back, a HP out and a SPDIF out | ||
7 | 5stack 5-jack in back, 2-jack in front | ||
8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out | ||
9 | 6stack 6-jack in back, 2-jack in front | ||
10 | 6stack-digout 6-jack with a SPDIF out | ||
11 | w810 3-jack | ||
12 | z71v 3-jack (HP shared SPDIF) | ||
13 | asus 3-jack (ASUS Mobo) | ||
14 | asus-w1v ASUS W1V | ||
15 | asus-dig ASUS with SPDIF out | ||
16 | asus-dig2 ASUS with SPDIF out (using GPIO2) | ||
17 | uniwill 3-jack | ||
18 | fujitsu Fujitsu Laptops (Pi1536) | ||
19 | F1734 2-jack | ||
20 | lg LG laptop (m1 express dual) | ||
21 | lg-lw LG LW20/LW25 laptop | ||
22 | tcl TCL S700 | ||
23 | clevo Clevo laptops (m520G, m665n) | ||
24 | medion Medion Rim 2150 | ||
25 | test for testing/debugging purpose, almost all controls can be | ||
26 | adjusted. Appearing only when compiled with | ||
27 | $CONFIG_SND_DEBUG=y | ||
28 | auto auto-config reading BIOS (default) | ||
29 | |||
30 | ALC260 | ||
31 | ====== | ||
32 | hp HP machines | ||
33 | hp-3013 HP machines (3013-variant) | ||
34 | hp-dc7600 HP DC7600 | ||
35 | fujitsu Fujitsu S7020 | ||
36 | acer Acer TravelMate | ||
37 | will Will laptops (PB V7900) | ||
38 | replacer Replacer 672V | ||
39 | basic fixed pin assignment (old default model) | ||
40 | test for testing/debugging purpose, almost all controls can | ||
41 | adjusted. Appearing only when compiled with | ||
42 | $CONFIG_SND_DEBUG=y | ||
43 | auto auto-config reading BIOS (default) | ||
44 | |||
45 | ALC262 | ||
46 | ====== | ||
47 | fujitsu Fujitsu Laptop | ||
48 | hp-bpc HP xw4400/6400/8400/9400 laptops | ||
49 | hp-bpc-d7000 HP BPC D7000 | ||
50 | hp-tc-t5735 HP Thin Client T5735 | ||
51 | hp-rp5700 HP RP5700 | ||
52 | benq Benq ED8 | ||
53 | benq-t31 Benq T31 | ||
54 | hippo Hippo (ATI) with jack detection, Sony UX-90s | ||
55 | hippo_1 Hippo (Benq) with jack detection | ||
56 | sony-assamd Sony ASSAMD | ||
57 | toshiba-s06 Toshiba S06 | ||
58 | toshiba-rx1 Toshiba RX1 | ||
59 | ultra Samsung Q1 Ultra Vista model | ||
60 | lenovo-3000 Lenovo 3000 y410 | ||
61 | nec NEC Versa S9100 | ||
62 | basic fixed pin assignment w/o SPDIF | ||
63 | auto auto-config reading BIOS (default) | ||
64 | |||
65 | ALC267/268 | ||
66 | ========== | ||
67 | quanta-il1 Quanta IL1 mini-notebook | ||
68 | 3stack 3-stack model | ||
69 | toshiba Toshiba A205 | ||
70 | acer Acer laptops | ||
71 | acer-dmic Acer laptops with digital-mic | ||
72 | acer-aspire Acer Aspire One | ||
73 | dell Dell OEM laptops (Vostro 1200) | ||
74 | zepto Zepto laptops | ||
75 | test for testing/debugging purpose, almost all controls can | ||
76 | adjusted. Appearing only when compiled with | ||
77 | $CONFIG_SND_DEBUG=y | ||
78 | auto auto-config reading BIOS (default) | ||
79 | |||
80 | ALC269 | ||
81 | ====== | ||
82 | basic Basic preset | ||
83 | quanta Quanta FL1 | ||
84 | eeepc-p703 ASUS Eeepc P703 P900A | ||
85 | eeepc-p901 ASUS Eeepc P901 S101 | ||
86 | fujitsu FSC Amilo | ||
87 | auto auto-config reading BIOS (default) | ||
88 | |||
89 | ALC662/663 | ||
90 | ========== | ||
91 | 3stack-dig 3-stack (2-channel) with SPDIF | ||
92 | 3stack-6ch 3-stack (6-channel) | ||
93 | 3stack-6ch-dig 3-stack (6-channel) with SPDIF | ||
94 | 6stack-dig 6-stack with SPDIF | ||
95 | lenovo-101e Lenovo laptop | ||
96 | eeepc-p701 ASUS Eeepc P701 | ||
97 | eeepc-ep20 ASUS Eeepc EP20 | ||
98 | ecs ECS/Foxconn mobo | ||
99 | m51va ASUS M51VA | ||
100 | g71v ASUS G71V | ||
101 | h13 ASUS H13 | ||
102 | g50v ASUS G50V | ||
103 | asus-mode1 ASUS | ||
104 | asus-mode2 ASUS | ||
105 | asus-mode3 ASUS | ||
106 | asus-mode4 ASUS | ||
107 | asus-mode5 ASUS | ||
108 | asus-mode6 ASUS | ||
109 | auto auto-config reading BIOS (default) | ||
110 | |||
111 | ALC882/885 | ||
112 | ========== | ||
113 | 3stack-dig 3-jack with SPDIF I/O | ||
114 | 6stack-dig 6-jack digital with SPDIF I/O | ||
115 | arima Arima W820Di1 | ||
116 | targa Targa T8, MSI-1049 T8 | ||
117 | asus-a7j ASUS A7J | ||
118 | asus-a7m ASUS A7M | ||
119 | macpro MacPro support | ||
120 | mbp3 Macbook Pro rev3 | ||
121 | imac24 iMac 24'' with jack detection | ||
122 | w2jc ASUS W2JC | ||
123 | auto auto-config reading BIOS (default) | ||
124 | |||
125 | ALC883/888 | ||
126 | ========== | ||
127 | 3stack-dig 3-jack with SPDIF I/O | ||
128 | 6stack-dig 6-jack digital with SPDIF I/O | ||
129 | 3stack-6ch 3-jack 6-channel | ||
130 | 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O | ||
131 | 6stack-dig-demo 6-jack digital for Intel demo board | ||
132 | acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) | ||
133 | acer-aspire Acer Aspire 9810 | ||
134 | acer-aspire-4930g Acer Aspire 4930G | ||
135 | medion Medion Laptops | ||
136 | medion-md2 Medion MD2 | ||
137 | targa-dig Targa/MSI | ||
138 | targa-2ch-dig Targs/MSI with 2-channel | ||
139 | laptop-eapd 3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE) | ||
140 | lenovo-101e Lenovo 101E | ||
141 | lenovo-nb0763 Lenovo NB0763 | ||
142 | lenovo-ms7195-dig Lenovo MS7195 | ||
143 | lenovo-sky Lenovo Sky | ||
144 | haier-w66 Haier W66 | ||
145 | 3stack-hp HP machines with 3stack (Lucknow, Samba boards) | ||
146 | 6stack-dell Dell machines with 6stack (Inspiron 530) | ||
147 | mitac Mitac 8252D | ||
148 | clevo-m720 Clevo M720 laptop series | ||
149 | fujitsu-pi2515 Fujitsu AMILO Pi2515 | ||
150 | fujitsu-xa3530 Fujitsu AMILO XA3530 | ||
151 | 3stack-6ch-intel Intel DG33* boards | ||
152 | auto auto-config reading BIOS (default) | ||
153 | |||
154 | ALC861/660 | ||
155 | ========== | ||
156 | 3stack 3-jack | ||
157 | 3stack-dig 3-jack with SPDIF I/O | ||
158 | 6stack-dig 6-jack with SPDIF I/O | ||
159 | 3stack-660 3-jack (for ALC660) | ||
160 | uniwill-m31 Uniwill M31 laptop | ||
161 | toshiba Toshiba laptop support | ||
162 | asus Asus laptop support | ||
163 | asus-laptop ASUS F2/F3 laptops | ||
164 | auto auto-config reading BIOS (default) | ||
165 | |||
166 | ALC861VD/660VD | ||
167 | ============== | ||
168 | 3stack 3-jack | ||
169 | 3stack-dig 3-jack with SPDIF OUT | ||
170 | 6stack-dig 6-jack with SPDIF OUT | ||
171 | 3stack-660 3-jack (for ALC660VD) | ||
172 | 3stack-660-digout 3-jack with SPDIF OUT (for ALC660VD) | ||
173 | lenovo Lenovo 3000 C200 | ||
174 | dallas Dallas laptops | ||
175 | hp HP TX1000 | ||
176 | asus-v1s ASUS V1Sn | ||
177 | auto auto-config reading BIOS (default) | ||
178 | |||
179 | CMI9880 | ||
180 | ======= | ||
181 | minimal 3-jack in back | ||
182 | min_fp 3-jack in back, 2-jack in front | ||
183 | full 6-jack in back, 2-jack in front | ||
184 | full_dig 6-jack in back, 2-jack in front, SPDIF I/O | ||
185 | allout 5-jack in back, 2-jack in front, SPDIF out | ||
186 | auto auto-config reading BIOS (default) | ||
187 | |||
188 | AD1882 / AD1882A | ||
189 | ================ | ||
190 | 3stack 3-stack mode (default) | ||
191 | 6stack 6-stack mode | ||
192 | |||
193 | AD1884A / AD1883 / AD1984A / AD1984B | ||
194 | ==================================== | ||
195 | desktop 3-stack desktop (default) | ||
196 | laptop laptop with HP jack sensing | ||
197 | mobile mobile devices with HP jack sensing | ||
198 | thinkpad Lenovo Thinkpad X300 | ||
199 | |||
200 | AD1884 | ||
201 | ====== | ||
202 | N/A | ||
203 | |||
204 | AD1981 | ||
205 | ====== | ||
206 | basic 3-jack (default) | ||
207 | hp HP nx6320 | ||
208 | thinkpad Lenovo Thinkpad T60/X60/Z60 | ||
209 | toshiba Toshiba U205 | ||
210 | |||
211 | AD1983 | ||
212 | ====== | ||
213 | N/A | ||
214 | |||
215 | AD1984 | ||
216 | ====== | ||
217 | basic default configuration | ||
218 | thinkpad Lenovo Thinkpad T61/X61 | ||
219 | dell Dell T3400 | ||
220 | |||
221 | AD1986A | ||
222 | ======= | ||
223 | 6stack 6-jack, separate surrounds (default) | ||
224 | 3stack 3-stack, shared surrounds | ||
225 | laptop 2-channel only (FSC V2060, Samsung M50) | ||
226 | laptop-eapd 2-channel with EAPD (ASUS A6J) | ||
227 | laptop-automute 2-channel with EAPD and HP-automute (Lenovo N100) | ||
228 | ultra 2-channel with EAPD (Samsung Ultra tablet PC) | ||
229 | samsung 2-channel with EAPD (Samsung R65) | ||
230 | |||
231 | AD1988/AD1988B/AD1989A/AD1989B | ||
232 | ============================== | ||
233 | 6stack 6-jack | ||
234 | 6stack-dig ditto with SPDIF | ||
235 | 3stack 3-jack | ||
236 | 3stack-dig ditto with SPDIF | ||
237 | laptop 3-jack with hp-jack automute | ||
238 | laptop-dig ditto with SPDIF | ||
239 | auto auto-config reading BIOS (default) | ||
240 | |||
241 | Conexant 5045 | ||
242 | ============= | ||
243 | laptop-hpsense Laptop with HP sense (old model laptop) | ||
244 | laptop-micsense Laptop with Mic sense (old model fujitsu) | ||
245 | laptop-hpmicsense Laptop with HP and Mic senses | ||
246 | benq Benq R55E | ||
247 | test for testing/debugging purpose, almost all controls | ||
248 | can be adjusted. Appearing only when compiled with | ||
249 | $CONFIG_SND_DEBUG=y | ||
250 | |||
251 | Conexant 5047 | ||
252 | ============= | ||
253 | laptop Basic Laptop config | ||
254 | laptop-hp Laptop config for some HP models (subdevice 30A5) | ||
255 | laptop-eapd Laptop config with EAPD support | ||
256 | test for testing/debugging purpose, almost all controls | ||
257 | can be adjusted. Appearing only when compiled with | ||
258 | $CONFIG_SND_DEBUG=y | ||
259 | |||
260 | Conexant 5051 | ||
261 | ============= | ||
262 | laptop Basic Laptop config (default) | ||
263 | hp HP Spartan laptop | ||
264 | |||
265 | STAC9200 | ||
266 | ======== | ||
267 | ref Reference board | ||
268 | dell-d21 Dell (unknown) | ||
269 | dell-d22 Dell (unknown) | ||
270 | dell-d23 Dell (unknown) | ||
271 | dell-m21 Dell Inspiron 630m, Dell Inspiron 640m | ||
272 | dell-m22 Dell Latitude D620, Dell Latitude D820 | ||
273 | dell-m23 Dell XPS M1710, Dell Precision M90 | ||
274 | dell-m24 Dell Latitude 120L | ||
275 | dell-m25 Dell Inspiron E1505n | ||
276 | dell-m26 Dell Inspiron 1501 | ||
277 | dell-m27 Dell Inspiron E1705/9400 | ||
278 | gateway Gateway laptops with EAPD control | ||
279 | panasonic Panasonic CF-74 | ||
280 | |||
281 | STAC9205/9254 | ||
282 | ============= | ||
283 | ref Reference board | ||
284 | dell-m42 Dell (unknown) | ||
285 | dell-m43 Dell Precision | ||
286 | dell-m44 Dell Inspiron | ||
287 | |||
288 | STAC9220/9221 | ||
289 | ============= | ||
290 | ref Reference board | ||
291 | 3stack D945 3stack | ||
292 | 5stack D945 5stack + SPDIF | ||
293 | intel-mac-v1 Intel Mac Type 1 | ||
294 | intel-mac-v2 Intel Mac Type 2 | ||
295 | intel-mac-v3 Intel Mac Type 3 | ||
296 | intel-mac-v4 Intel Mac Type 4 | ||
297 | intel-mac-v5 Intel Mac Type 5 | ||
298 | intel-mac-auto Intel Mac (detect type according to subsystem id) | ||
299 | macmini Intel Mac Mini (equivalent with type 3) | ||
300 | macbook Intel Mac Book (eq. type 5) | ||
301 | macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3) | ||
302 | macbook-pro Intel Mac Book Pro 2nd generation (eq. type 3) | ||
303 | imac-intel Intel iMac (eq. type 2) | ||
304 | imac-intel-20 Intel iMac (newer version) (eq. type 3) | ||
305 | dell-d81 Dell (unknown) | ||
306 | dell-d82 Dell (unknown) | ||
307 | dell-m81 Dell (unknown) | ||
308 | dell-m82 Dell XPS M1210 | ||
309 | |||
310 | STAC9202/9250/9251 | ||
311 | ================== | ||
312 | ref Reference board, base config | ||
313 | m2-2 Some Gateway MX series laptops | ||
314 | m6 Some Gateway NX series laptops | ||
315 | pa6 Gateway NX860 series | ||
316 | |||
317 | STAC9227/9228/9229/927x | ||
318 | ======================= | ||
319 | ref Reference board | ||
320 | ref-no-jd Reference board without HP/Mic jack detection | ||
321 | 3stack D965 3stack | ||
322 | 5stack D965 5stack + SPDIF | ||
323 | dell-3stack Dell Dimension E520 | ||
324 | dell-bios Fixes with Dell BIOS setup | ||
325 | |||
326 | STAC92HD71B* | ||
327 | ============ | ||
328 | ref Reference board | ||
329 | dell-m4-1 Dell desktops | ||
330 | dell-m4-2 Dell desktops | ||
331 | dell-m4-3 Dell desktops | ||
332 | |||
333 | STAC92HD73* | ||
334 | =========== | ||
335 | ref Reference board | ||
336 | no-jd BIOS setup but without jack-detection | ||
337 | dell-m6-amic Dell desktops/laptops with analog mics | ||
338 | dell-m6-dmic Dell desktops/laptops with digital mics | ||
339 | dell-m6 Dell desktops/laptops with both type of mics | ||
340 | |||
341 | STAC92HD83* | ||
342 | =========== | ||
343 | ref Reference board | ||
344 | |||
345 | STAC9872 | ||
346 | ======== | ||
347 | vaio Setup for VAIO FE550G/SZ110 | ||
348 | vaio-ar Setup for VAIO AR | ||
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt new file mode 100644 index 000000000000..8d68fff71839 --- /dev/null +++ b/Documentation/sound/alsa/HD-Audio.txt | |||
@@ -0,0 +1,577 @@ | |||
1 | MORE NOTES ON HD-AUDIO DRIVER | ||
2 | ============================= | ||
3 | Takashi Iwai <tiwai@suse.de> | ||
4 | |||
5 | |||
6 | GENERAL | ||
7 | ------- | ||
8 | |||
9 | HD-audio is the new standard on-board audio component on modern PCs | ||
10 | after AC97. Although Linux has been supporting HD-audio since long | ||
11 | time ago, there are often problems with new machines. A part of the | ||
12 | problem is broken BIOS, and the rest is the driver implementation. | ||
13 | This document explains the brief trouble-shooting and debugging | ||
14 | methods for the HD-audio hardware. | ||
15 | |||
16 | The HD-audio component consists of two parts: the controller chip and | ||
17 | the codec chips on the HD-audio bus. Linux provides a single driver | ||
18 | for all controllers, snd-hda-intel. Although the driver name contains | ||
19 | a word of a well-known harware vendor, it's not specific to it but for | ||
20 | all controller chips by other companies. Since the HD-audio | ||
21 | controllers are supposed to be compatible, the single snd-hda-driver | ||
22 | should work in most cases. But, not surprisingly, there are known | ||
23 | bugs and issues specific to each controller type. The snd-hda-intel | ||
24 | driver has a bunch of workarounds for these as described below. | ||
25 | |||
26 | A controller may have multiple codecs. Usually you have one audio | ||
27 | codec and optionally one modem codec. In theory, there might be | ||
28 | multiple audio codecs, e.g. for analog and digital outputs, and the | ||
29 | driver might not work properly because of conflict of mixer elements. | ||
30 | This should be fixed in future if such hardware really exists. | ||
31 | |||
32 | The snd-hda-intel driver has several different codec parsers depending | ||
33 | on the codec. It has a generic parser as a fallback, but this | ||
34 | functionality is fairly limited until now. Instead of the generic | ||
35 | parser, usually the codec-specific parser (coded in patch_*.c) is used | ||
36 | for the codec-specific implementations. The details about the | ||
37 | codec-specific problems are explained in the later sections. | ||
38 | |||
39 | If you are interested in the deep debugging of HD-audio, read the | ||
40 | HD-audio specification at first. The specification is found on | ||
41 | Intel's web page, for example: | ||
42 | |||
43 | - http://www.intel.com/standards/hdaudio/ | ||
44 | |||
45 | |||
46 | HD-AUDIO CONTROLLER | ||
47 | ------------------- | ||
48 | |||
49 | DMA-Position Problem | ||
50 | ~~~~~~~~~~~~~~~~~~~~ | ||
51 | The most common problem of the controller is the inaccurate DMA | ||
52 | pointer reporting. The DMA pointer for playback and capture can be | ||
53 | read in two ways, either via a LPIB register or via a position-buffer | ||
54 | map. As default the driver tries to read from the io-mapped | ||
55 | position-buffer, and falls back to LPIB if the position-buffer appears | ||
56 | dead. However, this detection isn't perfect on some devices. In such | ||
57 | a case, you can change the default method via `position_fix` option. | ||
58 | |||
59 | `position_fix=1` means to use LPIB method explicitly. | ||
60 | `position_fix=2` means to use the position-buffer. 0 is the default | ||
61 | value, the automatic check and fallback to LPIB as described in the | ||
62 | above. If you get a problem of repeated sounds, this option might | ||
63 | help. | ||
64 | |||
65 | In addition to that, every controller is known to be broken regarding | ||
66 | the wake-up timing. It wakes up a few samples before actually | ||
67 | processing the data on the buffer. This caused a lot of problems, for | ||
68 | example, with ALSA dmix or JACK. Since 2.6.27 kernel, the driver puts | ||
69 | an artificial delay to the wake up timing. This delay is controlled | ||
70 | via `bdl_pos_adj` option. | ||
71 | |||
72 | When `bdl_pos_adj` is a negative value (as default), it's assigned to | ||
73 | an appropriate value depending on the controller chip. For Intel | ||
74 | chips, it'd be 1 while it'd be 32 for others. Usually this works. | ||
75 | Only in case it doesn't work and you get warning messages, you should | ||
76 | change this parameter to other values. | ||
77 | |||
78 | |||
79 | Codec-Probing Problem | ||
80 | ~~~~~~~~~~~~~~~~~~~~~ | ||
81 | A less often but a more severe problem is the codec probing. When | ||
82 | BIOS reports the available codec slots wrongly, the driver gets | ||
83 | confused and tries to access the non-existing codec slot. This often | ||
84 | results in the total screw-up, and destructs the further communication | ||
85 | with the codec chips. The symptom appears usually as error messages | ||
86 | like: | ||
87 | ------------------------------------------------------------------------ | ||
88 | hda_intel: azx_get_response timeout, switching to polling mode: | ||
89 | last cmd=0x12345678 | ||
90 | hda_intel: azx_get_response timeout, switching to single_cmd mode: | ||
91 | last cmd=0x12345678 | ||
92 | ------------------------------------------------------------------------ | ||
93 | |||
94 | The first line is a warning, and this is usually relatively harmless. | ||
95 | It means that the codec response isn't notified via an IRQ. The | ||
96 | driver uses explicit polling method to read the response. It gives | ||
97 | very slight CPU overhead, but you'd unlikely notice it. | ||
98 | |||
99 | The second line is, however, a fatal error. If this happens, usually | ||
100 | it means that something is really wrong. Most likely you are | ||
101 | accessing a non-existing codec slot. | ||
102 | |||
103 | Thus, if the second error message appears, try to narrow the probed | ||
104 | codec slots via `probe_mask` option. It's a bitmask, and each bit | ||
105 | corresponds to the codec slot. For example, to probe only the first | ||
106 | slot, pass `probe_mask=1`. For the first and the third slots, pass | ||
107 | `probe_mask=5` (where 5 = 1 | 4), and so on. | ||
108 | |||
109 | Since 2.6.29 kernel, the driver has a more robust probing method, so | ||
110 | this error might happen rarely, though. | ||
111 | |||
112 | |||
113 | Interrupt Handling | ||
114 | ~~~~~~~~~~~~~~~~~~ | ||
115 | In rare but some cases, the interrupt isn't properly handled as | ||
116 | default. You would notice this by the DMA transfer error reported by | ||
117 | ALSA PCM core, for example. Using MSI might help in such a case. | ||
118 | Pass `enable_msi=1` option for enabling MSI. | ||
119 | |||
120 | |||
121 | HD-AUDIO CODEC | ||
122 | -------------- | ||
123 | |||
124 | Model Option | ||
125 | ~~~~~~~~~~~~ | ||
126 | The most common problem regarding the HD-audio driver is the | ||
127 | unsupported codec features or the mismatched device configuration. | ||
128 | Most of codec-specific code has several preset models, either to | ||
129 | override the BIOS setup or to provide more comprehensive features. | ||
130 | |||
131 | The driver checks PCI SSID and looks through the static configuration | ||
132 | table until any matching entry is found. If you have a new machine, | ||
133 | you may see a message like below: | ||
134 | ------------------------------------------------------------------------ | ||
135 | hda_codec: Unknown model for ALC880, trying auto-probe from BIOS... | ||
136 | ------------------------------------------------------------------------ | ||
137 | Even if you see such a message, DON'T PANIC. Take a deep breath and | ||
138 | keep your towel. First of all, it's an informational message, no | ||
139 | warning, no error. This means that the PCI SSID of your device isn't | ||
140 | listed in the known preset model (white-)list. But, this doesn't mean | ||
141 | that the driver is broken. Many codec-drivers provide the automatic | ||
142 | configuration mechanism based on the BIOS setup. | ||
143 | |||
144 | The HD-audio codec has usually "pin" widgets, and BIOS sets the default | ||
145 | configuration of each pin, which indicates the location, the | ||
146 | connection type, the jack color, etc. The HD-audio driver can guess | ||
147 | the right connection judging from these default configuration values. | ||
148 | However -- some codec-support codes, such as patch_analog.c, don't | ||
149 | support the automatic probing (yet as of 2.6.28). And, BIOS is often, | ||
150 | yes, pretty often broken. It sets up wrong values and screws up the | ||
151 | driver. | ||
152 | |||
153 | The preset model is provided basically to overcome such a situation. | ||
154 | When the matching preset model is found in the white-list, the driver | ||
155 | assumes the static configuration of that preset and builds the mixer | ||
156 | elements and PCM streams based on the static information. Thus, if | ||
157 | you have a newer machine with a slightly different PCI SSID from the | ||
158 | existing one, you may have a good chance to re-use the same model. | ||
159 | You can pass the `model` option to specify the preset model instead of | ||
160 | PCI SSID look-up. | ||
161 | |||
162 | What `model` option values are available depends on the codec chip. | ||
163 | Check your codec chip from the codec proc file (see "Codec Proc-File" | ||
164 | section below). It will show the vendor/product name of your codec | ||
165 | chip. Then, see Documentation/sound/alsa/HD-Audio-Modelstxt file, | ||
166 | the section of HD-audio driver. You can find a list of codecs | ||
167 | and `model` options belonging to each codec. For example, for Realtek | ||
168 | ALC262 codec chip, pass `model=ultra` for devices that are compatible | ||
169 | with Samsung Q1 Ultra. | ||
170 | |||
171 | Thus, the first thing you can do for any brand-new, unsupported and | ||
172 | non-working HD-audio hardware is to check HD-audio codec and several | ||
173 | different `model` option values. If you have a luck, some of them | ||
174 | might suit with your device well. | ||
175 | |||
176 | Some codecs such as ALC880 have a special model option `model=test`. | ||
177 | This configures the driver to provide as many mixer controls as | ||
178 | possible for every single pin feature except for the unsolicited | ||
179 | events (and maybe some other specials). Adjust each mixer element and | ||
180 | try the I/O in the way of trial-and-error until figuring out the whole | ||
181 | I/O pin mappings. | ||
182 | |||
183 | Note that `model=generic` has a special meaning. It means to use the | ||
184 | generic parser regardless of the codec. Usually the codec-specific | ||
185 | parser is much better than the generic parser (as now). Thus this | ||
186 | option is more about the debugging purpose. | ||
187 | |||
188 | |||
189 | Speaker and Headphone Output | ||
190 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
191 | One of the most frequent (and obvious) bugs with HD-audio is the | ||
192 | silent output from either or both of a built-in speaker and a | ||
193 | headphone jack. In general, you should try a headphone output at | ||
194 | first. A speaker output often requires more additional controls like | ||
195 | the external amplifier bits. Thus a headphone output has a slightly | ||
196 | better chance. | ||
197 | |||
198 | Before making a bug report, double-check whether the mixer is set up | ||
199 | correctly. The recent version of snd-hda-intel driver provides mostly | ||
200 | "Master" volume control as well as "Front" volume (where Front | ||
201 | indicates the front-channels). In addition, there can be individual | ||
202 | "Headphone" and "Speaker" controls. | ||
203 | |||
204 | Ditto for the speaker output. There can be "External Amplifier" | ||
205 | switch on some codecs. Turn on this if present. | ||
206 | |||
207 | Another related problem is the automatic mute of speaker output by | ||
208 | headphone plugging. This feature is implemented in most cases, but | ||
209 | not on every preset model or codec-support code. | ||
210 | |||
211 | In anyway, try a different model option if you have such a problem. | ||
212 | Some other models may match better and give you more matching | ||
213 | functionality. If none of the available models works, send a bug | ||
214 | report. See the bug report section for details. | ||
215 | |||
216 | If you are masochistic enough to debug the driver problem, note the | ||
217 | following: | ||
218 | |||
219 | - The speaker (and the headphone, too) output often requires the | ||
220 | external amplifier. This can be set usually via EAPD verb or a | ||
221 | certain GPIO. If the codec pin supports EAPD, you have a better | ||
222 | chance via SET_EAPD_BTL verb (0x70c). On others, GPIO pin (mostly | ||
223 | it's either GPIO0 or GPIO1) may turn on/off EAPD. | ||
224 | - Some Realtek codecs require special vendor-specific coefficients to | ||
225 | turn on the amplifier. See patch_realtek.c. | ||
226 | - IDT codecs may have extra power-enable/disable controls on each | ||
227 | analog pin. See patch_sigmatel.c. | ||
228 | - Very rare but some devices don't accept the pin-detection verb until | ||
229 | triggered. Issuing GET_PIN_SENSE verb (0xf09) may result in the | ||
230 | codec-communication stall. Some examples are found in | ||
231 | patch_realtek.c. | ||
232 | |||
233 | |||
234 | Capture Problems | ||
235 | ~~~~~~~~~~~~~~~~ | ||
236 | The capture problems are often because of missing setups of mixers. | ||
237 | Thus, before submitting a bug report, make sure that you set up the | ||
238 | mixer correctly. For example, both "Capture Volume" and "Capture | ||
239 | Switch" have to be set properly in addition to the right "Capture | ||
240 | Source" or "Input Source" selection. Some devices have "Mic Boost" | ||
241 | volume or switch. | ||
242 | |||
243 | When the PCM device is opened via "default" PCM (without pulse-audio | ||
244 | plugin), you'll likely have "Digital Capture Volume" control as well. | ||
245 | This is provided for the extra gain/attenuation of the signal in | ||
246 | software, especially for the inputs without the hardware volume | ||
247 | control such as digital microphones. Unless really needed, this | ||
248 | should be set to exactly 50%, corresponding to 0dB -- neither extra | ||
249 | gain nor attenuation. When you use "hw" PCM, i.e., a raw access PCM, | ||
250 | this control will have no influence, though. | ||
251 | |||
252 | It's known that some codecs / devices have fairly bad analog circuits, | ||
253 | and the recorded sound contains a certain DC-offset. This is no bug | ||
254 | of the driver. | ||
255 | |||
256 | Most of modern laptops have no analog CD-input connection. Thus, the | ||
257 | recording from CD input won't work in many cases although the driver | ||
258 | provides it as the capture source. Use CDDA instead. | ||
259 | |||
260 | The automatic switching of the built-in and external mic per plugging | ||
261 | is implemented on some codec models but not on every model. Partly | ||
262 | because of my laziness but mostly lack of testers. Feel free to | ||
263 | submit the improvement patch to the author. | ||
264 | |||
265 | |||
266 | Direct Debugging | ||
267 | ~~~~~~~~~~~~~~~~ | ||
268 | If no model option gives you a better result, and you are a tough guy | ||
269 | to fight against evil, try debugging via hitting the raw HD-audio | ||
270 | codec verbs to the device. Some tools are available: hda-emu and | ||
271 | hda-analyzer. The detailed description is found in the sections | ||
272 | below. You'd need to enable hwdep for using these tools. See "Kernel | ||
273 | Configuration" section. | ||
274 | |||
275 | |||
276 | OTHER ISSUES | ||
277 | ------------ | ||
278 | |||
279 | Kernel Configuration | ||
280 | ~~~~~~~~~~~~~~~~~~~~ | ||
281 | In general, I recommend you to enable the sound debug option, | ||
282 | `CONFIG_SND_DEBUG=y`, no matter whether you are debugging or not. | ||
283 | This enables snd_printd() macro and others, and you'll get additional | ||
284 | kernel messages at probing. | ||
285 | |||
286 | In addition, you can enable `CONFIG_SND_DEBUG_VERBOSE=y`. But this | ||
287 | will give you far more messages. Thus turn this on only when you are | ||
288 | sure to want it. | ||
289 | |||
290 | Don't forget to turn on the appropriate `CONFIG_SND_HDA_CODEC_*` | ||
291 | options. Note that each of them corresponds to the codec chip, not | ||
292 | the controller chip. Thus, even if lspci shows the Nvidia controller, | ||
293 | you may need to choose the option for other vendors. If you are | ||
294 | unsure, just select all yes. | ||
295 | |||
296 | `CONFIG_SND_HDA_HWDEP` is a useful option for debugging the driver. | ||
297 | When this is enabled, the driver creates hardware-dependent devices | ||
298 | (one per each codec), and you have a raw access to the device via | ||
299 | these device files. For example, `hwC0D2` will be created for the | ||
300 | codec slot #2 of the first card (#0). For debug-tools such as | ||
301 | hda-verb and hda-analyzer, the hwdep device has to be enabled. | ||
302 | Thus, it'd be better to turn this on always. | ||
303 | |||
304 | `CONFIG_SND_HDA_RECONFIG` is a new option, and this depends on the | ||
305 | hwdep option above. When enabled, you'll have some sysfs files under | ||
306 | the corresponding hwdep directory. See "HD-audio reconfiguration" | ||
307 | section below. | ||
308 | |||
309 | `CONFIG_SND_HDA_POWER_SAVE` option enables the power-saving feature. | ||
310 | See "Power-saving" section below. | ||
311 | |||
312 | |||
313 | Codec Proc-File | ||
314 | ~~~~~~~~~~~~~~~ | ||
315 | The codec proc-file is a treasure-chest for debugging HD-audio. | ||
316 | It shows most of useful information of each codec widget. | ||
317 | |||
318 | The proc file is located in /proc/asound/card*/codec#*, one file per | ||
319 | each codec slot. You can know the codec vendor, product id and | ||
320 | names, the type of each widget, capabilities and so on. | ||
321 | This file, however, doesn't show the jack sensing state, so far. This | ||
322 | is because the jack-sensing might be depending on the trigger state. | ||
323 | |||
324 | This file will be picked up by the debug tools, and also it can be fed | ||
325 | to the emulator as the primary codec information. See the debug tools | ||
326 | section below. | ||
327 | |||
328 | This proc file can be also used to check whether the generic parser is | ||
329 | used. When the generic parser is used, the vendor/product ID name | ||
330 | will appear as "Realtek ID 0262", instead of "Realtek ALC262". | ||
331 | |||
332 | |||
333 | HD-Audio Reconfiguration | ||
334 | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
335 | This is an experimental feature to allow you re-configure the HD-audio | ||
336 | codec dynamically without reloading the driver. The following sysfs | ||
337 | files are available under each codec-hwdep device directory (e.g. | ||
338 | /sys/class/sound/hwC0D0): | ||
339 | |||
340 | vendor_id:: | ||
341 | Shows the 32bit codec vendor-id hex number. You can change the | ||
342 | vendor-id value by writing to this file. | ||
343 | subsystem_id:: | ||
344 | Shows the 32bit codec subsystem-id hex number. You can change the | ||
345 | subsystem-id value by writing to this file. | ||
346 | revision_id:: | ||
347 | Shows the 32bit codec revision-id hex number. You can change the | ||
348 | revision-id value by writing to this file. | ||
349 | afg:: | ||
350 | Shows the AFG ID. This is read-only. | ||
351 | mfg:: | ||
352 | Shows the MFG ID. This is read-only. | ||
353 | name:: | ||
354 | Shows the codec name string. Can be changed by writing to this | ||
355 | file. | ||
356 | modelname:: | ||
357 | Shows the currently set `model` option. Can be changed by writing | ||
358 | to this file. | ||
359 | init_verbs:: | ||
360 | The extra verbs to execute at initialization. You can add a verb by | ||
361 | writing to this file. Pass tree numbers, nid, verb and parameter. | ||
362 | hints:: | ||
363 | Shows hint strings for codec parsers for any use. Right now it's | ||
364 | not used. | ||
365 | reconfig:: | ||
366 | Triggers the codec re-configuration. When any value is written to | ||
367 | this file, the driver re-initialize and parses the codec tree | ||
368 | again. All the changes done by the sysfs entries above are taken | ||
369 | into account. | ||
370 | clear:: | ||
371 | Resets the codec, removes the mixer elements and PCM stuff of the | ||
372 | specified codec, and clear all init verbs and hints. | ||
373 | |||
374 | |||
375 | Power-Saving | ||
376 | ~~~~~~~~~~~~ | ||
377 | The power-saving is a kind of auto-suspend of the device. When the | ||
378 | device is inactive for a certain time, the device is automatically | ||
379 | turned off to save the power. The time to go down is specified via | ||
380 | `power_save` module option, and this option can be changed dynamically | ||
381 | via sysfs. | ||
382 | |||
383 | The power-saving won't work when the analog loopback is enabled on | ||
384 | some codecs. Make sure that you mute all unneeded signal routes when | ||
385 | you want the power-saving. | ||
386 | |||
387 | The power-saving feature might cause audible click noises at each | ||
388 | power-down/up depending on the device. Some of them might be | ||
389 | solvable, but some are hard, I'm afraid. Some distros such as | ||
390 | openSUSE enables the power-saving feature automatically when the power | ||
391 | cable is unplugged. Thus, if you hear noises, suspect first the | ||
392 | power-saving. See /sys/module/snd_hda_intel/parameters/power_save to | ||
393 | check the current value. If it's non-zero, the feature is turned on. | ||
394 | |||
395 | |||
396 | Development Tree | ||
397 | ~~~~~~~~~~~~~~~~ | ||
398 | The latest development codes for HD-audio are found on sound git tree: | ||
399 | |||
400 | - git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git | ||
401 | |||
402 | The master branch or for-next branches can be used as the main | ||
403 | development branches in general while the HD-audio specific patches | ||
404 | are committed in topic/hda branch. | ||
405 | |||
406 | If you are using the latest Linus tree, it'd be better to pull the | ||
407 | above GIT tree onto it. If you are using the older kernels, an easy | ||
408 | way to try the latest ALSA code is to build from the snapshot | ||
409 | tarball. There are daily tarballs and the latest snapshot tarball. | ||
410 | All can be built just like normal alsa-driver release packages, that | ||
411 | is, installed via the usual spells: configure, make and make | ||
412 | install(-modules). See INSTALL in the package. The snapshot tarballs | ||
413 | are found at: | ||
414 | |||
415 | - ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/ | ||
416 | |||
417 | |||
418 | Sending a Bug Report | ||
419 | ~~~~~~~~~~~~~~~~~~~~ | ||
420 | If any model or module options don't work for your device, it's time | ||
421 | to send a bug report to the developers. Give the following in your | ||
422 | bug report: | ||
423 | |||
424 | - Hardware vendor, product and model names | ||
425 | - Kernel version (and ALSA-driver version if you built externally) | ||
426 | - `alsa-info.sh` output; run with `--no-upload` option. See the | ||
427 | section below about alsa-info | ||
428 | |||
429 | If it's a regression, at best, send alsa-info outputs of both working | ||
430 | and non-working kernels. This is really helpful because we can | ||
431 | compare the codec registers directly. | ||
432 | |||
433 | Send a bug report either the followings: | ||
434 | |||
435 | kernel-bugzilla:: | ||
436 | http://bugme.linux-foundation.org/ | ||
437 | alsa-devel ML:: | ||
438 | alsa-devel@alsa-project.org | ||
439 | |||
440 | |||
441 | DEBUG TOOLS | ||
442 | ----------- | ||
443 | |||
444 | This section describes some tools available for debugging HD-audio | ||
445 | problems. | ||
446 | |||
447 | alsa-info | ||
448 | ~~~~~~~~~ | ||
449 | The script `alsa-info.sh` is a very useful tool to gather the audio | ||
450 | device information. You can fetch the latest version from: | ||
451 | |||
452 | - http://www.alsa-project.org/alsa-info.sh | ||
453 | |||
454 | Run this script as root, and it will gather the important information | ||
455 | such as the module lists, module parameters, proc file contents | ||
456 | including the codec proc files, mixer outputs and the control | ||
457 | elements. As default, it will store the information onto a web server | ||
458 | on alsa-project.org. But, if you send a bug report, it'd be better to | ||
459 | run with `--no-upload` option, and attach the generated file. | ||
460 | |||
461 | There are some other useful options. See `--help` option output for | ||
462 | details. | ||
463 | |||
464 | |||
465 | hda-verb | ||
466 | ~~~~~~~~ | ||
467 | hda-verb is a tiny program that allows you to access the HD-audio | ||
468 | codec directly. You can execute a raw HD-audio codec verb with this. | ||
469 | This program accesses the hwdep device, thus you need to enable the | ||
470 | kernel config `CONFIG_SND_HDA_HWDEP=y` beforehand. | ||
471 | |||
472 | The hda-verb program takes four arguments: the hwdep device file, the | ||
473 | widget NID, the verb and the parameter. When you access to the codec | ||
474 | on the slot 2 of the card 0, pass /dev/snd/hwC0D2 to the first | ||
475 | argument, typically. (However, the real path name depends on the | ||
476 | system.) | ||
477 | |||
478 | The second parameter is the widget number-id to access. The third | ||
479 | parameter can be either a hex/digit number or a string corresponding | ||
480 | to a verb. Similarly, the last parameter is the value to write, or | ||
481 | can be a string for the parameter type. | ||
482 | |||
483 | ------------------------------------------------------------------------ | ||
484 | % hda-verb /dev/snd/hwC0D0 0x12 0x701 2 | ||
485 | nid = 0x12, verb = 0x701, param = 0x2 | ||
486 | value = 0x0 | ||
487 | |||
488 | % hda-verb /dev/snd/hwC0D0 0x0 PARAMETERS VENDOR_ID | ||
489 | nid = 0x0, verb = 0xf00, param = 0x0 | ||
490 | value = 0x10ec0262 | ||
491 | |||
492 | % hda-verb /dev/snd/hwC0D0 2 set_a 0xb080 | ||
493 | nid = 0x2, verb = 0x300, param = 0xb080 | ||
494 | value = 0x0 | ||
495 | ------------------------------------------------------------------------ | ||
496 | |||
497 | Although you can issue any verbs with this program, the driver state | ||
498 | won't be always updated. For example, the volume values are usually | ||
499 | cached in the driver, and thus changing the widget amp value directly | ||
500 | via hda-verb won't change the mixer value. | ||
501 | |||
502 | The hda-verb program is found in the ftp directory: | ||
503 | |||
504 | - ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/ | ||
505 | |||
506 | Also a git repository is available: | ||
507 | |||
508 | - git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/hda-verb.git | ||
509 | |||
510 | See README file in the tarball for more details about hda-verb | ||
511 | program. | ||
512 | |||
513 | |||
514 | hda-analyzer | ||
515 | ~~~~~~~~~~~~ | ||
516 | hda-analyzer provides a graphical interface to access the raw HD-audio | ||
517 | control, based on pyGTK2 binding. It's a more powerful version of | ||
518 | hda-verb. The program gives you an easy-to-use GUI stuff for showing | ||
519 | the widget information and adjusting the amp values, as well as the | ||
520 | proc-compatible output. | ||
521 | |||
522 | The hda-analyzer is a part of alsa.git repository in | ||
523 | alsa-project.org: | ||
524 | |||
525 | - http://git.alsa-project.org/?p=alsa.git;a=tree;f=hda-analyzer | ||
526 | |||
527 | |||
528 | Codecgraph | ||
529 | ~~~~~~~~~~ | ||
530 | Codecgraph is a utility program to generate a graph and visualizes the | ||
531 | codec-node connection of a codec chip. It's especially useful when | ||
532 | you analyze or debug a codec without a proper datasheet. The program | ||
533 | parses the given codec proc file and converts to SVG via graphiz | ||
534 | program. | ||
535 | |||
536 | The tarball and GIT trees are found in the web page at: | ||
537 | |||
538 | - http://helllabs.org/codecgraph/ | ||
539 | |||
540 | |||
541 | hda-emu | ||
542 | ~~~~~~~ | ||
543 | hda-emu is an HD-audio emulator. The main purpose of this program is | ||
544 | to debug an HD-audio codec without the real hardware. Thus, it | ||
545 | doesn't emulate the behavior with the real audio I/O, but it just | ||
546 | dumps the codec register changes and the ALSA-driver internal changes | ||
547 | at probing and operating the HD-audio driver. | ||
548 | |||
549 | The program requires a codec proc-file to simulate. Get a proc file | ||
550 | for the target codec beforehand, or pick up an example codec from the | ||
551 | codec proc collections in the tarball. Then, run the program with the | ||
552 | proc file, and the hda-emu program will start parsing the codec file | ||
553 | and simulates the HD-audio driver: | ||
554 | |||
555 | ------------------------------------------------------------------------ | ||
556 | % hda-emu codecs/stac9200-dell-d820-laptop | ||
557 | # Parsing.. | ||
558 | hda_codec: Unknown model for STAC9200, using BIOS defaults | ||
559 | hda_codec: pin nid 08 bios pin config 40c003fa | ||
560 | .... | ||
561 | ------------------------------------------------------------------------ | ||
562 | |||
563 | The program gives you only a very dumb command-line interface. You | ||
564 | can get a proc-file dump at the current state, get a list of control | ||
565 | (mixer) elements, set/get the control element value, simulate the PCM | ||
566 | operation, the jack plugging simulation, etc. | ||
567 | |||
568 | The package is found in: | ||
569 | |||
570 | - ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/ | ||
571 | |||
572 | A git repository is available: | ||
573 | |||
574 | - git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/hda-emu.git | ||
575 | |||
576 | See README file in the tarball for more details about hda-emu | ||
577 | program. | ||
diff --git a/Documentation/sound/alsa/Procfile.txt b/Documentation/sound/alsa/Procfile.txt index f738b296440a..bba2dbb79d81 100644 --- a/Documentation/sound/alsa/Procfile.txt +++ b/Documentation/sound/alsa/Procfile.txt | |||
@@ -153,6 +153,16 @@ card*/codec#* | |||
153 | Shows the general codec information and the attribute of each | 153 | Shows the general codec information and the attribute of each |
154 | widget node. | 154 | widget node. |
155 | 155 | ||
156 | card*/eld#* | ||
157 | Available for HDMI or DisplayPort interfaces. | ||
158 | Shows ELD(EDID Like Data) info retrieved from the attached HDMI sink, | ||
159 | and describes its audio capabilities and configurations. | ||
160 | |||
161 | Some ELD fields may be modified by doing `echo name hex_value > eld#*`. | ||
162 | Only do this if you are sure the HDMI sink provided value is wrong. | ||
163 | And if that makes your HDMI audio work, please report to us so that we | ||
164 | can fix it in future kernel releases. | ||
165 | |||
156 | 166 | ||
157 | Sequencer Information | 167 | Sequencer Information |
158 | --------------------- | 168 | --------------------- |
diff --git a/Documentation/sound/alsa/soc/machine.txt b/Documentation/sound/alsa/soc/machine.txt index f370e7db86af..bab7711ce963 100644 --- a/Documentation/sound/alsa/soc/machine.txt +++ b/Documentation/sound/alsa/soc/machine.txt | |||
@@ -9,7 +9,7 @@ the audio subsystem with the kernel as a platform device and is represented by | |||
9 | the following struct:- | 9 | the following struct:- |
10 | 10 | ||
11 | /* SoC machine */ | 11 | /* SoC machine */ |
12 | struct snd_soc_machine { | 12 | struct snd_soc_card { |
13 | char *name; | 13 | char *name; |
14 | 14 | ||
15 | int (*probe)(struct platform_device *pdev); | 15 | int (*probe)(struct platform_device *pdev); |
@@ -67,10 +67,10 @@ static struct snd_soc_dai_link corgi_dai = { | |||
67 | .ops = &corgi_ops, | 67 | .ops = &corgi_ops, |
68 | }; | 68 | }; |
69 | 69 | ||
70 | struct snd_soc_machine then sets up the machine with it's DAIs. e.g. | 70 | struct snd_soc_card then sets up the machine with it's DAIs. e.g. |
71 | 71 | ||
72 | /* corgi audio machine driver */ | 72 | /* corgi audio machine driver */ |
73 | static struct snd_soc_machine snd_soc_machine_corgi = { | 73 | static struct snd_soc_card snd_soc_corgi = { |
74 | .name = "Corgi", | 74 | .name = "Corgi", |
75 | .dai_link = &corgi_dai, | 75 | .dai_link = &corgi_dai, |
76 | .num_links = 1, | 76 | .num_links = 1, |
@@ -90,7 +90,7 @@ static struct wm8731_setup_data corgi_wm8731_setup = { | |||
90 | 90 | ||
91 | /* corgi audio subsystem */ | 91 | /* corgi audio subsystem */ |
92 | static struct snd_soc_device corgi_snd_devdata = { | 92 | static struct snd_soc_device corgi_snd_devdata = { |
93 | .machine = &snd_soc_machine_corgi, | 93 | .machine = &snd_soc_corgi, |
94 | .platform = &pxa2xx_soc_platform, | 94 | .platform = &pxa2xx_soc_platform, |
95 | .codec_dev = &soc_codec_dev_wm8731, | 95 | .codec_dev = &soc_codec_dev_wm8731, |
96 | .codec_data = &corgi_wm8731_setup, | 96 | .codec_data = &corgi_wm8731_setup, |
diff --git a/Documentation/tracepoints.txt b/Documentation/tracepoints.txt index 5d354e167494..6f0a044f5b5e 100644 --- a/Documentation/tracepoints.txt +++ b/Documentation/tracepoints.txt | |||
@@ -3,28 +3,30 @@ | |||
3 | Mathieu Desnoyers | 3 | Mathieu Desnoyers |
4 | 4 | ||
5 | 5 | ||
6 | This document introduces Linux Kernel Tracepoints and their use. It provides | 6 | This document introduces Linux Kernel Tracepoints and their use. It |
7 | examples of how to insert tracepoints in the kernel and connect probe functions | 7 | provides examples of how to insert tracepoints in the kernel and |
8 | to them and provides some examples of probe functions. | 8 | connect probe functions to them and provides some examples of probe |
9 | functions. | ||
9 | 10 | ||
10 | 11 | ||
11 | * Purpose of tracepoints | 12 | * Purpose of tracepoints |
12 | 13 | ||
13 | A tracepoint placed in code provides a hook to call a function (probe) that you | 14 | A tracepoint placed in code provides a hook to call a function (probe) |
14 | can provide at runtime. A tracepoint can be "on" (a probe is connected to it) or | 15 | that you can provide at runtime. A tracepoint can be "on" (a probe is |
15 | "off" (no probe is attached). When a tracepoint is "off" it has no effect, | 16 | connected to it) or "off" (no probe is attached). When a tracepoint is |
16 | except for adding a tiny time penalty (checking a condition for a branch) and | 17 | "off" it has no effect, except for adding a tiny time penalty |
17 | space penalty (adding a few bytes for the function call at the end of the | 18 | (checking a condition for a branch) and space penalty (adding a few |
18 | instrumented function and adds a data structure in a separate section). When a | 19 | bytes for the function call at the end of the instrumented function |
19 | tracepoint is "on", the function you provide is called each time the tracepoint | 20 | and adds a data structure in a separate section). When a tracepoint |
20 | is executed, in the execution context of the caller. When the function provided | 21 | is "on", the function you provide is called each time the tracepoint |
21 | ends its execution, it returns to the caller (continuing from the tracepoint | 22 | is executed, in the execution context of the caller. When the function |
22 | site). | 23 | provided ends its execution, it returns to the caller (continuing from |
24 | the tracepoint site). | ||
23 | 25 | ||
24 | You can put tracepoints at important locations in the code. They are | 26 | You can put tracepoints at important locations in the code. They are |
25 | lightweight hooks that can pass an arbitrary number of parameters, | 27 | lightweight hooks that can pass an arbitrary number of parameters, |
26 | which prototypes are described in a tracepoint declaration placed in a header | 28 | which prototypes are described in a tracepoint declaration placed in a |
27 | file. | 29 | header file. |
28 | 30 | ||
29 | They can be used for tracing and performance accounting. | 31 | They can be used for tracing and performance accounting. |
30 | 32 | ||
@@ -42,14 +44,16 @@ In include/trace/subsys.h : | |||
42 | 44 | ||
43 | #include <linux/tracepoint.h> | 45 | #include <linux/tracepoint.h> |
44 | 46 | ||
45 | DEFINE_TRACE(subsys_eventname, | 47 | DECLARE_TRACE(subsys_eventname, |
46 | TPPTOTO(int firstarg, struct task_struct *p), | 48 | TPPROTO(int firstarg, struct task_struct *p), |
47 | TPARGS(firstarg, p)); | 49 | TPARGS(firstarg, p)); |
48 | 50 | ||
49 | In subsys/file.c (where the tracing statement must be added) : | 51 | In subsys/file.c (where the tracing statement must be added) : |
50 | 52 | ||
51 | #include <trace/subsys.h> | 53 | #include <trace/subsys.h> |
52 | 54 | ||
55 | DEFINE_TRACE(subsys_eventname); | ||
56 | |||
53 | void somefct(void) | 57 | void somefct(void) |
54 | { | 58 | { |
55 | ... | 59 | ... |
@@ -61,31 +65,41 @@ Where : | |||
61 | - subsys_eventname is an identifier unique to your event | 65 | - subsys_eventname is an identifier unique to your event |
62 | - subsys is the name of your subsystem. | 66 | - subsys is the name of your subsystem. |
63 | - eventname is the name of the event to trace. | 67 | - eventname is the name of the event to trace. |
64 | - TPPTOTO(int firstarg, struct task_struct *p) is the prototype of the function | ||
65 | called by this tracepoint. | ||
66 | - TPARGS(firstarg, p) are the parameters names, same as found in the prototype. | ||
67 | 68 | ||
68 | Connecting a function (probe) to a tracepoint is done by providing a probe | 69 | - TPPROTO(int firstarg, struct task_struct *p) is the prototype of the |
69 | (function to call) for the specific tracepoint through | 70 | function called by this tracepoint. |
70 | register_trace_subsys_eventname(). Removing a probe is done through | ||
71 | unregister_trace_subsys_eventname(); it will remove the probe sure there is no | ||
72 | caller left using the probe when it returns. Probe removal is preempt-safe | ||
73 | because preemption is disabled around the probe call. See the "Probe example" | ||
74 | section below for a sample probe module. | ||
75 | |||
76 | The tracepoint mechanism supports inserting multiple instances of the same | ||
77 | tracepoint, but a single definition must be made of a given tracepoint name over | ||
78 | all the kernel to make sure no type conflict will occur. Name mangling of the | ||
79 | tracepoints is done using the prototypes to make sure typing is correct. | ||
80 | Verification of probe type correctness is done at the registration site by the | ||
81 | compiler. Tracepoints can be put in inline functions, inlined static functions, | ||
82 | and unrolled loops as well as regular functions. | ||
83 | |||
84 | The naming scheme "subsys_event" is suggested here as a convention intended | ||
85 | to limit collisions. Tracepoint names are global to the kernel: they are | ||
86 | considered as being the same whether they are in the core kernel image or in | ||
87 | modules. | ||
88 | 71 | ||
72 | - TPARGS(firstarg, p) are the parameters names, same as found in the | ||
73 | prototype. | ||
74 | |||
75 | Connecting a function (probe) to a tracepoint is done by providing a | ||
76 | probe (function to call) for the specific tracepoint through | ||
77 | register_trace_subsys_eventname(). Removing a probe is done through | ||
78 | unregister_trace_subsys_eventname(); it will remove the probe. | ||
79 | |||
80 | tracepoint_synchronize_unregister() must be called before the end of | ||
81 | the module exit function to make sure there is no caller left using | ||
82 | the probe. This, and the fact that preemption is disabled around the | ||
83 | probe call, make sure that probe removal and module unload are safe. | ||
84 | See the "Probe example" section below for a sample probe module. | ||
85 | |||
86 | The tracepoint mechanism supports inserting multiple instances of the | ||
87 | same tracepoint, but a single definition must be made of a given | ||
88 | tracepoint name over all the kernel to make sure no type conflict will | ||
89 | occur. Name mangling of the tracepoints is done using the prototypes | ||
90 | to make sure typing is correct. Verification of probe type correctness | ||
91 | is done at the registration site by the compiler. Tracepoints can be | ||
92 | put in inline functions, inlined static functions, and unrolled loops | ||
93 | as well as regular functions. | ||
94 | |||
95 | The naming scheme "subsys_event" is suggested here as a convention | ||
96 | intended to limit collisions. Tracepoint names are global to the | ||
97 | kernel: they are considered as being the same whether they are in the | ||
98 | core kernel image or in modules. | ||
99 | |||
100 | If the tracepoint has to be used in kernel modules, an | ||
101 | EXPORT_TRACEPOINT_SYMBOL_GPL() or EXPORT_TRACEPOINT_SYMBOL() can be | ||
102 | used to export the defined tracepoints. | ||
89 | 103 | ||
90 | * Probe / tracepoint example | 104 | * Probe / tracepoint example |
91 | 105 | ||
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt index 83c0033ee9e0..fcdc62b3c3d8 100644 --- a/Documentation/x86/boot.txt +++ b/Documentation/x86/boot.txt | |||
@@ -349,7 +349,7 @@ Protocol: 2.00+ | |||
349 | 3 SYSLINUX | 349 | 3 SYSLINUX |
350 | 4 EtherBoot | 350 | 4 EtherBoot |
351 | 5 ELILO | 351 | 5 ELILO |
352 | 7 GRuB | 352 | 7 GRUB |
353 | 8 U-BOOT | 353 | 8 U-BOOT |
354 | 9 Xen | 354 | 9 Xen |
355 | A Gujin | 355 | A Gujin |
@@ -537,8 +537,8 @@ Type: read | |||
537 | Offset/size: 0x248/4 | 537 | Offset/size: 0x248/4 |
538 | Protocol: 2.08+ | 538 | Protocol: 2.08+ |
539 | 539 | ||
540 | If non-zero then this field contains the offset from the end of the | 540 | If non-zero then this field contains the offset from the beginning |
541 | real-mode code to the payload. | 541 | of the protected-mode code to the payload. |
542 | 542 | ||
543 | The payload may be compressed. The format of both the compressed and | 543 | The payload may be compressed. The format of both the compressed and |
544 | uncompressed data should be determined using the standard magic | 544 | uncompressed data should be determined using the standard magic |
diff --git a/Documentation/x86/pat.txt b/Documentation/x86/pat.txt index c93ff5f4c0dd..cf08c9fff3cd 100644 --- a/Documentation/x86/pat.txt +++ b/Documentation/x86/pat.txt | |||
@@ -80,6 +80,30 @@ pci proc | -- | -- | WC | | |||
80 | | | | | | 80 | | | | | |
81 | ------------------------------------------------------------------- | 81 | ------------------------------------------------------------------- |
82 | 82 | ||
83 | Advanced APIs for drivers | ||
84 | ------------------------- | ||
85 | A. Exporting pages to users with remap_pfn_range, io_remap_pfn_range, | ||
86 | vm_insert_pfn | ||
87 | |||
88 | Drivers wanting to export some pages to userspace do it by using mmap | ||
89 | interface and a combination of | ||
90 | 1) pgprot_noncached() | ||
91 | 2) io_remap_pfn_range() or remap_pfn_range() or vm_insert_pfn() | ||
92 | |||
93 | With PAT support, a new API pgprot_writecombine is being added. So, drivers can | ||
94 | continue to use the above sequence, with either pgprot_noncached() or | ||
95 | pgprot_writecombine() in step 1, followed by step 2. | ||
96 | |||
97 | In addition, step 2 internally tracks the region as UC or WC in memtype | ||
98 | list in order to ensure no conflicting mapping. | ||
99 | |||
100 | Note that this set of APIs only works with IO (non RAM) regions. If driver | ||
101 | wants to export a RAM region, it has to do set_memory_uc() or set_memory_wc() | ||
102 | as step 0 above and also track the usage of those pages and use set_memory_wb() | ||
103 | before the page is freed to free pool. | ||
104 | |||
105 | |||
106 | |||
83 | Notes: | 107 | Notes: |
84 | 108 | ||
85 | -- in the above table mean "Not suggested usage for the API". Some of the --'s | 109 | -- in the above table mean "Not suggested usage for the API". Some of the --'s |
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt index f6d561a1a9b2..34c13040a718 100644 --- a/Documentation/x86/x86_64/boot-options.txt +++ b/Documentation/x86/x86_64/boot-options.txt | |||
@@ -79,17 +79,6 @@ Timing | |||
79 | Report when timer interrupts are lost because some code turned off | 79 | Report when timer interrupts are lost because some code turned off |
80 | interrupts for too long. | 80 | interrupts for too long. |
81 | 81 | ||
82 | nmi_watchdog=NUMBER[,panic] | ||
83 | NUMBER can be: | ||
84 | 0 don't use an NMI watchdog | ||
85 | 1 use the IO-APIC timer for the NMI watchdog | ||
86 | 2 use the local APIC for the NMI watchdog using a performance counter. Note | ||
87 | This will use one performance counter and the local APIC's performance | ||
88 | vector. | ||
89 | When panic is specified panic when an NMI watchdog timeout occurs. | ||
90 | This is useful when you use a panic=... timeout and need the box | ||
91 | quickly up again. | ||
92 | |||
93 | nohpet | 82 | nohpet |
94 | Don't use the HPET timer. | 83 | Don't use the HPET timer. |
95 | 84 | ||
diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt index efce75097369..29b52b14d0b4 100644 --- a/Documentation/x86/x86_64/mm.txt +++ b/Documentation/x86/x86_64/mm.txt | |||
@@ -6,7 +6,7 @@ Virtual memory map with 4 level page tables: | |||
6 | 0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm | 6 | 0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm |
7 | hole caused by [48:63] sign extension | 7 | hole caused by [48:63] sign extension |
8 | ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole | 8 | ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole |
9 | ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory | 9 | ffff880000000000 - ffffc0ffffffffff (=57 TB) direct mapping of all phys. memory |
10 | ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole | 10 | ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole |
11 | ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space | 11 | ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space |
12 | ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB) | 12 | ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB) |