diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-04-21 12:52:36 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-04-21 12:52:36 -0400 |
commit | a748422ee45725e04e1d3792fa19dfa90ddfd116 (patch) | |
tree | 978e12895468baaa9f7ab2747b9f7d50beaf1717 /Documentation | |
parent | c63e31c2cc1ec67372920b5e1aff8204d04dd172 (diff) | |
parent | f4ffaa452e71495a06376f12f772342bc57051fc (diff) |
Merge branch 'master'
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/DMA-API.txt | 49 | ||||
-rw-r--r-- | Documentation/DMA-mapping.txt | 26 | ||||
-rw-r--r-- | Documentation/DocBook/libata.tmpl | 2 | ||||
-rw-r--r-- | Documentation/block/switching-sched.txt | 22 | ||||
-rw-r--r-- | Documentation/cpu-freq/index.txt | 2 | ||||
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 13 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 12 | ||||
-rw-r--r-- | Documentation/i2c/busses/i2c-parport | 16 | ||||
-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/networking/xfrm_sync.txt | 166 | ||||
-rw-r--r-- | Documentation/scsi/scsi_eh.txt | 14 | ||||
-rw-r--r-- | Documentation/scsi/scsi_mid_low_api.txt | 19 | ||||
-rw-r--r-- | Documentation/serial/driver | 22 | ||||
-rw-r--r-- | Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl | 16 | ||||
-rw-r--r-- | Documentation/vm/hugetlbpage.txt | 31 | ||||
-rw-r--r-- | Documentation/x86_64/boot-options.txt | 5 |
20 files changed, 688 insertions, 116 deletions
diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt index 1af0f2d50220..2ffb0d62f0fe 100644 --- a/Documentation/DMA-API.txt +++ b/Documentation/DMA-API.txt | |||
@@ -33,7 +33,9 @@ pci_alloc_consistent(struct pci_dev *dev, size_t size, | |||
33 | 33 | ||
34 | Consistent memory is memory for which a write by either the device or | 34 | Consistent memory is memory for which a write by either the device or |
35 | the processor can immediately be read by the processor or device | 35 | the processor can immediately be read by the processor or device |
36 | without having to worry about caching effects. | 36 | without having to worry about caching effects. (You may however need |
37 | to make sure to flush the processor's write buffers before telling | ||
38 | devices to read that memory.) | ||
37 | 39 | ||
38 | This routine allocates a region of <size> bytes of consistent memory. | 40 | This routine allocates a region of <size> bytes of consistent memory. |
39 | it also returns a <dma_handle> which may be cast to an unsigned | 41 | it also returns a <dma_handle> which may be cast to an unsigned |
@@ -304,12 +306,12 @@ dma address with dma_mapping_error(). A non zero return value means the mapping | |||
304 | could not be created and the driver should take appropriate action (eg | 306 | could not be created and the driver should take appropriate action (eg |
305 | reduce current DMA mapping usage or delay and try again later). | 307 | reduce current DMA mapping usage or delay and try again later). |
306 | 308 | ||
307 | int | 309 | int |
308 | dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | 310 | dma_map_sg(struct device *dev, struct scatterlist *sg, |
309 | enum dma_data_direction direction) | 311 | int nents, enum dma_data_direction direction) |
310 | int | 312 | int |
311 | pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, | 313 | pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, |
312 | int nents, int direction) | 314 | int nents, int direction) |
313 | 315 | ||
314 | Maps a scatter gather list from the block layer. | 316 | Maps a scatter gather list from the block layer. |
315 | 317 | ||
@@ -327,12 +329,33 @@ critical that the driver do something, in the case of a block driver | |||
327 | aborting the request or even oopsing is better than doing nothing and | 329 | aborting the request or even oopsing is better than doing nothing and |
328 | corrupting the filesystem. | 330 | corrupting the filesystem. |
329 | 331 | ||
330 | void | 332 | With scatterlists, you use the resulting mapping like this: |
331 | dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, | 333 | |
332 | enum dma_data_direction direction) | 334 | int i, count = dma_map_sg(dev, sglist, nents, direction); |
333 | void | 335 | struct scatterlist *sg; |
334 | pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, | 336 | |
335 | int nents, int direction) | 337 | for (i = 0, sg = sglist; i < count; i++, sg++) { |
338 | hw_address[i] = sg_dma_address(sg); | ||
339 | hw_len[i] = sg_dma_len(sg); | ||
340 | } | ||
341 | |||
342 | where nents is the number of entries in the sglist. | ||
343 | |||
344 | The implementation is free to merge several consecutive sglist entries | ||
345 | into one (e.g. with an IOMMU, or if several pages just happen to be | ||
346 | physically contiguous) and returns the actual number of sg entries it | ||
347 | mapped them to. On failure 0, is returned. | ||
348 | |||
349 | Then you should loop count times (note: this can be less than nents times) | ||
350 | and use sg_dma_address() and sg_dma_len() macros where you previously | ||
351 | accessed sg->address and sg->length as shown above. | ||
352 | |||
353 | void | ||
354 | dma_unmap_sg(struct device *dev, struct scatterlist *sg, | ||
355 | int nhwentries, enum dma_data_direction direction) | ||
356 | void | ||
357 | pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, | ||
358 | int nents, int direction) | ||
336 | 359 | ||
337 | unmap the previously mapped scatter/gather list. All the parameters | 360 | unmap the previously mapped scatter/gather list. All the parameters |
338 | must be the same as those and passed in to the scatter/gather mapping | 361 | must be the same as those and passed in to the scatter/gather mapping |
diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt index ee4bb73683cd..7c717699032c 100644 --- a/Documentation/DMA-mapping.txt +++ b/Documentation/DMA-mapping.txt | |||
@@ -58,11 +58,15 @@ translating each of those pages back to a kernel address using | |||
58 | something like __va(). [ EDIT: Update this when we integrate | 58 | something like __va(). [ EDIT: Update this when we integrate |
59 | Gerd Knorr's generic code which does this. ] | 59 | Gerd Knorr's generic code which does this. ] |
60 | 60 | ||
61 | This rule also means that you may not use kernel image addresses | 61 | This rule also means that you may use neither kernel image addresses |
62 | (ie. items in the kernel's data/text/bss segment, or your driver's) | 62 | (items in data/text/bss segments), nor module image addresses, nor |
63 | nor may you use kernel stack addresses for DMA. Both of these items | 63 | stack addresses for DMA. These could all be mapped somewhere entirely |
64 | might be mapped somewhere entirely different than the rest of physical | 64 | different than the rest of physical memory. Even if those classes of |
65 | memory. | 65 | memory could physically work with DMA, you'd need to ensure the I/O |
66 | buffers were cacheline-aligned. Without that, you'd see cacheline | ||
67 | sharing problems (data corruption) on CPUs with DMA-incoherent caches. | ||
68 | (The CPU could write to one word, DMA would write to a different one | ||
69 | in the same cache line, and one of them could be overwritten.) | ||
66 | 70 | ||
67 | Also, this means that you cannot take the return of a kmap() | 71 | Also, this means that you cannot take the return of a kmap() |
68 | call and DMA to/from that. This is similar to vmalloc(). | 72 | call and DMA to/from that. This is similar to vmalloc(). |
@@ -194,7 +198,7 @@ document for how to handle this case. | |||
194 | Finally, if your device can only drive the low 24-bits of | 198 | Finally, if your device can only drive the low 24-bits of |
195 | address during PCI bus mastering you might do something like: | 199 | address during PCI bus mastering you might do something like: |
196 | 200 | ||
197 | if (pci_set_dma_mask(pdev, 0x00ffffff)) { | 201 | if (pci_set_dma_mask(pdev, DMA_24BIT_MASK)) { |
198 | printk(KERN_WARNING | 202 | printk(KERN_WARNING |
199 | "mydev: 24-bit DMA addressing not available.\n"); | 203 | "mydev: 24-bit DMA addressing not available.\n"); |
200 | goto ignore_this_device; | 204 | goto ignore_this_device; |
@@ -212,7 +216,7 @@ functions (for example a sound card provides playback and record | |||
212 | functions) and the various different functions have _different_ | 216 | functions) and the various different functions have _different_ |
213 | DMA addressing limitations, you may wish to probe each mask and | 217 | DMA addressing limitations, you may wish to probe each mask and |
214 | only provide the functionality which the machine can handle. It | 218 | 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 | 219 | is important that the last call to pci_set_dma_mask() be for the |
216 | most specific mask. | 220 | most specific mask. |
217 | 221 | ||
218 | Here is pseudo-code showing how this might be done: | 222 | Here is pseudo-code showing how this might be done: |
@@ -284,6 +288,11 @@ There are two types of DMA mappings: | |||
284 | 288 | ||
285 | in order to get correct behavior on all platforms. | 289 | in order to get correct behavior on all platforms. |
286 | 290 | ||
291 | Also, on some platforms your driver may need to flush CPU write | ||
292 | buffers in much the same way as it needs to flush write buffers | ||
293 | found in PCI bridges (such as by reading a register's value | ||
294 | after writing it). | ||
295 | |||
287 | - Streaming DMA mappings which are usually mapped for one DMA transfer, | 296 | - Streaming DMA mappings which are usually mapped for one DMA transfer, |
288 | unmapped right after it (unless you use pci_dma_sync_* below) and for which | 297 | unmapped right after it (unless you use pci_dma_sync_* below) and for which |
289 | hardware can optimize for sequential accesses. | 298 | hardware can optimize for sequential accesses. |
@@ -303,6 +312,9 @@ There are two types of DMA mappings: | |||
303 | 312 | ||
304 | Neither type of DMA mapping has alignment restrictions that come | 313 | Neither type of DMA mapping has alignment restrictions that come |
305 | from PCI, although some devices may have such restrictions. | 314 | from PCI, although some devices may have such restrictions. |
315 | Also, systems with caches that aren't DMA-coherent will work better | ||
316 | when the underlying buffers don't share cache lines with other data. | ||
317 | |||
306 | 318 | ||
307 | Using Consistent DMA mappings. | 319 | Using Consistent DMA mappings. |
308 | 320 | ||
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/block/switching-sched.txt b/Documentation/block/switching-sched.txt new file mode 100644 index 000000000000..5fa130a67531 --- /dev/null +++ b/Documentation/block/switching-sched.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | As of the Linux 2.6.10 kernel, it is now possible to change the | ||
2 | IO scheduler for a given block device on the fly (thus making it possible, | ||
3 | for instance, to set the CFQ scheduler for the system default, but | ||
4 | set a specific device to use the anticipatory or noop schedulers - which | ||
5 | can improve that device's throughput). | ||
6 | |||
7 | To set a specific scheduler, simply do this: | ||
8 | |||
9 | echo SCHEDNAME > /sys/block/DEV/queue/scheduler | ||
10 | |||
11 | where SCHEDNAME is the name of a defined IO scheduler, and DEV is the | ||
12 | device name (hda, hdb, sga, or whatever you happen to have). | ||
13 | |||
14 | The list of defined schedulers can be found by simply doing | ||
15 | a "cat /sys/block/DEV/queue/scheduler" - the list of valid names | ||
16 | will be displayed, with the currently selected scheduler in brackets: | ||
17 | |||
18 | # cat /sys/block/hda/queue/scheduler | ||
19 | noop anticipatory deadline [cfq] | ||
20 | # echo anticipatory > /sys/block/hda/queue/scheduler | ||
21 | # cat /sys/block/hda/queue/scheduler | ||
22 | noop [anticipatory] deadline cfq | ||
diff --git a/Documentation/cpu-freq/index.txt b/Documentation/cpu-freq/index.txt index 5009805f9378..ffdb5323df37 100644 --- a/Documentation/cpu-freq/index.txt +++ b/Documentation/cpu-freq/index.txt | |||
@@ -53,4 +53,4 @@ the CPUFreq Mailing list: | |||
53 | * http://lists.linux.org.uk/mailman/listinfo/cpufreq | 53 | * http://lists.linux.org.uk/mailman/listinfo/cpufreq |
54 | 54 | ||
55 | Clock and voltage scaling for the SA-1100: | 55 | Clock and voltage scaling for the SA-1100: |
56 | * http://www.lart.tudelft.nl/projects/scaling | 56 | * http://www.lartmaker.nl/projects/scaling |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 59d0c74c79c9..421bcfff6ad2 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -25,8 +25,9 @@ Who: Adrian Bunk <bunk@stusta.de> | |||
25 | 25 | ||
26 | --------------------------- | 26 | --------------------------- |
27 | 27 | ||
28 | What: drivers depending on OBSOLETE_OSS_DRIVER | 28 | What: drivers that were depending on OBSOLETE_OSS_DRIVER |
29 | When: January 2006 | 29 | (config options already removed) |
30 | When: before 2.6.19 | ||
30 | Why: OSS drivers with ALSA replacements | 31 | Why: OSS drivers with ALSA replacements |
31 | Who: Adrian Bunk <bunk@stusta.de> | 32 | Who: Adrian Bunk <bunk@stusta.de> |
32 | 33 | ||
@@ -71,14 +72,6 @@ Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br> | |||
71 | 72 | ||
72 | --------------------------- | 73 | --------------------------- |
73 | 74 | ||
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) | 75 | What: remove EXPORT_SYMBOL(insert_resource) |
83 | When: April 2006 | 76 | When: April 2006 |
84 | Files: kernel/resource.c | 77 | 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/i2c/busses/i2c-parport b/Documentation/i2c/busses/i2c-parport index d9f23c0763f1..77b995dfca22 100644 --- a/Documentation/i2c/busses/i2c-parport +++ b/Documentation/i2c/busses/i2c-parport | |||
@@ -12,18 +12,22 @@ meant as a replacement for the older, individual drivers: | |||
12 | teletext adapters) | 12 | teletext adapters) |
13 | 13 | ||
14 | It currently supports the following devices: | 14 | It currently supports the following devices: |
15 | * Philips adapter | 15 | * (type=0) Philips adapter |
16 | * home brew teletext adapter | 16 | * (type=1) home brew teletext adapter |
17 | * Velleman K8000 adapter | 17 | * (type=2) Velleman K8000 adapter |
18 | * ELV adapter | 18 | * (type=3) ELV adapter |
19 | * Analog Devices evaluation boards (ADM1025, ADM1030, ADM1031, ADM1032) | 19 | * (type=4) Analog Devices ADM1032 evaluation board |
20 | * Barco LPT->DVI (K5800236) adapter | 20 | * (type=5) Analog Devices evaluation boards: ADM1025, ADM1030, ADM1031 |
21 | * (type=6) Barco LPT->DVI (K5800236) adapter | ||
21 | 22 | ||
22 | These devices use different pinout configurations, so you have to tell | 23 | These devices use different pinout configurations, so you have to tell |
23 | the driver what you have, using the type module parameter. There is no | 24 | the driver what you have, using the type module parameter. There is no |
24 | way to autodetect the devices. Support for different pinout configurations | 25 | way to autodetect the devices. Support for different pinout configurations |
25 | can be easily added when needed. | 26 | can be easily added when needed. |
26 | 27 | ||
28 | Earlier kernels defaulted to type=0 (Philips). But now, if the type | ||
29 | parameter is missing, the driver will simply fail to initialize. | ||
30 | |||
27 | 31 | ||
28 | Building your own adapter | 32 | Building your own adapter |
29 | ------------------------- | 33 | ------------------------- |
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/networking/xfrm_sync.txt b/Documentation/networking/xfrm_sync.txt new file mode 100644 index 000000000000..8be626f7c0b8 --- /dev/null +++ b/Documentation/networking/xfrm_sync.txt | |||
@@ -0,0 +1,166 @@ | |||
1 | |||
2 | The sync patches work is based on initial patches from | ||
3 | Krisztian <hidden@balabit.hu> and others and additional patches | ||
4 | from Jamal <hadi@cyberus.ca>. | ||
5 | |||
6 | The end goal for syncing is to be able to insert attributes + generate | ||
7 | events so that the an SA can be safely moved from one machine to another | ||
8 | for HA purposes. | ||
9 | The idea is to synchronize the SA so that the takeover machine can do | ||
10 | the processing of the SA as accurate as possible if it has access to it. | ||
11 | |||
12 | We already have the ability to generate SA add/del/upd events. | ||
13 | These patches add ability to sync and have accurate lifetime byte (to | ||
14 | ensure proper decay of SAs) and replay counters to avoid replay attacks | ||
15 | with as minimal loss at failover time. | ||
16 | This way a backup stays as closely uptodate as an active member. | ||
17 | |||
18 | Because the above items change for every packet the SA receives, | ||
19 | it is possible for a lot of the events to be generated. | ||
20 | For this reason, we also add a nagle-like algorithm to restrict | ||
21 | the events. i.e we are going to set thresholds to say "let me | ||
22 | know if the replay sequence threshold is reached or 10 secs have passed" | ||
23 | These thresholds are set system-wide via sysctls or can be updated | ||
24 | per SA. | ||
25 | |||
26 | The identified items that need to be synchronized are: | ||
27 | - the lifetime byte counter | ||
28 | note that: lifetime time limit is not important if you assume the failover | ||
29 | machine is known ahead of time since the decay of the time countdown | ||
30 | is not driven by packet arrival. | ||
31 | - the replay sequence for both inbound and outbound | ||
32 | |||
33 | 1) Message Structure | ||
34 | ---------------------- | ||
35 | |||
36 | nlmsghdr:aevent_id:optional-TLVs. | ||
37 | |||
38 | The netlink message types are: | ||
39 | |||
40 | XFRM_MSG_NEWAE and XFRM_MSG_GETAE. | ||
41 | |||
42 | A XFRM_MSG_GETAE does not have TLVs. | ||
43 | A XFRM_MSG_NEWAE will have at least two TLVs (as is | ||
44 | discussed further below). | ||
45 | |||
46 | aevent_id structure looks like: | ||
47 | |||
48 | struct xfrm_aevent_id { | ||
49 | struct xfrm_usersa_id sa_id; | ||
50 | __u32 flags; | ||
51 | }; | ||
52 | |||
53 | xfrm_usersa_id in this message layout identifies the SA. | ||
54 | |||
55 | flags are used to indicate different things. The possible | ||
56 | flags are: | ||
57 | XFRM_AE_RTHR=1, /* replay threshold*/ | ||
58 | XFRM_AE_RVAL=2, /* replay value */ | ||
59 | XFRM_AE_LVAL=4, /* lifetime value */ | ||
60 | XFRM_AE_ETHR=8, /* expiry timer threshold */ | ||
61 | XFRM_AE_CR=16, /* Event cause is replay update */ | ||
62 | XFRM_AE_CE=32, /* Event cause is timer expiry */ | ||
63 | XFRM_AE_CU=64, /* Event cause is policy update */ | ||
64 | |||
65 | How these flags are used is dependent on the direction of the | ||
66 | message (kernel<->user) as well the cause (config, query or event). | ||
67 | This is described below in the different messages. | ||
68 | |||
69 | The pid will be set appropriately in netlink to recognize direction | ||
70 | (0 to the kernel and pid = processid that created the event | ||
71 | when going from kernel to user space) | ||
72 | |||
73 | A program needs to subscribe to multicast group XFRMNLGRP_AEVENTS | ||
74 | to get notified of these events. | ||
75 | |||
76 | 2) TLVS reflect the different parameters: | ||
77 | ----------------------------------------- | ||
78 | |||
79 | a) byte value (XFRMA_LTIME_VAL) | ||
80 | This TLV carries the running/current counter for byte lifetime since | ||
81 | last event. | ||
82 | |||
83 | b)replay value (XFRMA_REPLAY_VAL) | ||
84 | This TLV carries the running/current counter for replay sequence since | ||
85 | last event. | ||
86 | |||
87 | c)replay threshold (XFRMA_REPLAY_THRESH) | ||
88 | This TLV carries the threshold being used by the kernel to trigger events | ||
89 | when the replay sequence is exceeded. | ||
90 | |||
91 | d) expiry timer (XFRMA_ETIMER_THRESH) | ||
92 | This is a timer value in milliseconds which is used as the nagle | ||
93 | value to rate limit the events. | ||
94 | |||
95 | 3) Default configurations for the parameters: | ||
96 | ---------------------------------------------- | ||
97 | |||
98 | By default these events should be turned off unless there is | ||
99 | at least one listener registered to listen to the multicast | ||
100 | group XFRMNLGRP_AEVENTS. | ||
101 | |||
102 | Programs installing SAs will need to specify the two thresholds, however, | ||
103 | in order to not change existing applications such as racoon | ||
104 | we also provide default threshold values for these different parameters | ||
105 | in case they are not specified. | ||
106 | |||
107 | the two sysctls/proc entries are: | ||
108 | a) /proc/sys/net/core/sysctl_xfrm_aevent_etime | ||
109 | used to provide default values for the XFRMA_ETIMER_THRESH in incremental | ||
110 | units of time of 100ms. The default is 10 (1 second) | ||
111 | |||
112 | b) /proc/sys/net/core/sysctl_xfrm_aevent_rseqth | ||
113 | used to provide default values for XFRMA_REPLAY_THRESH parameter | ||
114 | in incremental packet count. The default is two packets. | ||
115 | |||
116 | 4) Message types | ||
117 | ---------------- | ||
118 | |||
119 | a) XFRM_MSG_GETAE issued by user-->kernel. | ||
120 | XFRM_MSG_GETAE does not carry any TLVs. | ||
121 | The response is a XFRM_MSG_NEWAE which is formatted based on what | ||
122 | XFRM_MSG_GETAE queried for. | ||
123 | The response will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs. | ||
124 | *if XFRM_AE_RTHR flag is set, then XFRMA_REPLAY_THRESH is also retrieved | ||
125 | *if XFRM_AE_ETHR flag is set, then XFRMA_ETIMER_THRESH is also retrieved | ||
126 | |||
127 | b) XFRM_MSG_NEWAE is issued by either user space to configure | ||
128 | or kernel to announce events or respond to a XFRM_MSG_GETAE. | ||
129 | |||
130 | i) user --> kernel to configure a specific SA. | ||
131 | any of the values or threshold parameters can be updated by passing the | ||
132 | appropriate TLV. | ||
133 | A response is issued back to the sender in user space to indicate success | ||
134 | or failure. | ||
135 | In the case of success, additionally an event with | ||
136 | XFRM_MSG_NEWAE is also issued to any listeners as described in iii). | ||
137 | |||
138 | ii) kernel->user direction as a response to XFRM_MSG_GETAE | ||
139 | The response will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs. | ||
140 | The threshold TLVs will be included if explicitly requested in | ||
141 | the XFRM_MSG_GETAE message. | ||
142 | |||
143 | iii) kernel->user to report as event if someone sets any values or | ||
144 | thresholds for an SA using XFRM_MSG_NEWAE (as described in #i above). | ||
145 | In such a case XFRM_AE_CU flag is set to inform the user that | ||
146 | the change happened as a result of an update. | ||
147 | The message will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs. | ||
148 | |||
149 | iv) kernel->user to report event when replay threshold or a timeout | ||
150 | is exceeded. | ||
151 | In such a case either XFRM_AE_CR (replay exceeded) or XFRM_AE_CE (timeout | ||
152 | happened) is set to inform the user what happened. | ||
153 | Note the two flags are mutually exclusive. | ||
154 | The message will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs. | ||
155 | |||
156 | Exceptions to threshold settings | ||
157 | -------------------------------- | ||
158 | |||
159 | If you have an SA that is getting hit by traffic in bursts such that | ||
160 | there is a period where the timer threshold expires with no packets | ||
161 | seen, then an odd behavior is seen as follows: | ||
162 | The first packet arrival after a timer expiry will trigger a timeout | ||
163 | aevent; i.e we dont wait for a timeout period or a packet threshold | ||
164 | to be reached. This is done for simplicity and efficiency reasons. | ||
165 | |||
166 | -JHS | ||
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/serial/driver b/Documentation/serial/driver index 42ef9970bc86..df82116a9f26 100644 --- a/Documentation/serial/driver +++ b/Documentation/serial/driver | |||
@@ -3,14 +3,11 @@ | |||
3 | -------------------- | 3 | -------------------- |
4 | 4 | ||
5 | 5 | ||
6 | $Id: driver,v 1.10 2002/07/22 15:27:30 rmk Exp $ | ||
7 | |||
8 | |||
9 | This document is meant as a brief overview of some aspects of the new serial | 6 | This document is meant as a brief overview of some aspects of the new serial |
10 | driver. It is not complete, any questions you have should be directed to | 7 | driver. It is not complete, any questions you have should be directed to |
11 | <rmk@arm.linux.org.uk> | 8 | <rmk@arm.linux.org.uk> |
12 | 9 | ||
13 | The reference implementation is contained within serial_amba.c. | 10 | The reference implementation is contained within amba_pl011.c. |
14 | 11 | ||
15 | 12 | ||
16 | 13 | ||
@@ -31,6 +28,11 @@ The serial core provides a few helper functions. This includes identifing | |||
31 | the correct port structure (via uart_get_console) and decoding command line | 28 | the correct port structure (via uart_get_console) and decoding command line |
32 | arguments (uart_parse_options). | 29 | arguments (uart_parse_options). |
33 | 30 | ||
31 | There is also a helper function (uart_write_console) which performs a | ||
32 | character by character write, translating newlines to CRLF sequences. | ||
33 | Driver writers are recommended to use this function rather than implementing | ||
34 | their own version. | ||
35 | |||
34 | 36 | ||
35 | Locking | 37 | Locking |
36 | ------- | 38 | ------- |
@@ -86,6 +88,7 @@ hardware. | |||
86 | - TIOCM_DTR DTR signal. | 88 | - TIOCM_DTR DTR signal. |
87 | - TIOCM_OUT1 OUT1 signal. | 89 | - TIOCM_OUT1 OUT1 signal. |
88 | - TIOCM_OUT2 OUT2 signal. | 90 | - TIOCM_OUT2 OUT2 signal. |
91 | - TIOCM_LOOP Set the port into loopback mode. | ||
89 | If the appropriate bit is set, the signal should be driven | 92 | If the appropriate bit is set, the signal should be driven |
90 | active. If the bit is clear, the signal should be driven | 93 | active. If the bit is clear, the signal should be driven |
91 | inactive. | 94 | inactive. |
@@ -141,6 +144,10 @@ hardware. | |||
141 | enable_ms(port) | 144 | enable_ms(port) |
142 | Enable the modem status interrupts. | 145 | Enable the modem status interrupts. |
143 | 146 | ||
147 | This method may be called multiple times. Modem status | ||
148 | interrupts should be disabled when the shutdown method is | ||
149 | called. | ||
150 | |||
144 | Locking: port->lock taken. | 151 | Locking: port->lock taken. |
145 | Interrupts: locally disabled. | 152 | Interrupts: locally disabled. |
146 | This call must not sleep | 153 | This call must not sleep |
@@ -160,6 +167,8 @@ hardware. | |||
160 | state. Enable the port for reception. It should not activate | 167 | state. Enable the port for reception. It should not activate |
161 | RTS nor DTR; this will be done via a separate call to set_mctrl. | 168 | RTS nor DTR; this will be done via a separate call to set_mctrl. |
162 | 169 | ||
170 | This method will only be called when the port is initially opened. | ||
171 | |||
163 | Locking: port_sem taken. | 172 | Locking: port_sem taken. |
164 | Interrupts: globally disabled. | 173 | Interrupts: globally disabled. |
165 | 174 | ||
@@ -169,6 +178,11 @@ hardware. | |||
169 | RTS nor DTR; this will have already been done via a separate | 178 | RTS nor DTR; this will have already been done via a separate |
170 | call to set_mctrl. | 179 | call to set_mctrl. |
171 | 180 | ||
181 | Drivers must not access port->info once this call has completed. | ||
182 | |||
183 | This method will only be called when there are no more users of | ||
184 | this port. | ||
185 | |||
172 | Locking: port_sem taken. | 186 | Locking: port_sem taken. |
173 | Interrupts: caller dependent. | 187 | Interrupts: caller dependent. |
174 | 188 | ||
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..687104bfd09a 100644 --- a/Documentation/vm/hugetlbpage.txt +++ b/Documentation/vm/hugetlbpage.txt | |||
@@ -27,12 +27,21 @@ 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 |
34 | HugePages_Free: yyy | 34 | HugePages_Free: yyy |
35 | Hugepagesize: zzz KB | 35 | HugePages_Rsvd: www |
36 | Hugepagesize: zzz kB | ||
37 | |||
38 | where: | ||
39 | HugePages_Total is the size of the pool of hugepages. | ||
40 | HugePages_Free is the number of hugepages in the pool that are not yet | ||
41 | allocated. | ||
42 | HugePages_Rsvd is short for "reserved," and is the number of hugepages | ||
43 | for which a commitment to allocate from the pool has been made, but no | ||
44 | allocation has yet been made. It's vaguely analogous to overcommit. | ||
36 | 45 | ||
37 | /proc/filesystems should also show a filesystem of type "hugetlbfs" configured | 46 | /proc/filesystems should also show a filesystem of type "hugetlbfs" configured |
38 | in the kernel. | 47 | in the kernel. |
@@ -42,11 +51,11 @@ pages in the kernel. Super user can dynamically request more (or free some | |||
42 | pre-configured) hugepages. | 51 | pre-configured) hugepages. |
43 | The allocation (or deallocation) of hugetlb pages is possible only if there are | 52 | 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 | 53 | 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 | 54 | possible only if there are enough hugetlb pages free that can be transferred |
46 | back to regular memory pool). | 55 | back to regular memory pool). |
47 | 56 | ||
48 | Pages that are used as hugetlb pages are reserved inside the kernel and can | 57 | Pages that are used as hugetlb pages are reserved inside the kernel and cannot |
49 | not be used for other purposes. | 58 | be used for other purposes. |
50 | 59 | ||
51 | Once the kernel with Hugetlb page support is built and running, a user can | 60 | 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 | 61 | use either the mmap system call or shared memory system calls to start using |
@@ -60,7 +69,7 @@ Use the following command to dynamically allocate/deallocate hugepages: | |||
60 | This command will try to configure 20 hugepages in the system. The success | 69 | 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 | 70 | 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 | 71 | 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 | 72 | 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 | 73 | kernel to request huge pages early in the boot process (when the possibility |
65 | of getting physical contiguous pages is still very high). | 74 | of getting physical contiguous pages is still very high). |
66 | 75 | ||
@@ -78,8 +87,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. | 87 | 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 | 88 | 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 | 89 | 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 | 90 | 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 | 91 | 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 | 92 | 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 | 93 | 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 | 94 | example, size=2K has the same meaning as size=2048. An example is given at |
@@ -88,7 +97,7 @@ the end of this document. | |||
88 | read and write system calls are not supported on files that reside on hugetlb | 97 | read and write system calls are not supported on files that reside on hugetlb |
89 | file systems. | 98 | file systems. |
90 | 99 | ||
91 | A regular chown, chgrp and chmod commands (with right permissions) could be | 100 | Regular chown, chgrp, and chmod commands (with right permissions) could be |
92 | used to change the file attributes on hugetlbfs. | 101 | used to change the file attributes on hugetlbfs. |
93 | 102 | ||
94 | Also, it is important to note that no such mount command is required if the | 103 | Also, it is important to note that no such mount command is required if the |
@@ -96,8 +105,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 | 105 | 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 | 106 | 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 | 107 | /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 | 108 | applications to use any combination of mmaps and shm* calls, though the |
100 | mount of filesystem will be required for using mmaps. | 109 | mount of filesystem will be required for using mmap calls. |
101 | 110 | ||
102 | ******************************************************************* | 111 | ******************************************************************* |
103 | 112 | ||
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 |