aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2006-04-21 12:52:36 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2006-04-21 12:52:36 -0400
commita748422ee45725e04e1d3792fa19dfa90ddfd116 (patch)
tree978e12895468baaa9f7ab2747b9f7d50beaf1717 /Documentation
parentc63e31c2cc1ec67372920b5e1aff8204d04dd172 (diff)
parentf4ffaa452e71495a06376f12f772342bc57051fc (diff)
Merge branch 'master'
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DMA-API.txt49
-rw-r--r--Documentation/DMA-mapping.txt26
-rw-r--r--Documentation/DocBook/libata.tmpl2
-rw-r--r--Documentation/block/switching-sched.txt22
-rw-r--r--Documentation/cpu-freq/index.txt2
-rw-r--r--Documentation/feature-removal-schedule.txt13
-rw-r--r--Documentation/filesystems/vfs.txt12
-rw-r--r--Documentation/i2c/busses/i2c-parport16
-rw-r--r--Documentation/isdn/README.gigaset286
-rw-r--r--Documentation/kbuild/modules.txt2
-rw-r--r--Documentation/laptop-mode.txt10
-rw-r--r--Documentation/memory-barriers.txt68
-rw-r--r--Documentation/mtrr.txt23
-rw-r--r--Documentation/networking/xfrm_sync.txt166
-rw-r--r--Documentation/scsi/scsi_eh.txt14
-rw-r--r--Documentation/scsi/scsi_mid_low_api.txt19
-rw-r--r--Documentation/serial/driver22
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl16
-rw-r--r--Documentation/vm/hugetlbpage.txt31
-rw-r--r--Documentation/x86_64/boot-options.txt5
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
34Consistent memory is memory for which a write by either the device or 34Consistent memory is memory for which a write by either the device or
35the processor can immediately be read by the processor or device 35the processor can immediately be read by the processor or device
36without having to worry about caching effects. 36without having to worry about caching effects. (You may however need
37to make sure to flush the processor's write buffers before telling
38devices to read that memory.)
37 39
38This routine allocates a region of <size> bytes of consistent memory. 40This routine allocates a region of <size> bytes of consistent memory.
39it also returns a <dma_handle> which may be cast to an unsigned 41it 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
304could not be created and the driver should take appropriate action (eg 306could not be created and the driver should take appropriate action (eg
305reduce current DMA mapping usage or delay and try again later). 307reduce current DMA mapping usage or delay and try again later).
306 308
307int 309 int
308dma_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)
310int 312 int
311pci_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
314Maps a scatter gather list from the block layer. 316Maps 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
327aborting the request or even oopsing is better than doing nothing and 329aborting the request or even oopsing is better than doing nothing and
328corrupting the filesystem. 330corrupting the filesystem.
329 331
330void 332With scatterlists, you use the resulting mapping like this:
331dma_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);
333void 335 struct scatterlist *sg;
334pci_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
342where nents is the number of entries in the sglist.
343
344The implementation is free to merge several consecutive sglist entries
345into one (e.g. with an IOMMU, or if several pages just happen to be
346physically contiguous) and returns the actual number of sg entries it
347mapped them to. On failure 0, is returned.
348
349Then you should loop count times (note: this can be less than nents times)
350and use sg_dma_address() and sg_dma_len() macros where you previously
351accessed 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
337unmap the previously mapped scatter/gather list. All the parameters 360unmap the previously mapped scatter/gather list. All the parameters
338must be the same as those and passed in to the scatter/gather mapping 361must 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
58something like __va(). [ EDIT: Update this when we integrate 58something like __va(). [ EDIT: Update this when we integrate
59Gerd Knorr's generic code which does this. ] 59Gerd Knorr's generic code which does this. ]
60 60
61This rule also means that you may not use kernel image addresses 61This 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
63nor may you use kernel stack addresses for DMA. Both of these items 63stack addresses for DMA. These could all be mapped somewhere entirely
64might be mapped somewhere entirely different than the rest of physical 64different than the rest of physical memory. Even if those classes of
65memory. 65memory could physically work with DMA, you'd need to ensure the I/O
66buffers were cacheline-aligned. Without that, you'd see cacheline
67sharing problems (data corruption) on CPUs with DMA-incoherent caches.
68(The CPU could write to one word, DMA would write to a different one
69in the same cache line, and one of them could be overwritten.)
66 70
67Also, this means that you cannot take the return of a kmap() 71Also, this means that you cannot take the return of a kmap()
68call and DMA to/from that. This is similar to vmalloc(). 72call and DMA to/from that. This is similar to vmalloc().
@@ -194,7 +198,7 @@ document for how to handle this case.
194Finally, if your device can only drive the low 24-bits of 198Finally, if your device can only drive the low 24-bits of
195address during PCI bus mastering you might do something like: 199address 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
212functions) and the various different functions have _different_ 216functions) and the various different functions have _different_
213DMA addressing limitations, you may wish to probe each mask and 217DMA addressing limitations, you may wish to probe each mask and
214only provide the functionality which the machine can handle. It 218only provide the functionality which the machine can handle. It
215is important that the last call to pci_set_dma_mask() be for the 219is important that the last call to pci_set_dma_mask() be for the
216most specific mask. 220most specific mask.
217 221
218Here is pseudo-code showing how this might be done: 222Here 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
304Neither type of DMA mapping has alignment restrictions that come 313Neither type of DMA mapping has alignment restrictions that come
305from PCI, although some devices may have such restrictions. 314from PCI, although some devices may have such restrictions.
315Also, systems with caches that aren't DMA-coherent will work better
316when 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 @@
1As of the Linux 2.6.10 kernel, it is now possible to change the
2IO scheduler for a given block device on the fly (thus making it possible,
3for instance, to set the CFQ scheduler for the system default, but
4set a specific device to use the anticipatory or noop schedulers - which
5can improve that device's throughput).
6
7To set a specific scheduler, simply do this:
8
9echo SCHEDNAME > /sys/block/DEV/queue/scheduler
10
11where SCHEDNAME is the name of a defined IO scheduler, and DEV is the
12device name (hda, hdb, sga, or whatever you happen to have).
13
14The list of defined schedulers can be found by simply doing
15a "cat /sys/block/DEV/queue/scheduler" - the list of valid names
16will be displayed, with the currently selected scheduler in brackets:
17
18# cat /sys/block/hda/queue/scheduler
19noop anticipatory deadline [cfq]
20# echo anticipatory > /sys/block/hda/queue/scheduler
21# cat /sys/block/hda/queue/scheduler
22noop [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
55Clock and voltage scaling for the SA-1100: 55Clock 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
28What: drivers depending on OBSOLETE_OSS_DRIVER 28What: drivers that were depending on OBSOLETE_OSS_DRIVER
29When: January 2006 29 (config options already removed)
30When: before 2.6.19
30Why: OSS drivers with ALSA replacements 31Why: OSS drivers with ALSA replacements
31Who: Adrian Bunk <bunk@stusta.de> 32Who: 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
74What: remove EXPORT_SYMBOL(panic_timeout)
75When: April 2006
76Files: kernel/panic.c
77Why: No modular usage in the kernel.
78Who: Adrian Bunk <bunk@stusta.de>
79
80---------------------------
81
82What: remove EXPORT_SYMBOL(insert_resource) 75What: remove EXPORT_SYMBOL(insert_resource)
83When: April 2006 76When: April 2006
84Files: kernel/resource.c 77Files: 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
696This describes how the VFS can manipulate an open file. As of kernel 696This describes how the VFS can manipulate an open file. As of kernel
6972.6.13, the following members are defined: 6972.6.17, the following members are defined:
698 698
699struct file_operations { 699struct 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
727int);
728 ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned
729int);
726}; 730};
727 731
728Again, all methods are called without any locks being held, unless 732Again, 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
793Note that the file operations are implemented by the specific 803Note that the file operations are implemented by the specific
794filesystem in which the inode resides. When opening a device node 804filesystem 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
14It currently supports the following devices: 14It 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
22These devices use different pinout configurations, so you have to tell 23These devices use different pinout configurations, so you have to tell
23the driver what you have, using the type module parameter. There is no 24the driver what you have, using the type module parameter. There is no
24way to autodetect the devices. Support for different pinout configurations 25way to autodetect the devices. Support for different pinout configurations
25can be easily added when needed. 26can be easily added when needed.
26 27
28Earlier kernels defaulted to type=0 (Philips). But now, if the type
29parameter is missing, the driver will simply fail to initialize.
30
27 31
28Building your own adapter 32Building 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 @@
1GigaSet 307x Device Driver
2==========================
3
41. Requirements
5 ------------
61.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
441.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
562. How to use the driver
57 ---------------------
582.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
662.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
802.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
962.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
1422.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
1713. Troubleshooting
172 ---------------
1733.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
1993.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
2253.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
2483.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
2564. 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
2665. 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
44of modules. The author of an external modules should supply 44of modules. The author of an external modules should supply
45a makefile that hides most of the complexity so one only has to type 45a 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
47chapter ¤. Creating a kbuild file for an external module". 47chapter 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
653If, however, a data dependency barrier were to be placed between the load of C 654If, however, a data dependency barrier were to be placed between the load of C
654and the load of *C (ie: B) on CPU 2, then the following will occur: 655and 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
668then 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.
1263ATOMIC OPERATIONS 1277ATOMIC OPERATIONS
1264----------------- 1278-----------------
1265 1279
1266Though they are technically interprocessor interaction considerations, atomic 1280Whilst they are technically interprocessor interaction considerations, atomic
1267operations are noted specially as they do _not_ generally imply memory 1281operations are noted specially as some of them imply full memory barriers and
1268barriers. The possible offenders include: 1282some don't, but they're very heavily relied on as a group throughout the
1283kernel.
1284
1285Any atomic operation that modifies some state in memory and returns information
1286about 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
1286These may be used for such things as implementing LOCK operations or controlling 1305These are used for such things as implementing LOCK-class and UNLOCK-class
1287the lifetime of objects by decreasing their reference counts. In such cases 1306operations and adjusting reference counters towards object destruction, and as
1288they need preceding memory barriers. 1307such the implicit memory barrier effects are necessary.
1289 1308
1290The following may also be possible offenders as they may be used as UNLOCK
1291operations.
1292 1309
1310The following operation are potential problems as they do _not_ imply memory
1311barriers, but might be used for implementing such things as UNLOCK-class
1312operations:
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
1319With these the appropriate explicit memory barrier should be used if necessary
1320(smp_mb__before_clear_bit() for instance).
1298 1321
1299The following are a little tricky: 1322
1323The following also do _not_ imply memory barriers, and so may require explicit
1324memory barriers under some circumstances (smp_mb__before_atomic_dec() for
1325instance)):
1300 1326
1301 atomic_add(); 1327 atomic_add();
1302 atomic_sub(); 1328 atomic_sub();
@@ -1317,10 +1343,12 @@ specific order.
1317 1343
1318 1344
1319Basically, each usage case has to be carefully considered as to whether memory 1345Basically, each usage case has to be carefully considered as to whether memory
1320barriers are needed or not. The simplest rule is probably: if the atomic 1346barriers are needed or not.
1321operation is protected by a lock, then it does not require a barrier unless 1347
1322there's another operation within the critical section with respect to which an 1348[!] Note that special memory barrier primitives are available for these
1323ordering must be maintained. 1349situations because on some CPUs the atomic instructions used imply full memory
1350barriers, and so barrier instructions are superfluous in conjunction with them,
1351and in such cases the special barrier primitives will be no-ops.
1324 1352
1325See Documentation/atomic_ops.txt for more information. 1353See 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
154static 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
155int main () 165int 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
251static 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
243int main (int argc, char **argv) 262int 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
2The sync patches work is based on initial patches from
3Krisztian <hidden@balabit.hu> and others and additional patches
4from Jamal <hadi@cyberus.ca>.
5
6The end goal for syncing is to be able to insert attributes + generate
7events so that the an SA can be safely moved from one machine to another
8for HA purposes.
9The idea is to synchronize the SA so that the takeover machine can do
10the processing of the SA as accurate as possible if it has access to it.
11
12We already have the ability to generate SA add/del/upd events.
13These patches add ability to sync and have accurate lifetime byte (to
14ensure proper decay of SAs) and replay counters to avoid replay attacks
15with as minimal loss at failover time.
16This way a backup stays as closely uptodate as an active member.
17
18Because the above items change for every packet the SA receives,
19it is possible for a lot of the events to be generated.
20For this reason, we also add a nagle-like algorithm to restrict
21the events. i.e we are going to set thresholds to say "let me
22know if the replay sequence threshold is reached or 10 secs have passed"
23These thresholds are set system-wide via sysctls or can be updated
24per SA.
25
26The identified items that need to be synchronized are:
27- the lifetime byte counter
28note that: lifetime time limit is not important if you assume the failover
29machine is known ahead of time since the decay of the time countdown
30is not driven by packet arrival.
31- the replay sequence for both inbound and outbound
32
331) Message Structure
34----------------------
35
36nlmsghdr:aevent_id:optional-TLVs.
37
38The netlink message types are:
39
40XFRM_MSG_NEWAE and XFRM_MSG_GETAE.
41
42A XFRM_MSG_GETAE does not have TLVs.
43A XFRM_MSG_NEWAE will have at least two TLVs (as is
44discussed further below).
45
46aevent_id structure looks like:
47
48 struct xfrm_aevent_id {
49 struct xfrm_usersa_id sa_id;
50 __u32 flags;
51 };
52
53xfrm_usersa_id in this message layout identifies the SA.
54
55flags are used to indicate different things. The possible
56flags 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
65How these flags are used is dependent on the direction of the
66message (kernel<->user) as well the cause (config, query or event).
67This is described below in the different messages.
68
69The pid will be set appropriately in netlink to recognize direction
70(0 to the kernel and pid = processid that created the event
71when going from kernel to user space)
72
73A program needs to subscribe to multicast group XFRMNLGRP_AEVENTS
74to get notified of these events.
75
762) TLVS reflect the different parameters:
77-----------------------------------------
78
79a) byte value (XFRMA_LTIME_VAL)
80This TLV carries the running/current counter for byte lifetime since
81last event.
82
83b)replay value (XFRMA_REPLAY_VAL)
84This TLV carries the running/current counter for replay sequence since
85last event.
86
87c)replay threshold (XFRMA_REPLAY_THRESH)
88This TLV carries the threshold being used by the kernel to trigger events
89when the replay sequence is exceeded.
90
91d) expiry timer (XFRMA_ETIMER_THRESH)
92This is a timer value in milliseconds which is used as the nagle
93value to rate limit the events.
94
953) Default configurations for the parameters:
96----------------------------------------------
97
98By default these events should be turned off unless there is
99at least one listener registered to listen to the multicast
100group XFRMNLGRP_AEVENTS.
101
102Programs installing SAs will need to specify the two thresholds, however,
103in order to not change existing applications such as racoon
104we also provide default threshold values for these different parameters
105in case they are not specified.
106
107the two sysctls/proc entries are:
108a) /proc/sys/net/core/sysctl_xfrm_aevent_etime
109used to provide default values for the XFRMA_ETIMER_THRESH in incremental
110units of time of 100ms. The default is 10 (1 second)
111
112b) /proc/sys/net/core/sysctl_xfrm_aevent_rseqth
113used to provide default values for XFRMA_REPLAY_THRESH parameter
114in incremental packet count. The default is two packets.
115
1164) Message types
117----------------
118
119a) XFRM_MSG_GETAE issued by user-->kernel.
120XFRM_MSG_GETAE does not carry any TLVs.
121The response is a XFRM_MSG_NEWAE which is formatted based on what
122XFRM_MSG_GETAE queried for.
123The 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
127b) XFRM_MSG_NEWAE is issued by either user space to configure
128or kernel to announce events or respond to a XFRM_MSG_GETAE.
129
130i) user --> kernel to configure a specific SA.
131any of the values or threshold parameters can be updated by passing the
132appropriate TLV.
133A response is issued back to the sender in user space to indicate success
134or failure.
135In the case of success, additionally an event with
136XFRM_MSG_NEWAE is also issued to any listeners as described in iii).
137
138ii) kernel->user direction as a response to XFRM_MSG_GETAE
139The response will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs.
140The threshold TLVs will be included if explicitly requested in
141the XFRM_MSG_GETAE message.
142
143iii) kernel->user to report as event if someone sets any values or
144thresholds for an SA using XFRM_MSG_NEWAE (as described in #i above).
145In such a case XFRM_AE_CU flag is set to inform the user that
146the change happened as a result of an update.
147The message will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs.
148
149iv) kernel->user to report event when replay threshold or a timeout
150is exceeded.
151In such a case either XFRM_AE_CR (replay exceeded) or XFRM_AE_CE (timeout
152happened) is set to inform the user what happened.
153Note the two flags are mutually exclusive.
154The message will always have XFRMA_LTIME_VAL and XFRMA_REPLAY_VAL TLVs.
155
156Exceptions to threshold settings
157--------------------------------
158
159If you have an SA that is getting hit by traffic in bursts such that
160there is a period where the timer threshold expires with no packets
161seen, then an odd behavior is seen as follows:
162The first packet arrival after a timer expiry will trigger a timeout
163aevent; i.e we dont wait for a timeout period or a packet threshold
164to 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
419scsi_unjam_host() and it is responsible for whole recovery process. 419scsi_unjam_host() and it is responsible for whole recovery process.
420On completion, the handler should have made lower layers forget about 420On completion, the handler should have made lower layers forget about
421all failed scmds and either ready for new commands or offline. Also, 421all 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
424except for #1 must be implemented by eh_strategy_handler(). 424except 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
9This document is meant as a brief overview of some aspects of the new serial 6This document is meant as a brief overview of some aspects of the new serial
10driver. It is not complete, any questions you have should be directed to 7driver. 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
13The reference implementation is contained within serial_amba.c. 10The 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
31the correct port structure (via uart_get_console) and decoding command line 28the correct port structure (via uart_get_console) and decoding command line
32arguments (uart_parse_options). 29arguments (uart_parse_options).
33 30
31There is also a helper function (uart_write_console) which performs a
32character by character write, translating newlines to CRLF sequences.
33Driver writers are recommended to use this function rather than implementing
34their own version.
35
34 36
35Locking 37Locking
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
27the configured hugepage size - this is needed for generating the proper 27the configured hugepage size - this is needed for generating the proper
28alignment and size of the arguments to the above system calls. 28alignment and size of the arguments to the above system calls.
29 29
30The output of "cat /proc/meminfo" will have output like: 30The output of "cat /proc/meminfo" will have lines like:
31 31
32..... 32.....
33HugePages_Total: xxx 33HugePages_Total: xxx
34HugePages_Free: yyy 34HugePages_Free: yyy
35Hugepagesize: zzz KB 35HugePages_Rsvd: www
36Hugepagesize: zzz kB
37
38where:
39HugePages_Total is the size of the pool of hugepages.
40HugePages_Free is the number of hugepages in the pool that are not yet
41allocated.
42HugePages_Rsvd is short for "reserved," and is the number of hugepages
43for which a commitment to allocate from the pool has been made, but no
44allocation 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
38in the kernel. 47in the kernel.
@@ -42,11 +51,11 @@ pages in the kernel. Super user can dynamically request more (or free some
42pre-configured) hugepages. 51pre-configured) hugepages.
43The allocation (or deallocation) of hugetlb pages is possible only if there are 52The allocation (or deallocation) of hugetlb pages is possible only if there are
44enough physically contiguous free pages in system (freeing of hugepages is 53enough physically contiguous free pages in system (freeing of hugepages is
45possible only if there are enough hugetlb pages free that can be transfered 54possible only if there are enough hugetlb pages free that can be transferred
46back to regular memory pool). 55back to regular memory pool).
47 56
48Pages that are used as hugetlb pages are reserved inside the kernel and can 57Pages that are used as hugetlb pages are reserved inside the kernel and cannot
49not be used for other purposes. 58be used for other purposes.
50 59
51Once the kernel with Hugetlb page support is built and running, a user can 60Once the kernel with Hugetlb page support is built and running, a user can
52use either the mmap system call or shared memory system calls to start using 61use 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:
60This command will try to configure 20 hugepages in the system. The success 69This command will try to configure 20 hugepages in the system. The success
61or failure of allocation depends on the amount of physically contiguous 70or failure of allocation depends on the amount of physically contiguous
62memory that is preset in system at this time. System administrators may want 71memory that is preset in system at this time. System administrators may want
63to put this command in one of the local rc init file. This will enable the 72to put this command in one of the local rc init files. This will enable the
64kernel to request huge pages early in the boot process (when the possibility 73kernel to request huge pages early in the boot process (when the possibility
65of getting physical contiguous pages is still very high). 74of 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
78mode of root of file system to value & 0777. This value is given in octal. 87mode of root of file system to value & 0777. This value is given in octal.
79By default the value 0755 is picked. The size option sets the maximum value of 88By default the value 0755 is picked. The size option sets the maximum value of
80memory (huge pages) allowed for that filesystem (/mnt/huge). The size is 89memory (huge pages) allowed for that filesystem (/mnt/huge). The size is
81rounded down to HPAGE_SIZE. The option nr_inode sets the maximum number of 90rounded down to HPAGE_SIZE. The option nr_inodes sets the maximum number of
82inodes that /mnt/huge can use. If the size or nr_inode options are not 91inodes that /mnt/huge can use. If the size or nr_inodes options are not
83provided on command line then no limits are set. For size and nr_inodes 92provided on command line then no limits are set. For size and nr_inodes
84options, you can use [G|g]/[M|m]/[K|k] to represent giga/mega/kilo. For 93options, you can use [G|g]/[M|m]/[K|k] to represent giga/mega/kilo. For
85example, size=2K has the same meaning as size=2048. An example is given at 94example, size=2K has the same meaning as size=2048. An example is given at
@@ -88,7 +97,7 @@ the end of this document.
88read and write system calls are not supported on files that reside on hugetlb 97read and write system calls are not supported on files that reside on hugetlb
89file systems. 98file systems.
90 99
91A regular chown, chgrp and chmod commands (with right permissions) could be 100Regular chown, chgrp, and chmod commands (with right permissions) could be
92used to change the file attributes on hugetlbfs. 101used to change the file attributes on hugetlbfs.
93 102
94Also, it is important to note that no such mount command is required if the 103Also, 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
96wish to use hugetlb page via shared memory segment should be a member of 105wish to use hugetlb page via shared memory segment should be a member of
97a supplementary group and system admin needs to configure that gid into 106a 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
99applications to use any combination of mmaps and shm* calls. Though the 108applications to use any combination of mmaps and shm* calls, though the
100mount of filesystem will be required for using mmaps. 109mount 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
154ACPI 159ACPI
155 160
156 acpi=off Don't enable ACPI 161 acpi=off Don't enable ACPI