diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-04-12 16:54:43 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-04-12 16:54:43 -0400 |
commit | a890b15c0990cc8d686edcc85f5fccde71ad5ce9 (patch) | |
tree | 73162355b58283a2531f13fbbf663809f95c1483 /Documentation | |
parent | 79fa1b677be3a985cc66b9218a4dd09818f1051b (diff) | |
parent | 26ec634c31a11a003040e10b4d650495158632fd (diff) |
Merge branch 'upstream'
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/DMA-mapping.txt | 4 | ||||
-rw-r--r-- | Documentation/DocBook/libata.tmpl | 2 | ||||
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 8 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 12 | ||||
-rw-r--r-- | Documentation/isdn/README.gigaset | 286 | ||||
-rw-r--r-- | Documentation/kbuild/modules.txt | 2 | ||||
-rw-r--r-- | Documentation/laptop-mode.txt | 10 | ||||
-rw-r--r-- | Documentation/memory-barriers.txt | 68 | ||||
-rw-r--r-- | Documentation/mtrr.txt | 23 | ||||
-rw-r--r-- | Documentation/scsi/scsi_eh.txt | 14 | ||||
-rw-r--r-- | Documentation/scsi/scsi_mid_low_api.txt | 19 | ||||
-rw-r--r-- | Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl | 16 | ||||
-rw-r--r-- | Documentation/vm/hugetlbpage.txt | 20 | ||||
-rw-r--r-- | Documentation/x86_64/boot-options.txt | 5 |
14 files changed, 405 insertions, 84 deletions
diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt index ee4bb73683cd..10bf4deb96aa 100644 --- a/Documentation/DMA-mapping.txt +++ b/Documentation/DMA-mapping.txt | |||
@@ -194,7 +194,7 @@ document for how to handle this case. | |||
194 | Finally, if your device can only drive the low 24-bits of | 194 | Finally, if your device can only drive the low 24-bits of |
195 | address during PCI bus mastering you might do something like: | 195 | address during PCI bus mastering you might do something like: |
196 | 196 | ||
197 | if (pci_set_dma_mask(pdev, 0x00ffffff)) { | 197 | if (pci_set_dma_mask(pdev, DMA_24BIT_MASK)) { |
198 | printk(KERN_WARNING | 198 | printk(KERN_WARNING |
199 | "mydev: 24-bit DMA addressing not available.\n"); | 199 | "mydev: 24-bit DMA addressing not available.\n"); |
200 | goto ignore_this_device; | 200 | goto ignore_this_device; |
@@ -212,7 +212,7 @@ functions (for example a sound card provides playback and record | |||
212 | functions) and the various different functions have _different_ | 212 | functions) and the various different functions have _different_ |
213 | DMA addressing limitations, you may wish to probe each mask and | 213 | DMA addressing limitations, you may wish to probe each mask and |
214 | only provide the functionality which the machine can handle. It | 214 | only provide the functionality which the machine can handle. It |
215 | is important that the last call to pci_set_dma_mask() be for the | 215 | is important that the last call to pci_set_dma_mask() be for the |
216 | most specific mask. | 216 | most specific mask. |
217 | 217 | ||
218 | Here is pseudo-code showing how this might be done: | 218 | Here is pseudo-code showing how this might be done: |
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl index 5bcbb6ee3bc0..f869b03929db 100644 --- a/Documentation/DocBook/libata.tmpl +++ b/Documentation/DocBook/libata.tmpl | |||
@@ -705,7 +705,7 @@ and other resources, etc. | |||
705 | 705 | ||
706 | <sect1><title>ata_scsi_error()</title> | 706 | <sect1><title>ata_scsi_error()</title> |
707 | <para> | 707 | <para> |
708 | ata_scsi_error() is the current hostt->eh_strategy_handler() | 708 | ata_scsi_error() is the current transportt->eh_strategy_handler() |
709 | for libata. As discussed above, this will be entered in two | 709 | for libata. As discussed above, this will be entered in two |
710 | cases - timeout and ATAPI error completion. This function | 710 | cases - timeout and ATAPI error completion. This function |
711 | calls low level libata driver's eng_timeout() callback, the | 711 | calls low level libata driver's eng_timeout() callback, the |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 59d0c74c79c9..293fed113dff 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -71,14 +71,6 @@ Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br> | |||
71 | 71 | ||
72 | --------------------------- | 72 | --------------------------- |
73 | 73 | ||
74 | What: remove EXPORT_SYMBOL(panic_timeout) | ||
75 | When: April 2006 | ||
76 | Files: kernel/panic.c | ||
77 | Why: No modular usage in the kernel. | ||
78 | Who: Adrian Bunk <bunk@stusta.de> | ||
79 | |||
80 | --------------------------- | ||
81 | |||
82 | What: remove EXPORT_SYMBOL(insert_resource) | 74 | What: remove EXPORT_SYMBOL(insert_resource) |
83 | When: April 2006 | 75 | When: April 2006 |
84 | Files: kernel/resource.c | 76 | Files: kernel/resource.c |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index adaa899e5c90..3a2e5520c1e3 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -694,7 +694,7 @@ struct file_operations | |||
694 | ---------------------- | 694 | ---------------------- |
695 | 695 | ||
696 | This describes how the VFS can manipulate an open file. As of kernel | 696 | This describes how the VFS can manipulate an open file. As of kernel |
697 | 2.6.13, the following members are defined: | 697 | 2.6.17, the following members are defined: |
698 | 698 | ||
699 | struct file_operations { | 699 | struct file_operations { |
700 | loff_t (*llseek) (struct file *, loff_t, int); | 700 | loff_t (*llseek) (struct file *, loff_t, int); |
@@ -723,6 +723,10 @@ struct file_operations { | |||
723 | int (*check_flags)(int); | 723 | int (*check_flags)(int); |
724 | int (*dir_notify)(struct file *filp, unsigned long arg); | 724 | int (*dir_notify)(struct file *filp, unsigned long arg); |
725 | int (*flock) (struct file *, int, struct file_lock *); | 725 | int (*flock) (struct file *, int, struct file_lock *); |
726 | ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned | ||
727 | int); | ||
728 | ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned | ||
729 | int); | ||
726 | }; | 730 | }; |
727 | 731 | ||
728 | Again, all methods are called without any locks being held, unless | 732 | Again, all methods are called without any locks being held, unless |
@@ -790,6 +794,12 @@ otherwise noted. | |||
790 | 794 | ||
791 | flock: called by the flock(2) system call | 795 | flock: called by the flock(2) system call |
792 | 796 | ||
797 | splice_write: called by the VFS to splice data from a pipe to a file. This | ||
798 | method is used by the splice(2) system call | ||
799 | |||
800 | splice_read: called by the VFS to splice data from file to a pipe. This | ||
801 | method is used by the splice(2) system call | ||
802 | |||
793 | Note that the file operations are implemented by the specific | 803 | Note that the file operations are implemented by the specific |
794 | filesystem in which the inode resides. When opening a device node | 804 | filesystem in which the inode resides. When opening a device node |
795 | (character or block special) most filesystems will call special | 805 | (character or block special) most filesystems will call special |
diff --git a/Documentation/isdn/README.gigaset b/Documentation/isdn/README.gigaset new file mode 100644 index 000000000000..85a64defd385 --- /dev/null +++ b/Documentation/isdn/README.gigaset | |||
@@ -0,0 +1,286 @@ | |||
1 | GigaSet 307x Device Driver | ||
2 | ========================== | ||
3 | |||
4 | 1. Requirements | ||
5 | ------------ | ||
6 | 1.1. Hardware | ||
7 | -------- | ||
8 | This release supports the connection of the Gigaset 307x/417x family of | ||
9 | ISDN DECT bases via Gigaset M101 Data, Gigaset M105 Data or direct USB | ||
10 | connection. The following devices are reported to be compatible: | ||
11 | 307x/417x: | ||
12 | Gigaset SX255isdn | ||
13 | Gigaset SX353isdn | ||
14 | Sinus 45 [AB] isdn (Deutsche Telekom) | ||
15 | Sinus 721X/XA | ||
16 | Vox Chicago 390 ISDN (KPN Telecom) | ||
17 | M101: | ||
18 | Sinus 45 Data 1 (Telekom) | ||
19 | M105: | ||
20 | Gigaset USB Adapter DECT | ||
21 | Sinus 45 Data 2 (Telekom) | ||
22 | Sinus 721 data | ||
23 | Chicago 390 USB (KPN) | ||
24 | See also http://www.erbze.info/sinus_gigaset.htm and | ||
25 | http://gigaset307x.sourceforge.net/ | ||
26 | |||
27 | We had also reports from users of Gigaset M105 who could use the drivers | ||
28 | with SX 100 and CX 100 ISDN bases (only in unimodem mode, see section 2.4.) | ||
29 | If you have another device that works with our driver, please let us know. | ||
30 | For example, Gigaset SX205isdn/Sinus 721 X SE and Gigaset SX303isdn bases | ||
31 | are just versions without answering machine of models known to work, so | ||
32 | they should work just as well; but so far we are lacking positive reports | ||
33 | on these. | ||
34 | |||
35 | Chances of getting an USB device to work are good if the output of | ||
36 | lsusb | ||
37 | at the command line contains one of the following: | ||
38 | ID 0681:0001 | ||
39 | ID 0681:0002 | ||
40 | ID 0681:0009 | ||
41 | ID 0681:0021 | ||
42 | ID 0681:0022 | ||
43 | |||
44 | 1.2. Software | ||
45 | -------- | ||
46 | The driver works with ISDN4linux and so can be used with any software | ||
47 | which is able to use ISDN4linux for ISDN connections (voice or data). | ||
48 | CAPI4Linux support is planned but not yet available. | ||
49 | |||
50 | There are some user space tools available at | ||
51 | http://sourceforge.net/projects/gigaset307x/ | ||
52 | which provide access to additional device specific functions like SMS, | ||
53 | phonebook or call journal. | ||
54 | |||
55 | |||
56 | 2. How to use the driver | ||
57 | --------------------- | ||
58 | 2.1. Modules | ||
59 | ------- | ||
60 | To get the device working, you have to load the proper kernel module. You | ||
61 | can do this using | ||
62 | modprobe modulename | ||
63 | where modulename is usb_gigaset (M105) or bas_gigaset (direct USB | ||
64 | connection to the base). | ||
65 | |||
66 | 2.2. Device nodes for user space programs | ||
67 | ------------------------------------ | ||
68 | The device can be accessed from user space (eg. by the user space tools | ||
69 | mentioned in 1.2.) through the device nodes: | ||
70 | |||
71 | - /dev/ttyGU0 for M105 (USB data boxes) | ||
72 | - /dev/ttyGB0 for the base driver (direct USB connection) | ||
73 | |||
74 | You can also select a "default device" which is used by the frontends when | ||
75 | no device node is given as parameter, by creating a symlink /dev/ttyG to | ||
76 | one of them, eg.: | ||
77 | |||
78 | ln -s /dev/ttyGB0 /dev/ttyG | ||
79 | |||
80 | 2.3. ISDN4linux | ||
81 | ---------- | ||
82 | This is the "normal" mode of operation. After loading the module you can | ||
83 | set up the ISDN system just as you'd do with any ISDN card. | ||
84 | Your distribution should provide some configuration utility. | ||
85 | If not, you can use some HOWTOs like | ||
86 | http://www.linuxhaven.de/dlhp/HOWTO/DE-ISDN-HOWTO-5.html | ||
87 | If this doesn't work, because you have some recent device like SX100 where | ||
88 | debug output (see section 3.2.) shows something like this when dialing | ||
89 | CMD Received: ERROR | ||
90 | Available Params: 0 | ||
91 | Connection State: 0, Response: -1 | ||
92 | gigaset_process_response: resp_code -1 in ConState 0 ! | ||
93 | Timeout occurred | ||
94 | you might need to use unimodem mode: | ||
95 | |||
96 | 2.4. Unimodem mode | ||
97 | ------------- | ||
98 | This is needed for some devices [e.g. SX100] as they have problems with | ||
99 | the "normal" commands. | ||
100 | |||
101 | If you have installed the command line tool gigacontr, you can enter | ||
102 | unimodem mode using | ||
103 | gigacontr --mode unimodem | ||
104 | You can switch back using | ||
105 | gigacontr --mode isdn | ||
106 | |||
107 | You can also load the driver using e.g. | ||
108 | modprobe usb_gigaset startmode=0 | ||
109 | to prevent the driver from starting in "isdn4linux mode". | ||
110 | |||
111 | In this mode the device works like a modem connected to a serial port | ||
112 | (the /dev/ttyGU0, ... mentioned above) which understands the commands | ||
113 | ATZ init, reset | ||
114 | => OK or ERROR | ||
115 | ATD | ||
116 | ATDT dial | ||
117 | => OK, CONNECT, | ||
118 | BUSY, | ||
119 | NO DIAL TONE, | ||
120 | NO CARRIER, | ||
121 | NO ANSWER | ||
122 | <pause>+++<pause> change to command mode when connected | ||
123 | ATH hangup | ||
124 | |||
125 | You can use some configuration tool of your distribution to configure this | ||
126 | "modem" or configure pppd/wvdial manually. There are some example ppp | ||
127 | configuration files and chat scripts in the gigaset-VERSION/ppp directory. | ||
128 | Please note that the USB drivers are not able to change the state of the | ||
129 | control lines (the M105 driver can be configured to use some undocumented | ||
130 | control requests, if you really need the control lines, though). This means | ||
131 | you must use "Stupid Mode" if you are using wvdial or you should use the | ||
132 | nocrtscts option of pppd. | ||
133 | You must also assure that the ppp_async module is loaded with the parameter | ||
134 | flag_time=0. You can do this e.g. by adding a line like | ||
135 | |||
136 | options ppp_async flag_time=0 | ||
137 | |||
138 | to /etc/modprobe.conf. If your distribution has some local module | ||
139 | configuration file like /etc/modprobe.conf.local, | ||
140 | using that should be preferred. | ||
141 | |||
142 | 2.5. Call-ID (CID) mode | ||
143 | ------------------ | ||
144 | Call-IDs are numbers used to tag commands to, and responses from, the | ||
145 | Gigaset base in order to support the simultaneous handling of multiple | ||
146 | ISDN calls. Their use can be enabled ("CID mode") or disabled ("Unimodem | ||
147 | mode"). Without Call-IDs (in Unimodem mode), only a very limited set of | ||
148 | functions is available. It allows outgoing data connections only, but | ||
149 | does not signal incoming calls or other base events. | ||
150 | |||
151 | DECT cordless data devices (M10x) permanently occupy the cordless | ||
152 | connection to the base while Call-IDs are activated. As the Gigaset | ||
153 | bases only support one DECT data connection at a time, this prevents | ||
154 | other DECT cordless data devices from accessing the base. | ||
155 | |||
156 | During active operation, the driver switches to the necessary mode | ||
157 | automatically. However, for the reasons above, the mode chosen when | ||
158 | the device is not in use (idle) can be selected by the user. | ||
159 | - If you want to receive incoming calls, you can use the default | ||
160 | settings (CID mode). | ||
161 | - If you have several DECT data devices (M10x) which you want to use | ||
162 | in turn, select Unimodem mode by passing the parameter "cidmode=0" to | ||
163 | the driver ("modprobe usb_gigaset cidmode=0" or modprobe.conf). | ||
164 | |||
165 | If you want both of these at once, you are out of luck. | ||
166 | |||
167 | You can also use /sys/module/<name>/parameters/cidmode for changing | ||
168 | the CID mode setting (<name> is usb_gigaset or bas_gigaset). | ||
169 | |||
170 | |||
171 | 3. Troubleshooting | ||
172 | --------------- | ||
173 | 3.1. Solutions to frequently reported problems | ||
174 | ----------------------------------------- | ||
175 | Problem: | ||
176 | You have a slow provider and isdn4linux gives up dialing too early. | ||
177 | Solution: | ||
178 | Load the isdn module using the dialtimeout option. You can do this e.g. | ||
179 | by adding a line like | ||
180 | |||
181 | options isdn dialtimeout=15 | ||
182 | |||
183 | to /etc/modprobe.conf. If your distribution has some local module | ||
184 | configuration file like /etc/modprobe.conf.local, | ||
185 | using that should be preferred. | ||
186 | |||
187 | Problem: | ||
188 | Your isdn script aborts with a message about isdnlog. | ||
189 | Solution: | ||
190 | Try deactivating (or commenting out) isdnlog. This driver does not | ||
191 | support it. | ||
192 | |||
193 | Problem: | ||
194 | You have two or more DECT data adapters (M101/M105) and only the | ||
195 | first one you turn on works. | ||
196 | Solution: | ||
197 | Select Unimodem mode for all DECT data adapters. (see section 2.4.) | ||
198 | |||
199 | 3.2. Telling the driver to provide more information | ||
200 | ---------------------------------------------- | ||
201 | Building the driver with the "Gigaset debugging" kernel configuration | ||
202 | option (CONFIG_GIGASET_DEBUG) gives it the ability to produce additional | ||
203 | information useful for debugging. | ||
204 | |||
205 | You can control the amount of debugging information the driver produces by | ||
206 | writing an appropriate value to /sys/module/gigaset/parameters/debug, e.g. | ||
207 | echo 0 > /sys/module/gigaset/parameters/debug | ||
208 | switches off debugging output completely, | ||
209 | echo 0x10a020 > /sys/module/gigaset/parameters/debug | ||
210 | enables the standard set of debugging output messages. These values are | ||
211 | bit patterns where every bit controls a certain type of debugging output. | ||
212 | See the constants DEBUG_* in the source file gigaset.h for details. | ||
213 | |||
214 | The initial value can be set using the debug parameter when loading the | ||
215 | module "gigaset", e.g. by adding a line | ||
216 | options gigaset debug=0 | ||
217 | to /etc/modprobe.conf, ... | ||
218 | |||
219 | Generated debugging information can be found | ||
220 | - as output of the command | ||
221 | dmesg | ||
222 | - in system log files written by your syslog daemon, usually | ||
223 | in /var/log/, e.g. /var/log/messages. | ||
224 | |||
225 | 3.3. Reporting problems and bugs | ||
226 | --------------------------- | ||
227 | If you can't solve problems with the driver on your own, feel free to | ||
228 | use one of the forums, bug trackers, or mailing lists on | ||
229 | http://sourceforge.net/projects/gigaset307x | ||
230 | or write an electronic mail to the maintainers. | ||
231 | |||
232 | Try to provide as much information as possible, such as | ||
233 | - distribution | ||
234 | - kernel version (uname -r) | ||
235 | - gcc version (gcc --version) | ||
236 | - hardware architecture (uname -m, ...) | ||
237 | - type and firmware version of your device (base and wireless module, | ||
238 | if any) | ||
239 | - output of "lsusb -v" (if using an USB device) | ||
240 | - error messages | ||
241 | - relevant system log messages (it would help if you activate debug | ||
242 | output as described in 3.2.) | ||
243 | |||
244 | For help with general configuration problems not specific to our driver, | ||
245 | such as isdn4linux and network configuration issues, please refer to the | ||
246 | appropriate forums and newsgroups. | ||
247 | |||
248 | 3.4. Reporting problem solutions | ||
249 | --------------------------- | ||
250 | If you solved a problem with our drivers, wrote startup scripts for your | ||
251 | distribution, ... feel free to contact us (using one of the places | ||
252 | mentioned in 3.3.). We'd like to add scripts, hints, documentation | ||
253 | to the driver and/or the project web page. | ||
254 | |||
255 | |||
256 | 4. Links, other software | ||
257 | --------------------- | ||
258 | - Sourceforge project developing this driver and associated tools | ||
259 | http://sourceforge.net/projects/gigaset307x | ||
260 | - Yahoo! Group on the Siemens Gigaset family of devices | ||
261 | http://de.groups.yahoo.com/group/Siemens-Gigaset | ||
262 | - Siemens Gigaset/T-Sinus compatibility table | ||
263 | http://www.erbze.info/sinus_gigaset.htm | ||
264 | |||
265 | |||
266 | 5. Credits | ||
267 | ------- | ||
268 | Thanks to | ||
269 | |||
270 | Karsten Keil | ||
271 | for his help with isdn4linux | ||
272 | Deti Fliegl | ||
273 | for his base driver code | ||
274 | Dennis Dietrich | ||
275 | for his kernel 2.6 patches | ||
276 | Andreas Rummel | ||
277 | for his work and logs to get unimodem mode working | ||
278 | Andreas Degert | ||
279 | for his logs and patches to get cx 100 working | ||
280 | Dietrich Feist | ||
281 | for his generous donation of one M105 and two M101 cordless adapters | ||
282 | Christoph Schweers | ||
283 | for his generous donation of a M34 device | ||
284 | |||
285 | and all the other people who sent logs and other information. | ||
286 | |||
diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt index fcccf2432f98..61fc079eb966 100644 --- a/Documentation/kbuild/modules.txt +++ b/Documentation/kbuild/modules.txt | |||
@@ -44,7 +44,7 @@ What is covered within this file is mainly information to authors | |||
44 | of modules. The author of an external modules should supply | 44 | of modules. The author of an external modules should supply |
45 | a makefile that hides most of the complexity so one only has to type | 45 | a makefile that hides most of the complexity so one only has to type |
46 | 'make' to build the module. A complete example will be present in | 46 | 'make' to build the module. A complete example will be present in |
47 | chapter ¤. Creating a kbuild file for an external module". | 47 | chapter 4, "Creating a kbuild file for an external module". |
48 | 48 | ||
49 | 49 | ||
50 | === 2. How to build external modules | 50 | === 2. How to build external modules |
diff --git a/Documentation/laptop-mode.txt b/Documentation/laptop-mode.txt index b18e21675906..5696e879449b 100644 --- a/Documentation/laptop-mode.txt +++ b/Documentation/laptop-mode.txt | |||
@@ -919,11 +919,11 @@ int main(int argc, char **argv) | |||
919 | int settle_time = 60; | 919 | int settle_time = 60; |
920 | 920 | ||
921 | /* Parse the simple command-line */ | 921 | /* Parse the simple command-line */ |
922 | if (ac == 2) | 922 | if (argc == 2) |
923 | disk = av[1]; | 923 | disk = argv[1]; |
924 | else if (ac == 4) { | 924 | else if (argc == 4) { |
925 | settle_time = atoi(av[2]); | 925 | settle_time = atoi(argv[2]); |
926 | disk = av[3]; | 926 | disk = argv[3]; |
927 | } else | 927 | } else |
928 | usage(); | 928 | usage(); |
929 | 929 | ||
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index f8550310a6d5..92f0056d928c 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -610,6 +610,7 @@ loads. Consider the following sequence of events: | |||
610 | 610 | ||
611 | CPU 1 CPU 2 | 611 | CPU 1 CPU 2 |
612 | ======================= ======================= | 612 | ======================= ======================= |
613 | { B = 7; X = 9; Y = 8; C = &Y } | ||
613 | STORE A = 1 | 614 | STORE A = 1 |
614 | STORE B = 2 | 615 | STORE B = 2 |
615 | <write barrier> | 616 | <write barrier> |
@@ -651,7 +652,20 @@ In the above example, CPU 2 perceives that B is 7, despite the load of *C | |||
651 | (which would be B) coming after the the LOAD of C. | 652 | (which would be B) coming after the the LOAD of C. |
652 | 653 | ||
653 | If, however, a data dependency barrier were to be placed between the load of C | 654 | If, however, a data dependency barrier were to be placed between the load of C |
654 | and the load of *C (ie: B) on CPU 2, then the following will occur: | 655 | and the load of *C (ie: B) on CPU 2: |
656 | |||
657 | CPU 1 CPU 2 | ||
658 | ======================= ======================= | ||
659 | { B = 7; X = 9; Y = 8; C = &Y } | ||
660 | STORE A = 1 | ||
661 | STORE B = 2 | ||
662 | <write barrier> | ||
663 | STORE C = &B LOAD X | ||
664 | STORE D = 4 LOAD C (gets &B) | ||
665 | <data dependency barrier> | ||
666 | LOAD *C (reads B) | ||
667 | |||
668 | then the following will occur: | ||
655 | 669 | ||
656 | +-------+ : : : : | 670 | +-------+ : : : : |
657 | | | +------+ +-------+ | 671 | | | +------+ +-------+ |
@@ -829,8 +843,8 @@ There are some more advanced barrier functions: | |||
829 | (*) smp_mb__after_atomic_inc(); | 843 | (*) smp_mb__after_atomic_inc(); |
830 | 844 | ||
831 | These are for use with atomic add, subtract, increment and decrement | 845 | These are for use with atomic add, subtract, increment and decrement |
832 | functions, especially when used for reference counting. These functions | 846 | functions that don't return a value, especially when used for reference |
833 | do not imply memory barriers. | 847 | counting. These functions do not imply memory barriers. |
834 | 848 | ||
835 | As an example, consider a piece of code that marks an object as being dead | 849 | As an example, consider a piece of code that marks an object as being dead |
836 | and then decrements the object's reference count: | 850 | and then decrements the object's reference count: |
@@ -1263,15 +1277,17 @@ else. | |||
1263 | ATOMIC OPERATIONS | 1277 | ATOMIC OPERATIONS |
1264 | ----------------- | 1278 | ----------------- |
1265 | 1279 | ||
1266 | Though they are technically interprocessor interaction considerations, atomic | 1280 | Whilst they are technically interprocessor interaction considerations, atomic |
1267 | operations are noted specially as they do _not_ generally imply memory | 1281 | operations are noted specially as some of them imply full memory barriers and |
1268 | barriers. The possible offenders include: | 1282 | some don't, but they're very heavily relied on as a group throughout the |
1283 | kernel. | ||
1284 | |||
1285 | Any atomic operation that modifies some state in memory and returns information | ||
1286 | about the state (old or new) implies an SMP-conditional general memory barrier | ||
1287 | (smp_mb()) on each side of the actual operation. These include: | ||
1269 | 1288 | ||
1270 | xchg(); | 1289 | xchg(); |
1271 | cmpxchg(); | 1290 | cmpxchg(); |
1272 | test_and_set_bit(); | ||
1273 | test_and_clear_bit(); | ||
1274 | test_and_change_bit(); | ||
1275 | atomic_cmpxchg(); | 1291 | atomic_cmpxchg(); |
1276 | atomic_inc_return(); | 1292 | atomic_inc_return(); |
1277 | atomic_dec_return(); | 1293 | atomic_dec_return(); |
@@ -1282,21 +1298,31 @@ barriers. The possible offenders include: | |||
1282 | atomic_sub_and_test(); | 1298 | atomic_sub_and_test(); |
1283 | atomic_add_negative(); | 1299 | atomic_add_negative(); |
1284 | atomic_add_unless(); | 1300 | atomic_add_unless(); |
1301 | test_and_set_bit(); | ||
1302 | test_and_clear_bit(); | ||
1303 | test_and_change_bit(); | ||
1285 | 1304 | ||
1286 | These may be used for such things as implementing LOCK operations or controlling | 1305 | These are used for such things as implementing LOCK-class and UNLOCK-class |
1287 | the lifetime of objects by decreasing their reference counts. In such cases | 1306 | operations and adjusting reference counters towards object destruction, and as |
1288 | they need preceding memory barriers. | 1307 | such the implicit memory barrier effects are necessary. |
1289 | 1308 | ||
1290 | The following may also be possible offenders as they may be used as UNLOCK | ||
1291 | operations. | ||
1292 | 1309 | ||
1310 | The following operation are potential problems as they do _not_ imply memory | ||
1311 | barriers, but might be used for implementing such things as UNLOCK-class | ||
1312 | operations: | ||
1313 | |||
1314 | atomic_set(); | ||
1293 | set_bit(); | 1315 | set_bit(); |
1294 | clear_bit(); | 1316 | clear_bit(); |
1295 | change_bit(); | 1317 | change_bit(); |
1296 | atomic_set(); | ||
1297 | 1318 | ||
1319 | With these the appropriate explicit memory barrier should be used if necessary | ||
1320 | (smp_mb__before_clear_bit() for instance). | ||
1298 | 1321 | ||
1299 | The following are a little tricky: | 1322 | |
1323 | The following also do _not_ imply memory barriers, and so may require explicit | ||
1324 | memory barriers under some circumstances (smp_mb__before_atomic_dec() for | ||
1325 | instance)): | ||
1300 | 1326 | ||
1301 | atomic_add(); | 1327 | atomic_add(); |
1302 | atomic_sub(); | 1328 | atomic_sub(); |
@@ -1317,10 +1343,12 @@ specific order. | |||
1317 | 1343 | ||
1318 | 1344 | ||
1319 | Basically, each usage case has to be carefully considered as to whether memory | 1345 | Basically, each usage case has to be carefully considered as to whether memory |
1320 | barriers are needed or not. The simplest rule is probably: if the atomic | 1346 | barriers are needed or not. |
1321 | operation is protected by a lock, then it does not require a barrier unless | 1347 | |
1322 | there's another operation within the critical section with respect to which an | 1348 | [!] Note that special memory barrier primitives are available for these |
1323 | ordering must be maintained. | 1349 | situations because on some CPUs the atomic instructions used imply full memory |
1350 | barriers, and so barrier instructions are superfluous in conjunction with them, | ||
1351 | and in such cases the special barrier primitives will be no-ops. | ||
1324 | 1352 | ||
1325 | See Documentation/atomic_ops.txt for more information. | 1353 | See Documentation/atomic_ops.txt for more information. |
1326 | 1354 | ||
diff --git a/Documentation/mtrr.txt b/Documentation/mtrr.txt index b78af1c32996..c39ac395970e 100644 --- a/Documentation/mtrr.txt +++ b/Documentation/mtrr.txt | |||
@@ -138,19 +138,29 @@ Reading MTRRs from a C program using ioctl()'s: | |||
138 | 138 | ||
139 | */ | 139 | */ |
140 | #include <stdio.h> | 140 | #include <stdio.h> |
141 | #include <stdlib.h> | ||
141 | #include <string.h> | 142 | #include <string.h> |
142 | #include <sys/types.h> | 143 | #include <sys/types.h> |
143 | #include <sys/stat.h> | 144 | #include <sys/stat.h> |
144 | #include <fcntl.h> | 145 | #include <fcntl.h> |
145 | #include <sys/ioctl.h> | 146 | #include <sys/ioctl.h> |
146 | #include <errno.h> | 147 | #include <errno.h> |
147 | #define MTRR_NEED_STRINGS | ||
148 | #include <asm/mtrr.h> | 148 | #include <asm/mtrr.h> |
149 | 149 | ||
150 | #define TRUE 1 | 150 | #define TRUE 1 |
151 | #define FALSE 0 | 151 | #define FALSE 0 |
152 | #define ERRSTRING strerror (errno) | 152 | #define ERRSTRING strerror (errno) |
153 | 153 | ||
154 | static char *mtrr_strings[MTRR_NUM_TYPES] = | ||
155 | { | ||
156 | "uncachable", /* 0 */ | ||
157 | "write-combining", /* 1 */ | ||
158 | "?", /* 2 */ | ||
159 | "?", /* 3 */ | ||
160 | "write-through", /* 4 */ | ||
161 | "write-protect", /* 5 */ | ||
162 | "write-back", /* 6 */ | ||
163 | }; | ||
154 | 164 | ||
155 | int main () | 165 | int main () |
156 | { | 166 | { |
@@ -232,13 +242,22 @@ Creating MTRRs from a C programme using ioctl()'s: | |||
232 | #include <fcntl.h> | 242 | #include <fcntl.h> |
233 | #include <sys/ioctl.h> | 243 | #include <sys/ioctl.h> |
234 | #include <errno.h> | 244 | #include <errno.h> |
235 | #define MTRR_NEED_STRINGS | ||
236 | #include <asm/mtrr.h> | 245 | #include <asm/mtrr.h> |
237 | 246 | ||
238 | #define TRUE 1 | 247 | #define TRUE 1 |
239 | #define FALSE 0 | 248 | #define FALSE 0 |
240 | #define ERRSTRING strerror (errno) | 249 | #define ERRSTRING strerror (errno) |
241 | 250 | ||
251 | static char *mtrr_strings[MTRR_NUM_TYPES] = | ||
252 | { | ||
253 | "uncachable", /* 0 */ | ||
254 | "write-combining", /* 1 */ | ||
255 | "?", /* 2 */ | ||
256 | "?", /* 3 */ | ||
257 | "write-through", /* 4 */ | ||
258 | "write-protect", /* 5 */ | ||
259 | "write-back", /* 6 */ | ||
260 | }; | ||
242 | 261 | ||
243 | int main (int argc, char **argv) | 262 | int main (int argc, char **argv) |
244 | { | 263 | { |
diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt index 331afd791cbb..ce767b90bb0d 100644 --- a/Documentation/scsi/scsi_eh.txt +++ b/Documentation/scsi/scsi_eh.txt | |||
@@ -19,9 +19,9 @@ TABLE OF CONTENTS | |||
19 | [2-1-1] Overview | 19 | [2-1-1] Overview |
20 | [2-1-2] Flow of scmds through EH | 20 | [2-1-2] Flow of scmds through EH |
21 | [2-1-3] Flow of control | 21 | [2-1-3] Flow of control |
22 | [2-2] EH through hostt->eh_strategy_handler() | 22 | [2-2] EH through transportt->eh_strategy_handler() |
23 | [2-2-1] Pre hostt->eh_strategy_handler() SCSI midlayer conditions | 23 | [2-2-1] Pre transportt->eh_strategy_handler() SCSI midlayer conditions |
24 | [2-2-2] Post hostt->eh_strategy_handler() SCSI midlayer conditions | 24 | [2-2-2] Post transportt->eh_strategy_handler() SCSI midlayer conditions |
25 | [2-2-3] Things to consider | 25 | [2-2-3] Things to consider |
26 | 26 | ||
27 | 27 | ||
@@ -413,9 +413,9 @@ scmd->allowed. | |||
413 | layer of failure of the scmds. | 413 | layer of failure of the scmds. |
414 | 414 | ||
415 | 415 | ||
416 | [2-2] EH through hostt->eh_strategy_handler() | 416 | [2-2] EH through transportt->eh_strategy_handler() |
417 | 417 | ||
418 | hostt->eh_strategy_handler() is invoked in the place of | 418 | transportt->eh_strategy_handler() is invoked in the place of |
419 | scsi_unjam_host() and it is responsible for whole recovery process. | 419 | scsi_unjam_host() and it is responsible for whole recovery process. |
420 | On completion, the handler should have made lower layers forget about | 420 | On completion, the handler should have made lower layers forget about |
421 | all failed scmds and either ready for new commands or offline. Also, | 421 | all failed scmds and either ready for new commands or offline. Also, |
@@ -424,7 +424,7 @@ SCSI midlayer. IOW, of the steps described in [2-1-2], all steps | |||
424 | except for #1 must be implemented by eh_strategy_handler(). | 424 | except for #1 must be implemented by eh_strategy_handler(). |
425 | 425 | ||
426 | 426 | ||
427 | [2-2-1] Pre hostt->eh_strategy_handler() SCSI midlayer conditions | 427 | [2-2-1] Pre transportt->eh_strategy_handler() SCSI midlayer conditions |
428 | 428 | ||
429 | The following conditions are true on entry to the handler. | 429 | The following conditions are true on entry to the handler. |
430 | 430 | ||
@@ -437,7 +437,7 @@ except for #1 must be implemented by eh_strategy_handler(). | |||
437 | - shost->host_failed == shost->host_busy | 437 | - shost->host_failed == shost->host_busy |
438 | 438 | ||
439 | 439 | ||
440 | [2-2-2] Post hostt->eh_strategy_handler() SCSI midlayer conditions | 440 | [2-2-2] Post transportt->eh_strategy_handler() SCSI midlayer conditions |
441 | 441 | ||
442 | The following conditions must be true on exit from the handler. | 442 | The following conditions must be true on exit from the handler. |
443 | 443 | ||
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt index 8bbae3e1abdf..75a535a975c3 100644 --- a/Documentation/scsi/scsi_mid_low_api.txt +++ b/Documentation/scsi/scsi_mid_low_api.txt | |||
@@ -804,7 +804,6 @@ Summary: | |||
804 | eh_bus_reset_handler - issue SCSI bus reset | 804 | eh_bus_reset_handler - issue SCSI bus reset |
805 | eh_device_reset_handler - issue SCSI device reset | 805 | eh_device_reset_handler - issue SCSI device reset |
806 | eh_host_reset_handler - reset host (host bus adapter) | 806 | eh_host_reset_handler - reset host (host bus adapter) |
807 | eh_strategy_handler - driver supplied alternate to scsi_unjam_host() | ||
808 | info - supply information about given host | 807 | info - supply information about given host |
809 | ioctl - driver can respond to ioctls | 808 | ioctl - driver can respond to ioctls |
810 | proc_info - supports /proc/scsi/{driver_name}/{host_no} | 809 | proc_info - supports /proc/scsi/{driver_name}/{host_no} |
@@ -970,24 +969,6 @@ Details: | |||
970 | 969 | ||
971 | 970 | ||
972 | /** | 971 | /** |
973 | * eh_strategy_handler - driver supplied alternate to scsi_unjam_host() | ||
974 | * @shp: host on which error has occurred | ||
975 | * | ||
976 | * Returns TRUE if host unjammed, else FALSE. | ||
977 | * | ||
978 | * Locks: none | ||
979 | * | ||
980 | * Calling context: kernel thread | ||
981 | * | ||
982 | * Notes: Invoked from scsi_eh thread. LLD supplied alternate to | ||
983 | * scsi_unjam_host() found in scsi_error.c | ||
984 | * | ||
985 | * Optionally defined in: LLD | ||
986 | **/ | ||
987 | int eh_strategy_handler(struct Scsi_Host * shp) | ||
988 | |||
989 | |||
990 | /** | ||
991 | * info - supply information about given host: driver name plus data | 972 | * info - supply information about given host: driver name plus data |
992 | * to distinguish given host | 973 | * to distinguish given host |
993 | * @shp: host to supply information about | 974 | * @shp: host to supply information about |
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl index 6feef9e82b63..68eeebc17ff4 100644 --- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl +++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl | |||
@@ -1123,8 +1123,8 @@ | |||
1123 | if ((err = pci_enable_device(pci)) < 0) | 1123 | if ((err = pci_enable_device(pci)) < 0) |
1124 | return err; | 1124 | return err; |
1125 | /* check PCI availability (28bit DMA) */ | 1125 | /* check PCI availability (28bit DMA) */ |
1126 | if (pci_set_dma_mask(pci, 0x0fffffff) < 0 || | 1126 | if (pci_set_dma_mask(pci, DMA_28BIT_MASK) < 0 || |
1127 | pci_set_consistent_dma_mask(pci, 0x0fffffff) < 0) { | 1127 | pci_set_consistent_dma_mask(pci, DMA_28BIT_MASK) < 0) { |
1128 | printk(KERN_ERR "error to set 28bit mask DMA\n"); | 1128 | printk(KERN_ERR "error to set 28bit mask DMA\n"); |
1129 | pci_disable_device(pci); | 1129 | pci_disable_device(pci); |
1130 | return -ENXIO; | 1130 | return -ENXIO; |
@@ -1216,7 +1216,7 @@ | |||
1216 | The allocation of PCI resources is done in the | 1216 | The allocation of PCI resources is done in the |
1217 | <function>probe()</function> function, and usually an extra | 1217 | <function>probe()</function> function, and usually an extra |
1218 | <function>xxx_create()</function> function is written for this | 1218 | <function>xxx_create()</function> function is written for this |
1219 | purpose. | 1219 | purpose. |
1220 | </para> | 1220 | </para> |
1221 | 1221 | ||
1222 | <para> | 1222 | <para> |
@@ -1225,7 +1225,7 @@ | |||
1225 | allocating resources. Also, you need to set the proper PCI DMA | 1225 | allocating resources. Also, you need to set the proper PCI DMA |
1226 | mask to limit the accessed i/o range. In some cases, you might | 1226 | mask to limit the accessed i/o range. In some cases, you might |
1227 | need to call <function>pci_set_master()</function> function, | 1227 | need to call <function>pci_set_master()</function> function, |
1228 | too. | 1228 | too. |
1229 | </para> | 1229 | </para> |
1230 | 1230 | ||
1231 | <para> | 1231 | <para> |
@@ -1236,8 +1236,8 @@ | |||
1236 | <![CDATA[ | 1236 | <![CDATA[ |
1237 | if ((err = pci_enable_device(pci)) < 0) | 1237 | if ((err = pci_enable_device(pci)) < 0) |
1238 | return err; | 1238 | return err; |
1239 | if (pci_set_dma_mask(pci, 0x0fffffff) < 0 || | 1239 | if (pci_set_dma_mask(pci, DMA_28BIT_MASK) < 0 || |
1240 | pci_set_consistent_dma_mask(pci, 0x0fffffff) < 0) { | 1240 | pci_set_consistent_dma_mask(pci, DMA_28BIT_MASK) < 0) { |
1241 | printk(KERN_ERR "error to set 28bit mask DMA\n"); | 1241 | printk(KERN_ERR "error to set 28bit mask DMA\n"); |
1242 | pci_disable_device(pci); | 1242 | pci_disable_device(pci); |
1243 | return -ENXIO; | 1243 | return -ENXIO; |
@@ -1256,13 +1256,13 @@ | |||
1256 | functions. Unlike ALSA ver.0.5.x., there are no helpers for | 1256 | functions. Unlike ALSA ver.0.5.x., there are no helpers for |
1257 | that. And these resources must be released in the destructor | 1257 | that. And these resources must be released in the destructor |
1258 | function (see below). Also, on ALSA 0.9.x, you don't need to | 1258 | function (see below). Also, on ALSA 0.9.x, you don't need to |
1259 | allocate (pseudo-)DMA for PCI like ALSA 0.5.x. | 1259 | allocate (pseudo-)DMA for PCI like ALSA 0.5.x. |
1260 | </para> | 1260 | </para> |
1261 | 1261 | ||
1262 | <para> | 1262 | <para> |
1263 | Now assume that this PCI device has an I/O port with 8 bytes | 1263 | Now assume that this PCI device has an I/O port with 8 bytes |
1264 | and an interrupt. Then struct <structname>mychip</structname> will have the | 1264 | and an interrupt. Then struct <structname>mychip</structname> will have the |
1265 | following fields: | 1265 | following fields: |
1266 | 1266 | ||
1267 | <informalexample> | 1267 | <informalexample> |
1268 | <programlisting> | 1268 | <programlisting> |
diff --git a/Documentation/vm/hugetlbpage.txt b/Documentation/vm/hugetlbpage.txt index 1ad9af1ca4d0..2803f63c1a27 100644 --- a/Documentation/vm/hugetlbpage.txt +++ b/Documentation/vm/hugetlbpage.txt | |||
@@ -27,7 +27,7 @@ number of free hugetlb pages at any time. It also displays information about | |||
27 | the configured hugepage size - this is needed for generating the proper | 27 | the configured hugepage size - this is needed for generating the proper |
28 | alignment and size of the arguments to the above system calls. | 28 | alignment and size of the arguments to the above system calls. |
29 | 29 | ||
30 | The output of "cat /proc/meminfo" will have output like: | 30 | The output of "cat /proc/meminfo" will have lines like: |
31 | 31 | ||
32 | ..... | 32 | ..... |
33 | HugePages_Total: xxx | 33 | HugePages_Total: xxx |
@@ -42,11 +42,11 @@ pages in the kernel. Super user can dynamically request more (or free some | |||
42 | pre-configured) hugepages. | 42 | pre-configured) hugepages. |
43 | The allocation (or deallocation) of hugetlb pages is possible only if there are | 43 | The allocation (or deallocation) of hugetlb pages is possible only if there are |
44 | enough physically contiguous free pages in system (freeing of hugepages is | 44 | enough physically contiguous free pages in system (freeing of hugepages is |
45 | possible only if there are enough hugetlb pages free that can be transfered | 45 | possible only if there are enough hugetlb pages free that can be transferred |
46 | back to regular memory pool). | 46 | back to regular memory pool). |
47 | 47 | ||
48 | Pages that are used as hugetlb pages are reserved inside the kernel and can | 48 | Pages that are used as hugetlb pages are reserved inside the kernel and cannot |
49 | not be used for other purposes. | 49 | be used for other purposes. |
50 | 50 | ||
51 | Once the kernel with Hugetlb page support is built and running, a user can | 51 | Once the kernel with Hugetlb page support is built and running, a user can |
52 | use either the mmap system call or shared memory system calls to start using | 52 | use either the mmap system call or shared memory system calls to start using |
@@ -60,7 +60,7 @@ Use the following command to dynamically allocate/deallocate hugepages: | |||
60 | This command will try to configure 20 hugepages in the system. The success | 60 | This command will try to configure 20 hugepages in the system. The success |
61 | or failure of allocation depends on the amount of physically contiguous | 61 | or failure of allocation depends on the amount of physically contiguous |
62 | memory that is preset in system at this time. System administrators may want | 62 | memory that is preset in system at this time. System administrators may want |
63 | to put this command in one of the local rc init file. This will enable the | 63 | to put this command in one of the local rc init files. This will enable the |
64 | kernel to request huge pages early in the boot process (when the possibility | 64 | kernel to request huge pages early in the boot process (when the possibility |
65 | of getting physical contiguous pages is still very high). | 65 | of getting physical contiguous pages is still very high). |
66 | 66 | ||
@@ -78,8 +78,8 @@ the uid and gid of the current process are taken. The mode option sets the | |||
78 | mode of root of file system to value & 0777. This value is given in octal. | 78 | mode of root of file system to value & 0777. This value is given in octal. |
79 | By default the value 0755 is picked. The size option sets the maximum value of | 79 | By default the value 0755 is picked. The size option sets the maximum value of |
80 | memory (huge pages) allowed for that filesystem (/mnt/huge). The size is | 80 | memory (huge pages) allowed for that filesystem (/mnt/huge). The size is |
81 | rounded down to HPAGE_SIZE. The option nr_inode sets the maximum number of | 81 | rounded down to HPAGE_SIZE. The option nr_inodes sets the maximum number of |
82 | inodes that /mnt/huge can use. If the size or nr_inode options are not | 82 | inodes that /mnt/huge can use. If the size or nr_inodes options are not |
83 | provided on command line then no limits are set. For size and nr_inodes | 83 | provided on command line then no limits are set. For size and nr_inodes |
84 | options, you can use [G|g]/[M|m]/[K|k] to represent giga/mega/kilo. For | 84 | options, you can use [G|g]/[M|m]/[K|k] to represent giga/mega/kilo. For |
85 | example, size=2K has the same meaning as size=2048. An example is given at | 85 | example, size=2K has the same meaning as size=2048. An example is given at |
@@ -88,7 +88,7 @@ the end of this document. | |||
88 | read and write system calls are not supported on files that reside on hugetlb | 88 | read and write system calls are not supported on files that reside on hugetlb |
89 | file systems. | 89 | file systems. |
90 | 90 | ||
91 | A regular chown, chgrp and chmod commands (with right permissions) could be | 91 | Regular chown, chgrp, and chmod commands (with right permissions) could be |
92 | used to change the file attributes on hugetlbfs. | 92 | used to change the file attributes on hugetlbfs. |
93 | 93 | ||
94 | Also, it is important to note that no such mount command is required if the | 94 | Also, it is important to note that no such mount command is required if the |
@@ -96,8 +96,8 @@ applications are going to use only shmat/shmget system calls. Users who | |||
96 | wish to use hugetlb page via shared memory segment should be a member of | 96 | wish to use hugetlb page via shared memory segment should be a member of |
97 | a supplementary group and system admin needs to configure that gid into | 97 | a supplementary group and system admin needs to configure that gid into |
98 | /proc/sys/vm/hugetlb_shm_group. It is possible for same or different | 98 | /proc/sys/vm/hugetlb_shm_group. It is possible for same or different |
99 | applications to use any combination of mmaps and shm* calls. Though the | 99 | applications to use any combination of mmaps and shm* calls, though the |
100 | mount of filesystem will be required for using mmaps. | 100 | mount of filesystem will be required for using mmap calls. |
101 | 101 | ||
102 | ******************************************************************* | 102 | ******************************************************************* |
103 | 103 | ||
diff --git a/Documentation/x86_64/boot-options.txt b/Documentation/x86_64/boot-options.txt index 1921353259ae..f2cd6ef53ff3 100644 --- a/Documentation/x86_64/boot-options.txt +++ b/Documentation/x86_64/boot-options.txt | |||
@@ -151,6 +151,11 @@ NUMA | |||
151 | 151 | ||
152 | numa=fake=X Fake X nodes and ignore NUMA setup of the actual machine. | 152 | numa=fake=X Fake X nodes and ignore NUMA setup of the actual machine. |
153 | 153 | ||
154 | numa=hotadd=percent | ||
155 | Only allow hotadd memory to preallocate page structures upto | ||
156 | percent of already available memory. | ||
157 | numa=hotadd=0 will disable hotadd memory. | ||
158 | |||
154 | ACPI | 159 | ACPI |
155 | 160 | ||
156 | acpi=off Don't enable ACPI | 161 | acpi=off Don't enable ACPI |