aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/ABI/removed/devfs (renamed from Documentation/ABI/obsolete/devfs)5
-rw-r--r--Documentation/ABI/testing/sysfs-power88
-rw-r--r--Documentation/CodingStyle34
-rw-r--r--Documentation/DMA-mapping.txt4
-rw-r--r--Documentation/DocBook/kernel-api.tmpl84
-rw-r--r--Documentation/DocBook/libata.tmpl4
-rw-r--r--Documentation/DocBook/usb.tmpl128
-rw-r--r--Documentation/DocBook/writing_usb_driver.tmpl7
-rw-r--r--Documentation/HOWTO23
-rw-r--r--Documentation/IPMI.txt23
-rw-r--r--Documentation/MSI-HOWTO.txt2
-rw-r--r--Documentation/RCU/checklist.txt38
-rw-r--r--Documentation/RCU/rcu.txt3
-rw-r--r--Documentation/RCU/torture.txt33
-rw-r--r--Documentation/RCU/whatisRCU.txt7
-rw-r--r--Documentation/SubmitChecklist5
-rw-r--r--Documentation/SubmittingDrivers21
-rw-r--r--Documentation/SubmittingPatches39
-rw-r--r--Documentation/accounting/getdelays.c7
-rw-r--r--Documentation/accounting/taskstats-struct.txt161
-rw-r--r--Documentation/aoe/todo.txt2
-rw-r--r--Documentation/arm/SA1100/serial_UART4
-rw-r--r--Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt2
-rw-r--r--Documentation/arm/Samsung-S3C24XX/GPIO.txt2
-rw-r--r--Documentation/arm/Samsung-S3C24XX/Overview.txt2
-rw-r--r--Documentation/arm/Samsung-S3C24XX/S3C2412.txt2
-rw-r--r--Documentation/block/as-iosched.txt4
-rw-r--r--Documentation/block/barrier.txt6
-rw-r--r--Documentation/block/biodoc.txt10
-rw-r--r--Documentation/block/deadline-iosched.txt4
-rw-r--r--Documentation/cciss.txt4
-rw-r--r--Documentation/computone.txt70
-rw-r--r--Documentation/cpu-freq/cpufreq-stats.txt10
-rw-r--r--Documentation/cpu-freq/governors.txt12
-rw-r--r--Documentation/cpusets.txt10
-rw-r--r--Documentation/cputopology.txt2
-rw-r--r--Documentation/dell_rbu.txt22
-rw-r--r--Documentation/devices.txt11
-rw-r--r--Documentation/driver-model/class.txt2
-rw-r--r--Documentation/driver-model/driver.txt2
-rw-r--r--Documentation/driver-model/overview.txt2
-rw-r--r--Documentation/dvb/avermedia.txt4
-rw-r--r--Documentation/dvb/cards.txt2
-rw-r--r--Documentation/dvb/ci.txt4
-rw-r--r--Documentation/dvb/faq.txt6
-rw-r--r--Documentation/ecryptfs.txt77
-rw-r--r--Documentation/eisa.txt4
-rw-r--r--Documentation/exception.txt2
-rw-r--r--Documentation/fb/fbcon.txt2
-rw-r--r--Documentation/fb/intel810.txt148
-rw-r--r--Documentation/fb/intelfb.txt21
-rw-r--r--Documentation/fb/sisfb.txt2
-rw-r--r--Documentation/fb/sstfb.txt42
-rw-r--r--Documentation/feature-removal-schedule.txt130
-rw-r--r--Documentation/filesystems/00-INDEX2
-rw-r--r--Documentation/filesystems/Locking5
-rw-r--r--Documentation/filesystems/befs.txt8
-rw-r--r--Documentation/filesystems/configfs/configfs.txt8
-rw-r--r--Documentation/filesystems/directory-locking2
-rw-r--r--Documentation/filesystems/dlmfs.txt2
-rw-r--r--Documentation/filesystems/ext2.txt2
-rw-r--r--Documentation/filesystems/files.txt2
-rw-r--r--Documentation/filesystems/gfs2.txt43
-rw-r--r--Documentation/filesystems/ntfs.txt10
-rw-r--r--Documentation/filesystems/proc.txt42
-rw-r--r--Documentation/filesystems/spufs.txt6
-rw-r--r--Documentation/filesystems/sysfs.txt2
-rw-r--r--Documentation/filesystems/tmpfs.txt4
-rw-r--r--Documentation/filesystems/vfat.txt2
-rw-r--r--Documentation/filesystems/vfs.txt6
-rw-r--r--Documentation/fujitsu/frv/mmu-layout.txt2
-rw-r--r--Documentation/highuid.txt2
-rw-r--r--Documentation/hrtimers.txt12
-rw-r--r--Documentation/hwmon/it8761
-rw-r--r--Documentation/hwmon/k8temp52
-rw-r--r--Documentation/hwmon/vt1211206
-rw-r--r--Documentation/hwmon/w83627ehf85
-rw-r--r--Documentation/hwmon/w83791d69
-rw-r--r--Documentation/i2c/busses/i2c-viapro7
-rw-r--r--Documentation/i2c/i2c-stub15
-rw-r--r--Documentation/ia64/efirtc.txt2
-rw-r--r--Documentation/ia64/fsys.txt2
-rw-r--r--Documentation/ia64/mca.txt4
-rw-r--r--Documentation/ia64/serial.txt7
-rw-r--r--Documentation/ibm-acpi.txt2
-rw-r--r--Documentation/ide.txt2
-rw-r--r--Documentation/input/amijoy.txt4
-rw-r--r--Documentation/input/atarikbd.txt10
-rw-r--r--Documentation/input/cs461x.txt2
-rw-r--r--Documentation/input/ff.txt114
-rw-r--r--Documentation/input/gameport-programming.txt4
-rw-r--r--Documentation/input/input.txt31
-rw-r--r--Documentation/input/joystick-parport.txt8
-rw-r--r--Documentation/input/joystick.txt2
-rw-r--r--Documentation/input/yealink.txt4
-rw-r--r--Documentation/ioctl/hdio.txt2
-rw-r--r--Documentation/isdn/INTERFACE.fax2
-rw-r--r--Documentation/isdn/README.hysdn2
-rw-r--r--Documentation/java.txt2
-rw-r--r--Documentation/kbuild/kconfig-language.txt6
-rw-r--r--Documentation/kbuild/makefiles.txt7
-rw-r--r--Documentation/kbuild/modules.txt9
-rw-r--r--Documentation/kdump/kdump.txt2
-rw-r--r--Documentation/kernel-docs.txt11
-rw-r--r--Documentation/kernel-parameters.txt59
-rw-r--r--Documentation/keys.txt6
-rw-r--r--Documentation/kobject.txt2
-rw-r--r--Documentation/kprobes.txt89
-rw-r--r--Documentation/laptop-mode.txt2
-rw-r--r--Documentation/lockdep-design.txt30
-rw-r--r--Documentation/m68k/kernel-options.txt2
-rw-r--r--Documentation/mca.txt2
-rw-r--r--Documentation/md.txt42
-rw-r--r--Documentation/memory-barriers.txt4
-rw-r--r--Documentation/mono.txt2
-rw-r--r--Documentation/networking/3c509.txt2
-rw-r--r--Documentation/networking/NAPI_HOWTO.txt2
-rw-r--r--Documentation/networking/arcnet-hardware.txt2
-rw-r--r--Documentation/networking/bonding.txt61
-rw-r--r--Documentation/networking/cs89x0.txt6
-rw-r--r--Documentation/networking/cxgb.txt4
-rw-r--r--Documentation/networking/decnet.txt2
-rw-r--r--Documentation/networking/dl2k.txt4
-rw-r--r--Documentation/networking/dmfe.txt2
-rw-r--r--Documentation/networking/driver.txt2
-rw-r--r--Documentation/networking/e1000.txt2
-rw-r--r--Documentation/networking/fib_trie.txt2
-rw-r--r--Documentation/networking/gen_stats.txt8
-rw-r--r--Documentation/networking/ip-sysctl.txt4
-rw-r--r--Documentation/networking/netconsole.txt2
-rw-r--r--Documentation/networking/netif-msg.txt2
-rw-r--r--Documentation/networking/operstates.txt2
-rw-r--r--Documentation/networking/packet_mmap.txt24
-rw-r--r--Documentation/networking/pktgen.txt24
-rw-r--r--Documentation/networking/s2io.txt2
-rw-r--r--Documentation/networking/sk98lin.txt16
-rw-r--r--Documentation/networking/skfp.txt4
-rw-r--r--Documentation/networking/slicecom.txt8
-rw-r--r--Documentation/networking/smctr.txt2
-rw-r--r--Documentation/networking/tcp.txt2
-rw-r--r--Documentation/networking/tms380tr.txt2
-rw-r--r--Documentation/networking/vortex.txt4
-rw-r--r--Documentation/networking/wan-router.txt16
-rw-r--r--Documentation/nfsroot.txt2
-rw-r--r--Documentation/nommu-mmap.txt46
-rw-r--r--Documentation/pci-error-recovery.txt2
-rw-r--r--Documentation/pcieaer-howto.txt253
-rw-r--r--Documentation/pi-futex.txt2
-rw-r--r--Documentation/pm.txt6
-rw-r--r--Documentation/pnp.txt2
-rw-r--r--Documentation/power/devices.txt725
-rw-r--r--Documentation/power/pci.txt2
-rw-r--r--Documentation/power/swsusp.txt8
-rw-r--r--Documentation/power/tricks.txt2
-rw-r--r--Documentation/power/userland-swsusp.txt2
-rw-r--r--Documentation/power/video.txt2
-rw-r--r--Documentation/powerpc/booting-without-of.txt295
-rw-r--r--Documentation/powerpc/eeh-pci-error-recovery.txt4
-rw-r--r--Documentation/powerpc/hvcs.txt2
-rw-r--r--Documentation/prio_tree.txt2
-rw-r--r--Documentation/rocket.txt6
-rw-r--r--Documentation/rpc-cache.txt4
-rw-r--r--Documentation/rt-mutex-design.txt14
-rw-r--r--Documentation/s390/3270.txt4
-rw-r--r--Documentation/s390/Debugging390.txt93
-rw-r--r--Documentation/s390/cds.txt14
-rw-r--r--Documentation/s390/crypto/crypto-API.txt4
-rw-r--r--Documentation/s390/driver-model.txt4
-rw-r--r--Documentation/s390/monreader.txt2
-rw-r--r--Documentation/s390/s390dbf.txt12
-rw-r--r--Documentation/sched-coding.txt2
-rw-r--r--Documentation/sched-design.txt4
-rw-r--r--Documentation/scsi/ChangeLog.1992-19972
-rw-r--r--Documentation/scsi/NinjaSCSI.txt18
-rw-r--r--Documentation/scsi/aacraid.txt2
-rw-r--r--Documentation/scsi/aic79xx.txt4
-rw-r--r--Documentation/scsi/aic7xxx.txt2
-rw-r--r--Documentation/scsi/aic7xxx_old.txt6
-rw-r--r--Documentation/scsi/dc395x.txt2
-rw-r--r--Documentation/scsi/dpti.txt2
-rw-r--r--Documentation/scsi/ibmmca.txt36
-rw-r--r--Documentation/scsi/megaraid.txt4
-rw-r--r--Documentation/scsi/ncr53c8xx.txt20
-rw-r--r--Documentation/scsi/osst.txt3
-rw-r--r--Documentation/scsi/ppa.txt2
-rw-r--r--Documentation/scsi/scsi-changer.txt2
-rw-r--r--Documentation/scsi/scsi_eh.txt4
-rw-r--r--Documentation/scsi/st.txt4
-rw-r--r--Documentation/scsi/sym53c8xx_2.txt4
-rw-r--r--Documentation/scsi/tmscsim.txt4
-rw-r--r--Documentation/seclvl.txt97
-rw-r--r--Documentation/sh/kgdb.txt2
-rw-r--r--Documentation/sh/new-machine.txt128
-rw-r--r--Documentation/sh/register-banks.txt33
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt26
-rw-r--r--Documentation/sound/alsa/Audiophile-Usb.txt2
-rw-r--r--Documentation/sound/alsa/CMIPCI.txt6
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl2
-rw-r--r--Documentation/sound/alsa/MIXART.txt6
-rw-r--r--Documentation/sound/alsa/Procfile.txt10
-rw-r--r--Documentation/sound/oss/AWE3276
-rw-r--r--Documentation/sound/oss/CMI833885
-rw-r--r--Documentation/sound/oss/INSTALL.awe134
-rw-r--r--Documentation/sound/oss/MAD1656
-rw-r--r--Documentation/sound/oss/Maestro123
-rw-r--r--Documentation/sound/oss/Maestro392
-rw-r--r--Documentation/sound/oss/NEWS42
-rw-r--r--Documentation/sound/oss/OPL3-SA52
-rw-r--r--Documentation/sound/oss/README.awe218
-rw-r--r--Documentation/sound/oss/Wavefront339
-rw-r--r--Documentation/sound/oss/es137070
-rw-r--r--Documentation/sound/oss/rme96xx767
-rw-r--r--Documentation/sound/oss/solo170
-rw-r--r--Documentation/sound/oss/sonicvibes81
-rw-r--r--Documentation/sound/oss/ultrasound2
-rw-r--r--Documentation/sound/oss/vwsnd2
-rw-r--r--Documentation/sparc/sbus_drivers.txt6
-rw-r--r--Documentation/spi/pxa2xx6
-rw-r--r--Documentation/spi/spi-summary4
-rw-r--r--Documentation/stable_kernel_rules.txt4
-rw-r--r--Documentation/uml/UserModeLinux-HOWTO.txt66
-rw-r--r--Documentation/unshare.txt2
-rw-r--r--Documentation/usb/URB.txt2
-rw-r--r--Documentation/usb/acm.txt14
-rw-r--r--Documentation/usb/error-codes.txt15
-rw-r--r--Documentation/usb/hiddev.txt2
-rw-r--r--Documentation/usb/mtouchusb.txt6
-rw-r--r--Documentation/usb/usb-serial.txt16
-rw-r--r--Documentation/video4linux/CARDLIST.cx8812
-rw-r--r--Documentation/video4linux/CARDLIST.saa71349
-rw-r--r--Documentation/video4linux/README.pvrusb22
-rw-r--r--Documentation/video4linux/Zoran2
-rw-r--r--Documentation/video4linux/bttv/Insmod-options6
-rw-r--r--Documentation/video4linux/cx2341x/README.hm12116
-rw-r--r--Documentation/video4linux/cx2341x/README.vbi45
-rw-r--r--Documentation/video4linux/cx2341x/fw-decoder-api.txt2
-rw-r--r--Documentation/video4linux/cx2341x/fw-encoder-api.txt2
-rw-r--r--Documentation/video4linux/cx2341x/fw-osd-api.txt2
-rw-r--r--Documentation/video4linux/cx88/hauppauge-wintv-cx88-ir.txt2
-rw-r--r--Documentation/video4linux/et61x251.txt4
-rw-r--r--Documentation/video4linux/hauppauge-wintv-cx88-ir.txt2
-rw-r--r--Documentation/video4linux/meye.txt2
-rw-r--r--Documentation/video4linux/sn9c102.txt4
-rw-r--r--Documentation/video4linux/w9968cf.txt2
-rw-r--r--Documentation/video4linux/zr36120.txt4
-rw-r--r--Documentation/vm/numa2
-rw-r--r--Documentation/watchdog/watchdog-api.txt8
-rw-r--r--Documentation/x86_64/boot-options.txt14
-rw-r--r--Documentation/x86_64/kernel-stacks99
249 files changed, 3554 insertions, 3788 deletions
diff --git a/Documentation/ABI/obsolete/devfs b/Documentation/ABI/removed/devfs
index b8b87399bc8f..8195c4e0d0a1 100644
--- a/Documentation/ABI/obsolete/devfs
+++ b/Documentation/ABI/removed/devfs
@@ -1,13 +1,12 @@
1What: devfs 1What: devfs
2Date: July 2005 2Date: July 2005 (scheduled), finally removed in kernel v2.6.18
3Contact: Greg Kroah-Hartman <gregkh@suse.de> 3Contact: Greg Kroah-Hartman <gregkh@suse.de>
4Description: 4Description:
5 devfs has been unmaintained for a number of years, has unfixable 5 devfs has been unmaintained for a number of years, has unfixable
6 races, contains a naming policy within the kernel that is 6 races, contains a naming policy within the kernel that is
7 against the LSB, and can be replaced by using udev. 7 against the LSB, and can be replaced by using udev.
8 The files fs/devfs/*, include/linux/devfs_fs*.h will be removed, 8 The files fs/devfs/*, include/linux/devfs_fs*.h were removed,
9 along with the the assorted devfs function calls throughout the 9 along with the the assorted devfs function calls throughout the
10 kernel tree. 10 kernel tree.
11 11
12Users: 12Users:
13
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power
new file mode 100644
index 000000000000..d882f8093871
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-power
@@ -0,0 +1,88 @@
1What: /sys/power/
2Date: August 2006
3Contact: Rafael J. Wysocki <rjw@sisk.pl>
4Description:
5 The /sys/power directory will contain files that will
6 provide a unified interface to the power management
7 subsystem.
8
9What: /sys/power/state
10Date: August 2006
11Contact: Rafael J. Wysocki <rjw@sisk.pl>
12Description:
13 The /sys/power/state file controls the system power state.
14 Reading from this file returns what states are supported,
15 which is hard-coded to 'standby' (Power-On Suspend), 'mem'
16 (Suspend-to-RAM), and 'disk' (Suspend-to-Disk).
17
18 Writing to this file one of these strings causes the system to
19 transition into that state. Please see the file
20 Documentation/power/states.txt for a description of each of
21 these states.
22
23What: /sys/power/disk
24Date: August 2006
25Contact: Rafael J. Wysocki <rjw@sisk.pl>
26Description:
27 The /sys/power/disk file controls the operating mode of the
28 suspend-to-disk mechanism. Reading from this file returns
29 the name of the method by which the system will be put to
30 sleep on the next suspend. There are four methods supported:
31 'firmware' - means that the memory image will be saved to disk
32 by some firmware, in which case we also assume that the
33 firmware will handle the system suspend.
34 'platform' - the memory image will be saved by the kernel and
35 the system will be put to sleep by the platform driver (e.g.
36 ACPI or other PM registers).
37 'shutdown' - the memory image will be saved by the kernel and
38 the system will be powered off.
39 'reboot' - the memory image will be saved by the kernel and
40 the system will be rebooted.
41
42 The suspend-to-disk method may be chosen by writing to this
43 file one of the accepted strings:
44
45 'firmware'
46 'platform'
47 'shutdown'
48 'reboot'
49
50 It will only change to 'firmware' or 'platform' if the system
51 supports that.
52
53What: /sys/power/image_size
54Date: August 2006
55Contact: Rafael J. Wysocki <rjw@sisk.pl>
56Description:
57 The /sys/power/image_size file controls the size of the image
58 created by the suspend-to-disk mechanism. It can be written a
59 string representing a non-negative integer that will be used
60 as an upper limit of the image size, in bytes. The kernel's
61 suspend-to-disk code will do its best to ensure the image size
62 will not exceed this number. However, if it turns out to be
63 impossible, the kernel will try to suspend anyway using the
64 smallest image possible. In particular, if "0" is written to
65 this file, the suspend image will be as small as possible.
66
67 Reading from this file will display the current image size
68 limit, which is set to 500 MB by default.
69
70What: /sys/power/pm_trace
71Date: August 2006
72Contact: Rafael J. Wysocki <rjw@sisk.pl>
73Description:
74 The /sys/power/pm_trace file controls the code which saves the
75 last PM event point in the RTC across reboots, so that you can
76 debug a machine that just hangs during suspend (or more
77 commonly, during resume). Namely, the RTC is only used to save
78 the last PM event point if this file contains '1'. Initially
79 it contains '0' which may be changed to '1' by writing a
80 string representing a nonzero integer into it.
81
82 To use this debugging feature you should attempt to suspend
83 the machine, then reboot it and run
84
85 dmesg -s 1000000 | grep 'hash matches'
86
87 CAUTION: Using it will cause your machine's real-time (CMOS)
88 clock to be set to a random invalid time after a resume.
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index 6d2412ec91ed..29c18966b050 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -532,6 +532,40 @@ appears outweighs the potential value of the hint that tells gcc to do
532something it would have done anyway. 532something it would have done anyway.
533 533
534 534
535 Chapter 16: Function return values and names
536
537Functions can return values of many different kinds, and one of the
538most common is a value indicating whether the function succeeded or
539failed. Such a value can be represented as an error-code integer
540(-Exxx = failure, 0 = success) or a "succeeded" boolean (0 = failure,
541non-zero = success).
542
543Mixing up these two sorts of representations is a fertile source of
544difficult-to-find bugs. If the C language included a strong distinction
545between integers and booleans then the compiler would find these mistakes
546for us... but it doesn't. To help prevent such bugs, always follow this
547convention:
548
549 If the name of a function is an action or an imperative command,
550 the function should return an error-code integer. If the name
551 is a predicate, the function should return a "succeeded" boolean.
552
553For example, "add work" is a command, and the add_work() function returns 0
554for success or -EBUSY for failure. In the same way, "PCI device present" is
555a predicate, and the pci_dev_present() function returns 1 if it succeeds in
556finding a matching device or 0 if it doesn't.
557
558All EXPORTed functions must respect this convention, and so should all
559public functions. Private (static) functions need not, but it is
560recommended that they do.
561
562Functions whose return value is the actual result of a computation, rather
563than an indication of whether the computation succeeded, are not subject to
564this rule. Generally they indicate failure by returning some out-of-range
565result. Typical examples would be functions that return pointers; they use
566NULL or the ERR_PTR mechanism to report failure.
567
568
535 569
536 Appendix I: References 570 Appendix I: References
537 571
diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt
index 63392c9132b4..028614cdd062 100644
--- a/Documentation/DMA-mapping.txt
+++ b/Documentation/DMA-mapping.txt
@@ -107,7 +107,7 @@ The query is performed via a call to pci_set_dma_mask():
107 107
108 int pci_set_dma_mask(struct pci_dev *pdev, u64 device_mask); 108 int pci_set_dma_mask(struct pci_dev *pdev, u64 device_mask);
109 109
110The query for consistent allocations is performed via a a call to 110The query for consistent allocations is performed via a call to
111pci_set_consistent_dma_mask(): 111pci_set_consistent_dma_mask():
112 112
113 int pci_set_consistent_dma_mask(struct pci_dev *pdev, u64 device_mask); 113 int pci_set_consistent_dma_mask(struct pci_dev *pdev, u64 device_mask);
@@ -117,7 +117,7 @@ device_mask is a bit mask describing which bits of a PCI address your
117device supports. It returns zero if your card can perform DMA 117device supports. It returns zero if your card can perform DMA
118properly on the machine given the address mask you provided. 118properly on the machine given the address mask you provided.
119 119
120If it returns non-zero, your device can not perform DMA properly on 120If it returns non-zero, your device cannot perform DMA properly on
121this platform, and attempting to do so will result in undefined 121this platform, and attempting to do so will result in undefined
122behavior. You must either use a different mask, or not use DMA. 122behavior. You must either use a different mask, or not use DMA.
123 123
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index f8fe882e33dc..2b5ac604948c 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -158,6 +158,7 @@ X!Ilib/string.c
158!Emm/filemap.c 158!Emm/filemap.c
159!Emm/memory.c 159!Emm/memory.c
160!Emm/vmalloc.c 160!Emm/vmalloc.c
161!Imm/page_alloc.c
161!Emm/mempool.c 162!Emm/mempool.c
162!Emm/page-writeback.c 163!Emm/page-writeback.c
163!Emm/truncate.c 164!Emm/truncate.c
@@ -181,27 +182,6 @@ X!Ilib/string.c
181 </sect1> 182 </sect1>
182 </chapter> 183 </chapter>
183 184
184 <chapter id="proc">
185 <title>The proc filesystem</title>
186
187 <sect1><title>sysctl interface</title>
188!Ekernel/sysctl.c
189 </sect1>
190
191 <sect1><title>proc filesystem interface</title>
192!Ifs/proc/base.c
193 </sect1>
194 </chapter>
195
196 <chapter id="debugfs">
197 <title>The debugfs filesystem</title>
198
199 <sect1><title>debugfs interface</title>
200!Efs/debugfs/inode.c
201!Efs/debugfs/file.c
202 </sect1>
203 </chapter>
204
205 <chapter id="vfs"> 185 <chapter id="vfs">
206 <title>The Linux VFS</title> 186 <title>The Linux VFS</title>
207 <sect1><title>The Filesystem types</title> 187 <sect1><title>The Filesystem types</title>
@@ -234,6 +214,50 @@ X!Ilib/string.c
234 </sect1> 214 </sect1>
235 </chapter> 215 </chapter>
236 216
217 <chapter id="proc">
218 <title>The proc filesystem</title>
219
220 <sect1><title>sysctl interface</title>
221!Ekernel/sysctl.c
222 </sect1>
223
224 <sect1><title>proc filesystem interface</title>
225!Ifs/proc/base.c
226 </sect1>
227 </chapter>
228
229 <chapter id="sysfs">
230 <title>The Filesystem for Exporting Kernel Objects</title>
231!Efs/sysfs/file.c
232!Efs/sysfs/symlink.c
233!Efs/sysfs/bin.c
234 </chapter>
235
236 <chapter id="debugfs">
237 <title>The debugfs filesystem</title>
238
239 <sect1><title>debugfs interface</title>
240!Efs/debugfs/inode.c
241!Efs/debugfs/file.c
242 </sect1>
243 </chapter>
244
245 <chapter id="relayfs">
246 <title>relay interface support</title>
247
248 <para>
249 Relay interface support
250 is designed to provide an efficient mechanism for tools and
251 facilities to relay large amounts of data from kernel space to
252 user space.
253 </para>
254
255 <sect1><title>relay interface</title>
256!Ekernel/relay.c
257!Ikernel/relay.c
258 </sect1>
259 </chapter>
260
237 <chapter id="netcore"> 261 <chapter id="netcore">
238 <title>Linux Networking</title> 262 <title>Linux Networking</title>
239 <sect1><title>Networking Base Types</title> 263 <sect1><title>Networking Base Types</title>
@@ -302,8 +326,13 @@ X!Ekernel/module.c
302!Ekernel/irq/manage.c 326!Ekernel/irq/manage.c
303 </sect1> 327 </sect1>
304 328
329 <sect1><title>DMA Channels</title>
330!Ekernel/dma.c
331 </sect1>
332
305 <sect1><title>Resources Management</title> 333 <sect1><title>Resources Management</title>
306!Ikernel/resource.c 334!Ikernel/resource.c
335!Ekernel/resource.c
307 </sect1> 336 </sect1>
308 337
309 <sect1><title>MTRR Handling</title> 338 <sect1><title>MTRR Handling</title>
@@ -349,13 +378,6 @@ X!Earch/i386/kernel/mca.c
349 </sect1> 378 </sect1>
350 </chapter> 379 </chapter>
351 380
352 <chapter id="sysfs">
353 <title>The Filesystem for Exporting Kernel Objects</title>
354!Efs/sysfs/file.c
355!Efs/sysfs/symlink.c
356!Efs/sysfs/bin.c
357 </chapter>
358
359 <chapter id="security"> 381 <chapter id="security">
360 <title>Security Framework</title> 382 <title>Security Framework</title>
361!Esecurity/security.c 383!Esecurity/security.c
@@ -386,6 +408,7 @@ X!Iinclude/linux/device.h
386--> 408-->
387!Edrivers/base/driver.c 409!Edrivers/base/driver.c
388!Edrivers/base/core.c 410!Edrivers/base/core.c
411!Edrivers/base/class.c
389!Edrivers/base/firmware_class.c 412!Edrivers/base/firmware_class.c
390!Edrivers/base/transport_class.c 413!Edrivers/base/transport_class.c
391!Edrivers/base/dmapool.c 414!Edrivers/base/dmapool.c
@@ -437,6 +460,11 @@ X!Edrivers/pnp/system.c
437!Eblock/ll_rw_blk.c 460!Eblock/ll_rw_blk.c
438 </chapter> 461 </chapter>
439 462
463 <chapter id="chrdev">
464 <title>Char devices</title>
465!Efs/char_dev.c
466 </chapter>
467
440 <chapter id="miscdev"> 468 <chapter id="miscdev">
441 <title>Miscellaneous Devices</title> 469 <title>Miscellaneous Devices</title>
442!Edrivers/char/misc.c 470!Edrivers/char/misc.c
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index 065e8dc23e3a..07a635590b36 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -14,7 +14,7 @@
14 </authorgroup> 14 </authorgroup>
15 15
16 <copyright> 16 <copyright>
17 <year>2003-2005</year> 17 <year>2003-2006</year>
18 <holder>Jeff Garzik</holder> 18 <holder>Jeff Garzik</holder>
19 </copyright> 19 </copyright>
20 20
@@ -1400,7 +1400,7 @@ and other resources, etc.
1400 <listitem> 1400 <listitem>
1401 <para> 1401 <para>
1402 When it's known that HBA is in ready state but ATA/ATAPI 1402 When it's known that HBA is in ready state but ATA/ATAPI
1403 device in in unknown state, reset only device. 1403 device is in unknown state, reset only device.
1404 </para> 1404 </para>
1405 </listitem> 1405 </listitem>
1406 1406
diff --git a/Documentation/DocBook/usb.tmpl b/Documentation/DocBook/usb.tmpl
index 320af25de3a2..143e5ff7deb8 100644
--- a/Documentation/DocBook/usb.tmpl
+++ b/Documentation/DocBook/usb.tmpl
@@ -43,59 +43,52 @@
43 43
44 <para>A Universal Serial Bus (USB) is used to connect a host, 44 <para>A Universal Serial Bus (USB) is used to connect a host,
45 such as a PC or workstation, to a number of peripheral 45 such as a PC or workstation, to a number of peripheral
46 devices. USB uses a tree structure, with the host at the 46 devices. USB uses a tree structure, with the host as the
47 root (the system's master), hubs as interior nodes, and 47 root (the system's master), hubs as interior nodes, and
48 peripheral devices as leaves (and slaves). 48 peripherals as leaves (and slaves).
49 Modern PCs support several such trees of USB devices, usually 49 Modern PCs support several such trees of USB devices, usually
50 one USB 2.0 tree (480 Mbit/sec each) with 50 one USB 2.0 tree (480 Mbit/sec each) with
51 a few USB 1.1 trees (12 Mbit/sec each) that are used when you 51 a few USB 1.1 trees (12 Mbit/sec each) that are used when you
52 connect a USB 1.1 device directly to the machine's "root hub". 52 connect a USB 1.1 device directly to the machine's "root hub".
53 </para> 53 </para>
54 54
55 <para>That master/slave asymmetry was designed in part for 55 <para>That master/slave asymmetry was designed-in for a number of
56 ease of use. It is not physically possible to assemble 56 reasons, one being ease of use. It is not physically possible to
57 (legal) USB cables incorrectly: all upstream "to-the-host" 57 assemble (legal) USB cables incorrectly: all upstream "to the host"
58 connectors are the rectangular type, matching the sockets on 58 connectors are the rectangular type (matching the sockets on
59 root hubs, and the downstream type are the squarish type 59 root hubs), and all downstream connectors are the squarish type
60 (or they are built in to the peripheral). 60 (or they are built into the peripheral).
61 Software doesn't need to deal with distributed autoconfiguration 61 Also, the host software doesn't need to deal with distributed
62 since the pre-designated master node manages all that. 62 auto-configuration since the pre-designated master node manages all that.
63 At the electrical level, bus protocol overhead is reduced by 63 And finally, at the electrical level, bus protocol overhead is reduced by
64 eliminating arbitration and moving scheduling into host software. 64 eliminating arbitration and moving scheduling into the host software.
65 </para> 65 </para>
66 66
67 <para>USB 1.0 was announced in January 1996, and was revised 67 <para>USB 1.0 was announced in January 1996 and was revised
68 as USB 1.1 (with improvements in hub specification and 68 as USB 1.1 (with improvements in hub specification and
69 support for interrupt-out transfers) in September 1998. 69 support for interrupt-out transfers) in September 1998.
70 USB 2.0 was released in April 2000, including high speed 70 USB 2.0 was released in April 2000, adding high-speed
71 transfers and transaction translating hubs (used for USB 1.1 71 transfers and transaction-translating hubs (used for USB 1.1
72 and 1.0 backward compatibility). 72 and 1.0 backward compatibility).
73 </para> 73 </para>
74 74
75 <para>USB support was added to Linux early in the 2.2 kernel series 75 <para>Kernel developers added USB support to Linux early in the 2.2 kernel
76 shortly before the 2.3 development forked off. Updates 76 series, shortly before 2.3 development forked. Updates from 2.3 were
77 from 2.3 were regularly folded back into 2.2 releases, bringing 77 regularly folded back into 2.2 releases, which improved reliability and
78 new features such as <filename>/sbin/hotplug</filename> support, 78 brought <filename>/sbin/hotplug</filename> support as well more drivers.
79 more drivers, and more robustness. 79 Such improvements were continued in the 2.5 kernel series, where they added
80 The 2.5 kernel series continued such improvements, and also 80 USB 2.0 support, improved performance, and made the host controller drivers
81 worked on USB 2.0 support, 81 (HCDs) more consistent. They also simplified the API (to make bugs less
82 higher performance, 82 likely) and added internal "kerneldoc" documentation.
83 better consistency between host controller drivers,
84 API simplification (to make bugs less likely),
85 and providing internal "kerneldoc" documentation.
86 </para> 83 </para>
87 84
88 <para>Linux can run inside USB devices as well as on 85 <para>Linux can run inside USB devices as well as on
89 the hosts that control the devices. 86 the hosts that control the devices.
90 Because the Linux 2.x USB support evolved to support mass market 87 But USB device drivers running inside those peripherals
91 platforms such as Apple Macintosh or PC-compatible systems,
92 it didn't address design concerns for those types of USB systems.
93 So it can't be used inside mass-market PDAs, or other peripherals.
94 USB device drivers running inside those Linux peripherals
95 don't do the same things as the ones running inside hosts, 88 don't do the same things as the ones running inside hosts,
96 and so they've been given a different name: 89 so they've been given a different name:
97 they're called <emphasis>gadget drivers</emphasis>. 90 <emphasis>gadget drivers</emphasis>.
98 This document does not present gadget drivers. 91 This document does not cover gadget drivers.
99 </para> 92 </para>
100 93
101 </chapter> 94 </chapter>
@@ -103,17 +96,14 @@
103<chapter id="host"> 96<chapter id="host">
104 <title>USB Host-Side API Model</title> 97 <title>USB Host-Side API Model</title>
105 98
106 <para>Within the kernel, 99 <para>Host-side drivers for USB devices talk to the "usbcore" APIs.
107 host-side drivers for USB devices talk to the "usbcore" APIs. 100 There are two. One is intended for
108 There are two types of public "usbcore" APIs, targetted at two different 101 <emphasis>general-purpose</emphasis> drivers (exposed through
109 layers of USB driver. Those are 102 driver frameworks), and the other is for drivers that are
110 <emphasis>general purpose</emphasis> drivers, exposed through 103 <emphasis>part of the core</emphasis>.
111 driver frameworks such as block, character, or network devices; 104 Such core drivers include the <emphasis>hub</emphasis> driver
112 and drivers that are <emphasis>part of the core</emphasis>, 105 (which manages trees of USB devices) and several different kinds
113 which are involved in managing a USB bus. 106 of <emphasis>host controller drivers</emphasis>,
114 Such core drivers include the <emphasis>hub</emphasis> driver,
115 which manages trees of USB devices, and several different kinds
116 of <emphasis>host controller driver (HCD)</emphasis>,
117 which control individual busses. 107 which control individual busses.
118 </para> 108 </para>
119 109
@@ -122,21 +112,21 @@
122 112
123 <itemizedlist> 113 <itemizedlist>
124 114
125 <listitem><para>USB supports four kinds of data transfer 115 <listitem><para>USB supports four kinds of data transfers
126 (control, bulk, interrupt, and isochronous). Two transfer 116 (control, bulk, interrupt, and isochronous). Two of them (control
127 types use bandwidth as it's available (control and bulk), 117 and bulk) use bandwidth as it's available,
128 while the other two types of transfer (interrupt and isochronous) 118 while the other two (interrupt and isochronous)
129 are scheduled to provide guaranteed bandwidth. 119 are scheduled to provide guaranteed bandwidth.
130 </para></listitem> 120 </para></listitem>
131 121
132 <listitem><para>The device description model includes one or more 122 <listitem><para>The device description model includes one or more
133 "configurations" per device, only one of which is active at a time. 123 "configurations" per device, only one of which is active at a time.
134 Devices that are capable of high speed operation must also support 124 Devices that are capable of high-speed operation must also support
135 full speed configurations, along with a way to ask about the 125 full-speed configurations, along with a way to ask about the
136 "other speed" configurations that might be used. 126 "other speed" configurations which might be used.
137 </para></listitem> 127 </para></listitem>
138 128
139 <listitem><para>Configurations have one or more "interface", each 129 <listitem><para>Configurations have one or more "interfaces", each
140 of which may have "alternate settings". Interfaces may be 130 of which may have "alternate settings". Interfaces may be
141 standardized by USB "Class" specifications, or may be specific to 131 standardized by USB "Class" specifications, or may be specific to
142 a vendor or device.</para> 132 a vendor or device.</para>
@@ -162,7 +152,7 @@
162 </para></listitem> 152 </para></listitem>
163 153
164 <listitem><para>The Linux USB API supports synchronous calls for 154 <listitem><para>The Linux USB API supports synchronous calls for
165 control and bulk messaging. 155 control and bulk messages.
166 It also supports asynchnous calls for all kinds of data transfer, 156 It also supports asynchnous calls for all kinds of data transfer,
167 using request structures called "URBs" (USB Request Blocks). 157 using request structures called "URBs" (USB Request Blocks).
168 </para></listitem> 158 </para></listitem>
@@ -324,8 +314,7 @@
324 <emphasis>usbdevfs</emphasis> although it wasn't solving what 314 <emphasis>usbdevfs</emphasis> although it wasn't solving what
325 <emphasis>devfs</emphasis> was. 315 <emphasis>devfs</emphasis> was.
326 Every USB device will appear in usbfs, regardless of whether or 316 Every USB device will appear in usbfs, regardless of whether or
327 not it has a kernel driver; but only devices with kernel drivers 317 not it has a kernel driver.
328 show up in devfs.
329 </para> 318 </para>
330 319
331 <sect1> 320 <sect1>
@@ -463,14 +452,25 @@
463 file in your Linux kernel sources. 452 file in your Linux kernel sources.
464 </para> 453 </para>
465 454
466 <para>Otherwise the main use for this file from programs 455 <para>This file, in combination with the poll() system call, can
467 is to poll() it to get notifications of usb devices 456 also be used to detect when devices are added or removed:
468 as they're plugged or unplugged. 457<programlisting>int fd;
469 To see what changed, you'd need to read the file and 458struct pollfd pfd;
470 compare "before" and "after" contents, scan the filesystem, 459
471 or see its hotplug event. 460fd = open("/proc/bus/usb/devices", O_RDONLY);
461pfd = { fd, POLLIN, 0 };
462for (;;) {
463 /* The first time through, this call will return immediately. */
464 poll(&amp;pfd, 1, -1);
465
466 /* To see what's changed, compare the file's previous and current
467 contents or scan the filesystem. (Scanning is more precise.) */
468}</programlisting>
469 Note that this behavior is intended to be used for informational
470 and debug purposes. It would be more appropriate to use programs
471 such as udev or HAL to initialize a device or start a user-mode
472 helper program, for instance.
472 </para> 473 </para>
473
474 </sect1> 474 </sect1>
475 475
476 <sect1> 476 <sect1>
@@ -740,7 +740,7 @@ usbdev_ioctl (int fd, int ifno, unsigned request, void *param)
740 <title>Synchronous I/O Support</title> 740 <title>Synchronous I/O Support</title>
741 741
742 <para>Synchronous requests involve the kernel blocking 742 <para>Synchronous requests involve the kernel blocking
743 until until the user mode request completes, either by 743 until the user mode request completes, either by
744 finishing successfully or by reporting an error. 744 finishing successfully or by reporting an error.
745 In most cases this is the simplest way to use usbfs, 745 In most cases this is the simplest way to use usbfs,
746 although as noted above it does prevent performing I/O 746 although as noted above it does prevent performing I/O
diff --git a/Documentation/DocBook/writing_usb_driver.tmpl b/Documentation/DocBook/writing_usb_driver.tmpl
index 008a341234d0..07cd34c1940b 100644
--- a/Documentation/DocBook/writing_usb_driver.tmpl
+++ b/Documentation/DocBook/writing_usb_driver.tmpl
@@ -224,13 +224,8 @@ static int skel_probe(struct usb_interface *interface,
224 Conversely, when the device is removed from the USB bus, the disconnect 224 Conversely, when the device is removed from the USB bus, the disconnect
225 function is called with the device pointer. The driver needs to clean any 225 function is called with the device pointer. The driver needs to clean any
226 private data that has been allocated at this time and to shut down any 226 private data that has been allocated at this time and to shut down any
227 pending urbs that are in the USB system. The driver also unregisters 227 pending urbs that are in the USB system.
228 itself from the devfs subsystem with the call:
229 </para> 228 </para>
230 <programlisting>
231/* remove our devfs node */
232devfs_unregister(skel->devfs);
233 </programlisting>
234 <para> 229 <para>
235 Now that the device is plugged into the system and the driver is bound to 230 Now that the device is plugged into the system and the driver is bound to
236 the device, any of the functions in the file_operations structure that 231 the device, any of the functions in the file_operations structure that
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index 915ae8c986c6..d6f3dd1a3464 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -358,7 +358,8 @@ Here is a list of some of the different kernel trees available:
358 quilt trees: 358 quilt trees:
359 - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de> 359 - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de>
360 kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 360 kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
361 361 - x86-64, partly i386, Andi Kleen <ak@suse.de>
362 ftp.firstfloor.org:/pub/ak/x86_64/quilt/
362 363
363Bug Reporting 364Bug Reporting
364------------- 365-------------
@@ -374,6 +375,26 @@ of information is needed by the kernel developers to help track down the
374problem. 375problem.
375 376
376 377
378Managing bug reports
379--------------------
380
381One of the best ways to put into practice your hacking skills is by fixing
382bugs reported by other people. Not only you will help to make the kernel
383more stable, you'll learn to fix real world problems and you will improve
384your skills, and other developers will be aware of your presence. Fixing
385bugs is one of the best ways to earn merit amongst the developers, because
386not many people like wasting time fixing other people's bugs.
387
388To work in the already reported bug reports, go to http://bugzilla.kernel.org.
389If you want to be advised of the future bug reports, you can subscribe to the
390bugme-new mailing list (only new bug reports are mailed here) or to the
391bugme-janitor mailing list (every change in the bugzilla is mailed here)
392
393 http://lists.osdl.org/mailman/listinfo/bugme-new
394 http://lists.osdl.org/mailman/listinfo/bugme-janitors
395
396
397
377Mailing lists 398Mailing lists
378------------- 399-------------
379 400
diff --git a/Documentation/IPMI.txt b/Documentation/IPMI.txt
index 0256805b548f..0e3924ecd76b 100644
--- a/Documentation/IPMI.txt
+++ b/Documentation/IPMI.txt
@@ -326,9 +326,12 @@ for events, they will all receive all events that come in.
326 326
327For receiving commands, you have to individually register commands you 327For receiving commands, you have to individually register commands you
328want to receive. Call ipmi_register_for_cmd() and supply the netfn 328want to receive. Call ipmi_register_for_cmd() and supply the netfn
329and command name for each command you want to receive. Only one user 329and command name for each command you want to receive. You also
330may be registered for each netfn/cmd, but different users may register 330specify a bitmask of the channels you want to receive the command from
331for different commands. 331(or use IPMI_CHAN_ALL for all channels if you don't care). Only one
332user may be registered for each netfn/cmd/channel, but different users
333may register for different commands, or the same command if the
334channel bitmasks do not overlap.
332 335
333From userland, equivalent IOCTLs are provided to do these functions. 336From userland, equivalent IOCTLs are provided to do these functions.
334 337
@@ -361,6 +364,7 @@ You can change this at module load time (for a module) with:
361 regspacings=<sp1>,<sp2>,... regsizes=<size1>,<size2>,... 364 regspacings=<sp1>,<sp2>,... regsizes=<size1>,<size2>,...
362 regshifts=<shift1>,<shift2>,... 365 regshifts=<shift1>,<shift2>,...
363 slave_addrs=<addr1>,<addr2>,... 366 slave_addrs=<addr1>,<addr2>,...
367 force_kipmid=<enable1>,<enable2>,...
364 368
365Each of these except si_trydefaults is a list, the first item for the 369Each of these except si_trydefaults is a list, the first item for the
366first interface, second item for the second interface, etc. 370first interface, second item for the second interface, etc.
@@ -406,7 +410,13 @@ The slave_addrs specifies the IPMI address of the local BMC. This is
406usually 0x20 and the driver defaults to that, but in case it's not, it 410usually 0x20 and the driver defaults to that, but in case it's not, it
407can be specified when the driver starts up. 411can be specified when the driver starts up.
408 412
409When compiled into the kernel, the addresses can be specified on the 413The force_ipmid parameter forcefully enables (if set to 1) or disables
414(if set to 0) the kernel IPMI daemon. Normally this is auto-detected
415by the driver, but systems with broken interrupts might need an enable,
416or users that don't want the daemon (don't need the performance, don't
417want the CPU hit) can disable it.
418
419When compiled into the kernel, the parameters can be specified on the
410kernel command line as: 420kernel command line as:
411 421
412 ipmi_si.type=<type1>,<type2>... 422 ipmi_si.type=<type1>,<type2>...
@@ -416,6 +426,7 @@ kernel command line as:
416 ipmi_si.regsizes=<size1>,<size2>,... 426 ipmi_si.regsizes=<size1>,<size2>,...
417 ipmi_si.regshifts=<shift1>,<shift2>,... 427 ipmi_si.regshifts=<shift1>,<shift2>,...
418 ipmi_si.slave_addrs=<addr1>,<addr2>,... 428 ipmi_si.slave_addrs=<addr1>,<addr2>,...
429 ipmi_si.force_kipmid=<enable1>,<enable2>,...
419 430
420It works the same as the module parameters of the same names. 431It works the same as the module parameters of the same names.
421 432
@@ -457,12 +468,12 @@ BMCs specified on the smb_addr line will be detected.
457Setting smb_dbg_probe to 1 will enable debugging of the probing and 468Setting smb_dbg_probe to 1 will enable debugging of the probing and
458detection process for BMCs on the SMBusses. 469detection process for BMCs on the SMBusses.
459 470
460Discovering the IPMI compilant BMC on the SMBus can cause devices 471Discovering the IPMI compliant BMC on the SMBus can cause devices
461on the I2C bus to fail. The SMBus driver writes a "Get Device ID" IPMI 472on the I2C bus to fail. The SMBus driver writes a "Get Device ID" IPMI
462message as a block write to the I2C bus and waits for a response. 473message as a block write to the I2C bus and waits for a response.
463This action can be detrimental to some I2C devices. It is highly recommended 474This action can be detrimental to some I2C devices. It is highly recommended
464that the known I2c address be given to the SMBus driver in the smb_addr 475that the known I2c address be given to the SMBus driver in the smb_addr
465parameter. The default adrress range will not be used when a smb_addr 476parameter. The default address range will not be used when a smb_addr
466parameter is provided. 477parameter is provided.
467 478
468When compiled into the kernel, the addresses can be specified on the 479When compiled into the kernel, the addresses can be specified on the
diff --git a/Documentation/MSI-HOWTO.txt b/Documentation/MSI-HOWTO.txt
index 3ec6c720b016..c70306abb7b2 100644
--- a/Documentation/MSI-HOWTO.txt
+++ b/Documentation/MSI-HOWTO.txt
@@ -267,7 +267,7 @@ y = The number of MSI capable devices populated in the system.
267 vector reserved to avoid the case where some MSI-X capable 267 vector reserved to avoid the case where some MSI-X capable
268 drivers may attempt to claim all available vector resources. 268 drivers may attempt to claim all available vector resources.
269 269
270z = The number of MSI-X capable devices pupulated in the system. 270z = The number of MSI-X capable devices populated in the system.
271 This policy ensures that maximum (x - y) is distributed 271 This policy ensures that maximum (x - y) is distributed
272 evenly among MSI-X capable devices. 272 evenly among MSI-X capable devices.
273 273
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index 1d50cf0c905e..f4dffadbcb00 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -221,3 +221,41 @@ over a rather long period of time, but improvements are always welcome!
221 disable irq on a given acquisition of that lock will result in 221 disable irq on a given acquisition of that lock will result in
222 deadlock as soon as the RCU callback happens to interrupt that 222 deadlock as soon as the RCU callback happens to interrupt that
223 acquisition's critical section. 223 acquisition's critical section.
224
22513. SRCU (srcu_read_lock(), srcu_read_unlock(), and synchronize_srcu())
226 may only be invoked from process context. Unlike other forms of
227 RCU, it -is- permissible to block in an SRCU read-side critical
228 section (demarked by srcu_read_lock() and srcu_read_unlock()),
229 hence the "SRCU": "sleepable RCU". Please note that if you
230 don't need to sleep in read-side critical sections, you should
231 be using RCU rather than SRCU, because RCU is almost always
232 faster and easier to use than is SRCU.
233
234 Also unlike other forms of RCU, explicit initialization
235 and cleanup is required via init_srcu_struct() and
236 cleanup_srcu_struct(). These are passed a "struct srcu_struct"
237 that defines the scope of a given SRCU domain. Once initialized,
238 the srcu_struct is passed to srcu_read_lock(), srcu_read_unlock()
239 and synchronize_srcu(). A given synchronize_srcu() waits only
240 for SRCU read-side critical sections governed by srcu_read_lock()
241 and srcu_read_unlock() calls that have been passd the same
242 srcu_struct. This property is what makes sleeping read-side
243 critical sections tolerable -- a given subsystem delays only
244 its own updates, not those of other subsystems using SRCU.
245 Therefore, SRCU is less prone to OOM the system than RCU would
246 be if RCU's read-side critical sections were permitted to
247 sleep.
248
249 The ability to sleep in read-side critical sections does not
250 come for free. First, corresponding srcu_read_lock() and
251 srcu_read_unlock() calls must be passed the same srcu_struct.
252 Second, grace-period-detection overhead is amortized only
253 over those updates sharing a given srcu_struct, rather than
254 being globally amortized as they are for other forms of RCU.
255 Therefore, SRCU should be used in preference to rw_semaphore
256 only in extremely read-intensive situations, or in situations
257 requiring SRCU's read-side deadlock immunity or low read-side
258 realtime latency.
259
260 Note that, rcu_assign_pointer() and rcu_dereference() relate to
261 SRCU just as they do to other forms of RCU.
diff --git a/Documentation/RCU/rcu.txt b/Documentation/RCU/rcu.txt
index 02e27bf1d365..f84407cba816 100644
--- a/Documentation/RCU/rcu.txt
+++ b/Documentation/RCU/rcu.txt
@@ -45,7 +45,8 @@ o How can I see where RCU is currently used in the Linux kernel?
45 45
46 Search for "rcu_read_lock", "rcu_read_unlock", "call_rcu", 46 Search for "rcu_read_lock", "rcu_read_unlock", "call_rcu",
47 "rcu_read_lock_bh", "rcu_read_unlock_bh", "call_rcu_bh", 47 "rcu_read_lock_bh", "rcu_read_unlock_bh", "call_rcu_bh",
48 "synchronize_rcu", and "synchronize_net". 48 "srcu_read_lock", "srcu_read_unlock", "synchronize_rcu",
49 "synchronize_net", and "synchronize_srcu".
49 50
50o What guidelines should I follow when writing code that uses RCU? 51o What guidelines should I follow when writing code that uses RCU?
51 52
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt
index a4948591607d..25a3c3f7d378 100644
--- a/Documentation/RCU/torture.txt
+++ b/Documentation/RCU/torture.txt
@@ -28,6 +28,15 @@ nreaders This is the number of RCU reading threads supported.
28 To properly exercise RCU implementations with preemptible 28 To properly exercise RCU implementations with preemptible
29 read-side critical sections. 29 read-side critical sections.
30 30
31nfakewriters This is the number of RCU fake writer threads to run. Fake
32 writer threads repeatedly use the synchronous "wait for
33 current readers" function of the interface selected by
34 torture_type, with a delay between calls to allow for various
35 different numbers of writers running in parallel.
36 nfakewriters defaults to 4, which provides enough parallelism
37 to trigger special cases caused by multiple writers, such as
38 the synchronize_srcu() early return optimization.
39
31stat_interval The number of seconds between output of torture 40stat_interval The number of seconds between output of torture
32 statistics (via printk()). Regardless of the interval, 41 statistics (via printk()). Regardless of the interval,
33 statistics are printed when the module is unloaded. 42 statistics are printed when the module is unloaded.
@@ -44,9 +53,12 @@ test_no_idle_hz Whether or not to test the ability of RCU to operate in
44 a kernel that disables the scheduling-clock interrupt to 53 a kernel that disables the scheduling-clock interrupt to
45 idle CPUs. Boolean parameter, "1" to test, "0" otherwise. 54 idle CPUs. Boolean parameter, "1" to test, "0" otherwise.
46 55
47torture_type The type of RCU to test: "rcu" for the rcu_read_lock() 56torture_type The type of RCU to test: "rcu" for the rcu_read_lock() API,
48 API, "rcu_bh" for the rcu_read_lock_bh() API, and "srcu" 57 "rcu_sync" for rcu_read_lock() with synchronous reclamation,
49 for the "srcu_read_lock()" API. 58 "rcu_bh" for the rcu_read_lock_bh() API, "rcu_bh_sync" for
59 rcu_read_lock_bh() with synchronous reclamation, "srcu" for
60 the "srcu_read_lock()" API, and "sched" for the use of
61 preempt_disable() together with synchronize_sched().
50 62
51verbose Enable debug printk()s. Default is disabled. 63verbose Enable debug printk()s. Default is disabled.
52 64
@@ -118,6 +130,21 @@ o "Free-Block Circulation": Shows the number of torture structures
118 as it is only incremented if a torture structure's counter 130 as it is only incremented if a torture structure's counter
119 somehow gets incremented farther than it should. 131 somehow gets incremented farther than it should.
120 132
133Different implementations of RCU can provide implementation-specific
134additional information. For example, SRCU provides the following:
135
136 srcu-torture: rtc: f8cf46a8 ver: 355 tfle: 0 rta: 356 rtaf: 0 rtf: 346 rtmbe: 0
137 srcu-torture: Reader Pipe: 559738 939 0 0 0 0 0 0 0 0 0
138 srcu-torture: Reader Batch: 560434 243 0 0 0 0 0 0 0 0
139 srcu-torture: Free-Block Circulation: 355 354 353 352 351 350 349 348 347 346 0
140 srcu-torture: per-CPU(idx=1): 0(0,1) 1(0,1) 2(0,0) 3(0,1)
141
142The first four lines are similar to those for RCU. The last line shows
143the per-CPU counter state. The numbers in parentheses are the values
144of the "old" and "current" counters for the corresponding CPU. The
145"idx" value maps the "old" and "current" values to the underlying array,
146and is useful for debugging.
147
121 148
122USAGE 149USAGE
123 150
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt
index 318df44259b3..e0d6d99b8f9b 100644
--- a/Documentation/RCU/whatisRCU.txt
+++ b/Documentation/RCU/whatisRCU.txt
@@ -582,7 +582,7 @@ The rcu_read_lock() and rcu_read_unlock() primitive read-acquire
582and release a global reader-writer lock. The synchronize_rcu() 582and release a global reader-writer lock. The synchronize_rcu()
583primitive write-acquires this same lock, then immediately releases 583primitive write-acquires this same lock, then immediately releases
584it. This means that once synchronize_rcu() exits, all RCU read-side 584it. This means that once synchronize_rcu() exits, all RCU read-side
585critical sections that were in progress before synchonize_rcu() was 585critical sections that were in progress before synchronize_rcu() was
586called are guaranteed to have completed -- there is no way that 586called are guaranteed to have completed -- there is no way that
587synchronize_rcu() would have been able to write-acquire the lock 587synchronize_rcu() would have been able to write-acquire the lock
588otherwise. 588otherwise.
@@ -750,7 +750,7 @@ Or, for those who prefer a side-by-side listing:
750 750
751Either way, the differences are quite small. Read-side locking moves 751Either way, the differences are quite small. Read-side locking moves
752to rcu_read_lock() and rcu_read_unlock, update-side locking moves from 752to rcu_read_lock() and rcu_read_unlock, update-side locking moves from
753from a reader-writer lock to a simple spinlock, and a synchronize_rcu() 753a reader-writer lock to a simple spinlock, and a synchronize_rcu()
754precedes the kfree(). 754precedes the kfree().
755 755
756However, there is one potential catch: the read-side and update-side 756However, there is one potential catch: the read-side and update-side
@@ -778,6 +778,8 @@ Markers for RCU read-side critical sections:
778 rcu_read_unlock 778 rcu_read_unlock
779 rcu_read_lock_bh 779 rcu_read_lock_bh
780 rcu_read_unlock_bh 780 rcu_read_unlock_bh
781 srcu_read_lock
782 srcu_read_unlock
781 783
782RCU pointer/list traversal: 784RCU pointer/list traversal:
783 785
@@ -804,6 +806,7 @@ RCU grace period:
804 synchronize_net 806 synchronize_net
805 synchronize_sched 807 synchronize_sched
806 synchronize_rcu 808 synchronize_rcu
809 synchronize_srcu
807 call_rcu 810 call_rcu
808 call_rcu_bh 811 call_rcu_bh
809 812
diff --git a/Documentation/SubmitChecklist b/Documentation/SubmitChecklist
index a10bfb6ecd9f..7ac61f60037a 100644
--- a/Documentation/SubmitChecklist
+++ b/Documentation/SubmitChecklist
@@ -61,3 +61,8 @@ kernel patches.
61 Documentation/kernel-parameters.txt. 61 Documentation/kernel-parameters.txt.
62 62
6318: All new module parameters are documented with MODULE_PARM_DESC() 6318: All new module parameters are documented with MODULE_PARM_DESC()
64
6519: All new userspace interfaces are documented in Documentation/ABI/.
66 See Documentation/ABI/README for more information.
67
6820: Check that it all passes `make headers_check'.
diff --git a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers
index 6bd30fdd0786..58bead05eabb 100644
--- a/Documentation/SubmittingDrivers
+++ b/Documentation/SubmittingDrivers
@@ -59,11 +59,11 @@ Copyright: The copyright owner must agree to use of GPL.
59 are the same person/entity. If not, the name of 59 are the same person/entity. If not, the name of
60 the person/entity authorizing use of GPL should be 60 the person/entity authorizing use of GPL should be
61 listed in case it's necessary to verify the will of 61 listed in case it's necessary to verify the will of
62 the copright owner. 62 the copyright owner.
63 63
64Interfaces: If your driver uses existing interfaces and behaves like 64Interfaces: If your driver uses existing interfaces and behaves like
65 other drivers in the same class it will be much more likely 65 other drivers in the same class it will be much more likely
66 to be accepted than if it invents gratuitous new ones. 66 to be accepted than if it invents gratuitous new ones.
67 If you need to implement a common API over Linux and NT 67 If you need to implement a common API over Linux and NT
68 drivers do it in userspace. 68 drivers do it in userspace.
69 69
@@ -88,7 +88,7 @@ Clarity: It helps if anyone can see how to fix the driver. It helps
88 it will go in the bitbucket. 88 it will go in the bitbucket.
89 89
90Control: In general if there is active maintainance of a driver by 90Control: In general if there is active maintainance of a driver by
91 the author then patches will be redirected to them unless 91 the author then patches will be redirected to them unless
92 they are totally obvious and without need of checking. 92 they are totally obvious and without need of checking.
93 If you want to be the contact and update point for the 93 If you want to be the contact and update point for the
94 driver it is a good idea to state this in the comments, 94 driver it is a good idea to state this in the comments,
@@ -100,7 +100,7 @@ What Criteria Do Not Determine Acceptance
100Vendor: Being the hardware vendor and maintaining the driver is 100Vendor: Being the hardware vendor and maintaining the driver is
101 often a good thing. If there is a stable working driver from 101 often a good thing. If there is a stable working driver from
102 other people already in the tree don't expect 'we are the 102 other people already in the tree don't expect 'we are the
103 vendor' to get your driver chosen. Ideally work with the 103 vendor' to get your driver chosen. Ideally work with the
104 existing driver author to build a single perfect driver. 104 existing driver author to build a single perfect driver.
105 105
106Author: It doesn't matter if a large Linux company wrote the driver, 106Author: It doesn't matter if a large Linux company wrote the driver,
@@ -116,17 +116,13 @@ Linux kernel master tree:
116 ftp.??.kernel.org:/pub/linux/kernel/... 116 ftp.??.kernel.org:/pub/linux/kernel/...
117 ?? == your country code, such as "us", "uk", "fr", etc. 117 ?? == your country code, such as "us", "uk", "fr", etc.
118 118
119Linux kernel mailing list: 119Linux kernel mailing list:
120 linux-kernel@vger.kernel.org 120 linux-kernel@vger.kernel.org
121 [mail majordomo@vger.kernel.org to subscribe] 121 [mail majordomo@vger.kernel.org to subscribe]
122 122
123Linux Device Drivers, Third Edition (covers 2.6.10): 123Linux Device Drivers, Third Edition (covers 2.6.10):
124 http://lwn.net/Kernel/LDD3/ (free version) 124 http://lwn.net/Kernel/LDD3/ (free version)
125 125
126Kernel traffic:
127 Weekly summary of kernel list activity (much easier to read)
128 http://www.kerneltraffic.org/kernel-traffic/
129
130LWN.net: 126LWN.net:
131 Weekly summary of kernel development activity - http://lwn.net/ 127 Weekly summary of kernel development activity - http://lwn.net/
132 2.6 API changes: 128 2.6 API changes:
@@ -145,11 +141,8 @@ KernelNewbies:
145Linux USB project: 141Linux USB project:
146 http://www.linux-usb.org/ 142 http://www.linux-usb.org/
147 143
148How to NOT write kernel driver by arjanv@redhat.com 144How to NOT write kernel driver by Arjan van de Ven:
149 http://people.redhat.com/arjanv/olspaper.pdf 145 http://www.fenrus.org/how-to-not-write-a-device-driver-paper.pdf
150 146
151Kernel Janitor: 147Kernel Janitor:
152 http://janitor.kernelnewbies.org/ 148 http://janitor.kernelnewbies.org/
153
154--
155Last updated on 17 Nov 2005.
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index d42ab4c9e893..302d148c2e18 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -173,15 +173,15 @@ For small patches you may want to CC the Trivial Patch Monkey
173trivial@kernel.org managed by Adrian Bunk; which collects "trivial" 173trivial@kernel.org managed by Adrian Bunk; which collects "trivial"
174patches. Trivial patches must qualify for one of the following rules: 174patches. Trivial patches must qualify for one of the following rules:
175 Spelling fixes in documentation 175 Spelling fixes in documentation
176 Spelling fixes which could break grep(1). 176 Spelling fixes which could break grep(1)
177 Warning fixes (cluttering with useless warnings is bad) 177 Warning fixes (cluttering with useless warnings is bad)
178 Compilation fixes (only if they are actually correct) 178 Compilation fixes (only if they are actually correct)
179 Runtime fixes (only if they actually fix things) 179 Runtime fixes (only if they actually fix things)
180 Removing use of deprecated functions/macros (eg. check_region). 180 Removing use of deprecated functions/macros (eg. check_region)
181 Contact detail and documentation fixes 181 Contact detail and documentation fixes
182 Non-portable code replaced by portable code (even in arch-specific, 182 Non-portable code replaced by portable code (even in arch-specific,
183 since people copy, as long as it's trivial) 183 since people copy, as long as it's trivial)
184 Any fix by the author/maintainer of the file. (ie. patch monkey 184 Any fix by the author/maintainer of the file (ie. patch monkey
185 in re-transmission mode) 185 in re-transmission mode)
186URL: <http://www.kernel.org/pub/linux/kernel/people/bunk/trivial/> 186URL: <http://www.kernel.org/pub/linux/kernel/people/bunk/trivial/>
187 187
@@ -209,6 +209,19 @@ Exception: If your mailer is mangling patches then someone may ask
209you to re-send them using MIME. 209you to re-send them using MIME.
210 210
211 211
212WARNING: Some mailers like Mozilla send your messages with
213---- message header ----
214Content-Type: text/plain; charset=us-ascii; format=flowed
215---- message header ----
216The problem is that "format=flowed" makes some of the mailers
217on receiving side to replace TABs with spaces and do similar
218changes. Thus the patches from you can look corrupted.
219
220To fix this just make your mozilla defaults/pref/mailnews.js file to look like:
221pref("mailnews.send_plaintext_flowed", false); // RFC 2646=======
222pref("mailnews.display.disable_format_flowed_support", true);
223
224
212 225
2137) E-mail size. 2267) E-mail size.
214 227
@@ -245,13 +258,13 @@ updated change.
245It is quite common for Linus to "drop" your patch without comment. 258It is quite common for Linus to "drop" your patch without comment.
246That's the nature of the system. If he drops your patch, it could be 259That's the nature of the system. If he drops your patch, it could be
247due to 260due to
248* Your patch did not apply cleanly to the latest kernel version 261* Your patch did not apply cleanly to the latest kernel version.
249* Your patch was not sufficiently discussed on linux-kernel. 262* Your patch was not sufficiently discussed on linux-kernel.
250* A style issue (see section 2), 263* A style issue (see section 2).
251* An e-mail formatting issue (re-read this section) 264* An e-mail formatting issue (re-read this section).
252* A technical problem with your change 265* A technical problem with your change.
253* He gets tons of e-mail, and yours got lost in the shuffle 266* He gets tons of e-mail, and yours got lost in the shuffle.
254* You are being annoying (See Figure 1) 267* You are being annoying.
255 268
256When in doubt, solicit comments on linux-kernel mailing list. 269When in doubt, solicit comments on linux-kernel mailing list.
257 270
@@ -476,10 +489,10 @@ SECTION 3 - REFERENCES
476Andrew Morton, "The perfect patch" (tpp). 489Andrew Morton, "The perfect patch" (tpp).
477 <http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt> 490 <http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt>
478 491
479Jeff Garzik, "Linux kernel patch submission format." 492Jeff Garzik, "Linux kernel patch submission format".
480 <http://linux.yyz.us/patch-format.html> 493 <http://linux.yyz.us/patch-format.html>
481 494
482Greg Kroah-Hartman "How to piss off a kernel subsystem maintainer". 495Greg Kroah-Hartman, "How to piss off a kernel subsystem maintainer".
483 <http://www.kroah.com/log/2005/03/31/> 496 <http://www.kroah.com/log/2005/03/31/>
484 <http://www.kroah.com/log/2005/07/08/> 497 <http://www.kroah.com/log/2005/07/08/>
485 <http://www.kroah.com/log/2005/10/19/> 498 <http://www.kroah.com/log/2005/10/19/>
@@ -488,9 +501,9 @@ Greg Kroah-Hartman "How to piss off a kernel subsystem maintainer".
488NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people! 501NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people!
489 <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2> 502 <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2>
490 503
491Kernel Documentation/CodingStyle 504Kernel Documentation/CodingStyle:
492 <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle> 505 <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle>
493 506
494Linus Torvald's mail on the canonical patch format: 507Linus Torvalds's mail on the canonical patch format:
495 <http://lkml.org/lkml/2005/4/7/183> 508 <http://lkml.org/lkml/2005/4/7/183>
496-- 509--
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
index 795ca3911cc5..b11792abd6b6 100644
--- a/Documentation/accounting/getdelays.c
+++ b/Documentation/accounting/getdelays.c
@@ -285,7 +285,7 @@ int main(int argc, char *argv[])
285 if (maskset) { 285 if (maskset) {
286 rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET, 286 rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
287 TASKSTATS_CMD_ATTR_REGISTER_CPUMASK, 287 TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
288 &cpumask, sizeof(cpumask)); 288 &cpumask, strlen(cpumask) + 1);
289 PRINTF("Sent register cpumask, retval %d\n", rc); 289 PRINTF("Sent register cpumask, retval %d\n", rc);
290 if (rc < 0) { 290 if (rc < 0) {
291 printf("error sending register cpumask\n"); 291 printf("error sending register cpumask\n");
@@ -315,7 +315,8 @@ int main(int argc, char *argv[])
315 } 315 }
316 if (msg.n.nlmsg_type == NLMSG_ERROR || 316 if (msg.n.nlmsg_type == NLMSG_ERROR ||
317 !NLMSG_OK((&msg.n), rep_len)) { 317 !NLMSG_OK((&msg.n), rep_len)) {
318 printf("fatal reply error, errno %d\n", errno); 318 struct nlmsgerr *err = NLMSG_DATA(&msg);
319 printf("fatal reply error, errno %d\n", err->error);
319 goto done; 320 goto done;
320 } 321 }
321 322
@@ -383,7 +384,7 @@ done:
383 if (maskset) { 384 if (maskset) {
384 rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET, 385 rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
385 TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK, 386 TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
386 &cpumask, sizeof(cpumask)); 387 &cpumask, strlen(cpumask) + 1);
387 printf("Sent deregister mask, retval %d\n", rc); 388 printf("Sent deregister mask, retval %d\n", rc);
388 if (rc < 0) 389 if (rc < 0)
389 err(rc, "error sending deregister cpumask\n"); 390 err(rc, "error sending deregister cpumask\n");
diff --git a/Documentation/accounting/taskstats-struct.txt b/Documentation/accounting/taskstats-struct.txt
new file mode 100644
index 000000000000..661c797eaf79
--- /dev/null
+++ b/Documentation/accounting/taskstats-struct.txt
@@ -0,0 +1,161 @@
1The struct taskstats
2--------------------
3
4This document contains an explanation of the struct taskstats fields.
5
6There are three different groups of fields in the struct taskstats:
7
81) Common and basic accounting fields
9 If CONFIG_TASKSTATS is set, the taskstats inteface is enabled and
10 the common fields and basic accounting fields are collected for
11 delivery at do_exit() of a task.
122) Delay accounting fields
13 These fields are placed between
14 /* Delay accounting fields start */
15 and
16 /* Delay accounting fields end */
17 Their values are collected if CONFIG_TASK_DELAY_ACCT is set.
183) Extended accounting fields
19 These fields are placed between
20 /* Extended accounting fields start */
21 and
22 /* Extended accounting fields end */
23 Their values are collected if CONFIG_TASK_XACCT is set.
24
25Future extension should add fields to the end of the taskstats struct, and
26should not change the relative position of each field within the struct.
27
28
29struct taskstats {
30
311) Common and basic accounting fields:
32 /* The version number of this struct. This field is always set to
33 * TAKSTATS_VERSION, which is defined in <linux/taskstats.h>.
34 * Each time the struct is changed, the value should be incremented.
35 */
36 __u16 version;
37
38 /* The exit code of a task. */
39 __u32 ac_exitcode; /* Exit status */
40
41 /* The accounting flags of a task as defined in <linux/acct.h>
42 * Defined values are AFORK, ASU, ACOMPAT, ACORE, and AXSIG.
43 */
44 __u8 ac_flag; /* Record flags */
45
46 /* The value of task_nice() of a task. */
47 __u8 ac_nice; /* task_nice */
48
49 /* The name of the command that started this task. */
50 char ac_comm[TS_COMM_LEN]; /* Command name */
51
52 /* The scheduling discipline as set in task->policy field. */
53 __u8 ac_sched; /* Scheduling discipline */
54
55 __u8 ac_pad[3];
56 __u32 ac_uid; /* User ID */
57 __u32 ac_gid; /* Group ID */
58 __u32 ac_pid; /* Process ID */
59 __u32 ac_ppid; /* Parent process ID */
60
61 /* The time when a task begins, in [secs] since 1970. */
62 __u32 ac_btime; /* Begin time [sec since 1970] */
63
64 /* The elapsed time of a task, in [usec]. */
65 __u64 ac_etime; /* Elapsed time [usec] */
66
67 /* The user CPU time of a task, in [usec]. */
68 __u64 ac_utime; /* User CPU time [usec] */
69
70 /* The system CPU time of a task, in [usec]. */
71 __u64 ac_stime; /* System CPU time [usec] */
72
73 /* The minor page fault count of a task, as set in task->min_flt. */
74 __u64 ac_minflt; /* Minor Page Fault Count */
75
76 /* The major page fault count of a task, as set in task->maj_flt. */
77 __u64 ac_majflt; /* Major Page Fault Count */
78
79
802) Delay accounting fields:
81 /* Delay accounting fields start
82 *
83 * All values, until the comment "Delay accounting fields end" are
84 * available only if delay accounting is enabled, even though the last
85 * few fields are not delays
86 *
87 * xxx_count is the number of delay values recorded
88 * xxx_delay_total is the corresponding cumulative delay in nanoseconds
89 *
90 * xxx_delay_total wraps around to zero on overflow
91 * xxx_count incremented regardless of overflow
92 */
93
94 /* Delay waiting for cpu, while runnable
95 * count, delay_total NOT updated atomically
96 */
97 __u64 cpu_count;
98 __u64 cpu_delay_total;
99
100 /* Following four fields atomically updated using task->delays->lock */
101
102 /* Delay waiting for synchronous block I/O to complete
103 * does not account for delays in I/O submission
104 */
105 __u64 blkio_count;
106 __u64 blkio_delay_total;
107
108 /* Delay waiting for page fault I/O (swap in only) */
109 __u64 swapin_count;
110 __u64 swapin_delay_total;
111
112 /* cpu "wall-clock" running time
113 * On some architectures, value will adjust for cpu time stolen
114 * from the kernel in involuntary waits due to virtualization.
115 * Value is cumulative, in nanoseconds, without a corresponding count
116 * and wraps around to zero silently on overflow
117 */
118 __u64 cpu_run_real_total;
119
120 /* cpu "virtual" running time
121 * Uses time intervals seen by the kernel i.e. no adjustment
122 * for kernel's involuntary waits due to virtualization.
123 * Value is cumulative, in nanoseconds, without a corresponding count
124 * and wraps around to zero silently on overflow
125 */
126 __u64 cpu_run_virtual_total;
127 /* Delay accounting fields end */
128 /* version 1 ends here */
129
130
1313) Extended accounting fields
132 /* Extended accounting fields start */
133
134 /* Accumulated RSS usage in duration of a task, in MBytes-usecs.
135 * The current rss usage is added to this counter every time
136 * a tick is charged to a task's system time. So, at the end we
137 * will have memory usage multiplied by system time. Thus an
138 * average usage per system time unit can be calculated.
139 */
140 __u64 coremem; /* accumulated RSS usage in MB-usec */
141
142 /* Accumulated virtual memory usage in duration of a task.
143 * Same as acct_rss_mem1 above except that we keep track of VM usage.
144 */
145 __u64 virtmem; /* accumulated VM usage in MB-usec */
146
147 /* High watermark of RSS usage in duration of a task, in KBytes. */
148 __u64 hiwater_rss; /* High-watermark of RSS usage */
149
150 /* High watermark of VM usage in duration of a task, in KBytes. */
151 __u64 hiwater_vm; /* High-water virtual memory usage */
152
153 /* The following four fields are I/O statistics of a task. */
154 __u64 read_char; /* bytes read */
155 __u64 write_char; /* bytes written */
156 __u64 read_syscalls; /* read syscalls */
157 __u64 write_syscalls; /* write syscalls */
158
159 /* Extended accounting fields end */
160
161}
diff --git a/Documentation/aoe/todo.txt b/Documentation/aoe/todo.txt
index 7fee1e1165bc..c09dfad4aed8 100644
--- a/Documentation/aoe/todo.txt
+++ b/Documentation/aoe/todo.txt
@@ -7,7 +7,7 @@ not been observed, but it would be nice to eliminate any potential for
7deadlock under memory pressure. 7deadlock under memory pressure.
8 8
9Because ATA over Ethernet is not fragmented by the kernel's IP code, 9Because ATA over Ethernet is not fragmented by the kernel's IP code,
10the destructore member of the struct sk_buff is available to the aoe 10the destructor member of the struct sk_buff is available to the aoe
11driver. By using a mempool for allocating all but the first few 11driver. By using a mempool for allocating all but the first few
12sk_buffs, and by registering a destructor, we should be able to 12sk_buffs, and by registering a destructor, we should be able to
13efficiently allocate sk_buffs without introducing any potential for 13efficiently allocate sk_buffs without introducing any potential for
diff --git a/Documentation/arm/SA1100/serial_UART b/Documentation/arm/SA1100/serial_UART
index aea2e91ca0ef..a63966f1d083 100644
--- a/Documentation/arm/SA1100/serial_UART
+++ b/Documentation/arm/SA1100/serial_UART
@@ -24,8 +24,8 @@ The SA1100 serial port had its major/minor numbers officially assigned:
24> 7 = /dev/cusa2 Callout device for ttySA2 24> 7 = /dev/cusa2 Callout device for ttySA2
25> 25>
26 26
27If you're not using devfs, you must create those inodes in /dev 27You must create those inodes in /dev on the root filesystem used
28on the root filesystem used by your SA1100-based device: 28by your SA1100-based device:
29 29
30 mknod ttySA0 c 204 5 30 mknod ttySA0 c 204 5
31 mknod ttySA1 c 204 6 31 mknod ttySA1 c 204 6
diff --git a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt
index 000e3d7a78b2..26422f0f9080 100644
--- a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt
+++ b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt
@@ -38,7 +38,7 @@ MTD
38--- 38---
39 39
40 The NAND and NOR support has been merged from the linux-mtd project. 40 The NAND and NOR support has been merged from the linux-mtd project.
41 Any prolbems, see http://www.linux-mtd.infradead.org/ for more 41 Any problems, see http://www.linux-mtd.infradead.org/ for more
42 information or up-to-date versions of linux-mtd. 42 information or up-to-date versions of linux-mtd.
43 43
44 44
diff --git a/Documentation/arm/Samsung-S3C24XX/GPIO.txt b/Documentation/arm/Samsung-S3C24XX/GPIO.txt
index 0822764ec270..8caea8c237ee 100644
--- a/Documentation/arm/Samsung-S3C24XX/GPIO.txt
+++ b/Documentation/arm/Samsung-S3C24XX/GPIO.txt
@@ -24,7 +24,7 @@ Headers
24 header include/asm-arm/arch-s3c2410/hardware.h which can be 24 header include/asm-arm/arch-s3c2410/hardware.h which can be
25 included by #include <asm/arch/hardware.h> 25 included by #include <asm/arch/hardware.h>
26 26
27 A useful ammount of documentation can be found in the hardware 27 A useful amount of documentation can be found in the hardware
28 header on how the GPIO functions (and others) work. 28 header on how the GPIO functions (and others) work.
29 29
30 Whilst a number of these functions do make some checks on what 30 Whilst a number of these functions do make some checks on what
diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt
index 3e46d2a31158..dda7ecdde87b 100644
--- a/Documentation/arm/Samsung-S3C24XX/Overview.txt
+++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt
@@ -80,7 +80,7 @@ Machines
80Adding New Machines 80Adding New Machines
81------------------- 81-------------------
82 82
83 The archicture has been designed to support as many machines as can 83 The architecture has been designed to support as many machines as can
84 be configured for it in one kernel build, and any future additions 84 be configured for it in one kernel build, and any future additions
85 should keep this in mind before altering items outside of their own 85 should keep this in mind before altering items outside of their own
86 machine files. 86 machine files.
diff --git a/Documentation/arm/Samsung-S3C24XX/S3C2412.txt b/Documentation/arm/Samsung-S3C24XX/S3C2412.txt
index cb82a7fc7901..295d971a15ed 100644
--- a/Documentation/arm/Samsung-S3C24XX/S3C2412.txt
+++ b/Documentation/arm/Samsung-S3C24XX/S3C2412.txt
@@ -80,7 +80,7 @@ RTC
80Watchdog 80Watchdog
81-------- 81--------
82 82
83 The watchdog harware is the same as the S3C2410, and is supported by 83 The watchdog hardware is the same as the S3C2410, and is supported by
84 the s3c2410_wdt driver. 84 the s3c2410_wdt driver.
85 85
86 86
diff --git a/Documentation/block/as-iosched.txt b/Documentation/block/as-iosched.txt
index 6f47332c883d..e2a66f8143c5 100644
--- a/Documentation/block/as-iosched.txt
+++ b/Documentation/block/as-iosched.txt
@@ -99,8 +99,8 @@ contrast, many write requests may be dispatched to the disk controller
99at a time during a write batch. It is this characteristic that can make 99at a time during a write batch. It is this characteristic that can make
100the anticipatory scheduler perform anomalously with controllers supporting 100the anticipatory scheduler perform anomalously with controllers supporting
101TCQ, or with hardware striped RAID devices. Setting the antic_expire 101TCQ, or with hardware striped RAID devices. Setting the antic_expire
102queue paramter (see below) to zero disables this behavior, and the anticipatory 102queue parameter (see below) to zero disables this behavior, and the
103scheduler behaves essentially like the deadline scheduler. 103anticipatory scheduler behaves essentially like the deadline scheduler.
104 104
105When read anticipation is enabled (antic_expire is not zero), reads 105When read anticipation is enabled (antic_expire is not zero), reads
106are dispatched to the disk controller one at a time. 106are dispatched to the disk controller one at a time.
diff --git a/Documentation/block/barrier.txt b/Documentation/block/barrier.txt
index 03971518b222..a272c3db8094 100644
--- a/Documentation/block/barrier.txt
+++ b/Documentation/block/barrier.txt
@@ -25,7 +25,7 @@ of the following three ways.
25i. For devices which have queue depth greater than 1 (TCQ devices) and 25i. For devices which have queue depth greater than 1 (TCQ devices) and
26support ordered tags, block layer can just issue the barrier as an 26support ordered tags, block layer can just issue the barrier as an
27ordered request and the lower level driver, controller and drive 27ordered request and the lower level driver, controller and drive
28itself are responsible for making sure that the ordering contraint is 28itself are responsible for making sure that the ordering constraint is
29met. Most modern SCSI controllers/drives should support this. 29met. Most modern SCSI controllers/drives should support this.
30 30
31NOTE: SCSI ordered tag isn't currently used due to limitation in the 31NOTE: SCSI ordered tag isn't currently used due to limitation in the
@@ -42,7 +42,7 @@ iii. Devices which have queue depth of 1. This is a degenerate case
42of ii. Just keeping issue order suffices. Ancient SCSI 42of ii. Just keeping issue order suffices. Ancient SCSI
43controllers/drives and IDE drives are in this category. 43controllers/drives and IDE drives are in this category.
44 44
452. Forced flushing to physcial medium 452. Forced flushing to physical medium
46 46
47Again, if you're not gonna do synchronization with disk drives (dang, 47Again, if you're not gonna do synchronization with disk drives (dang,
48it sounds even more appealing now!), the reason you use I/O barriers 48it sounds even more appealing now!), the reason you use I/O barriers
@@ -56,7 +56,7 @@ There are four cases,
56i. No write-back cache. Keeping requests ordered is enough. 56i. No write-back cache. Keeping requests ordered is enough.
57 57
58ii. Write-back cache but no flush operation. There's no way to 58ii. Write-back cache but no flush operation. There's no way to
59gurantee physical-medium commit order. This kind of devices can't to 59guarantee physical-medium commit order. This kind of devices can't to
60I/O barriers. 60I/O barriers.
61 61
62iii. Write-back cache and flush operation but no FUA (forced unit 62iii. Write-back cache and flush operation but no FUA (forced unit
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index f989a9e839b4..34bf8f60d8f8 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -135,7 +135,7 @@ Some new queue property settings:
135 Sets two variables that limit the size of the request. 135 Sets two variables that limit the size of the request.
136 136
137 - The request queue's max_sectors, which is a soft size in 137 - The request queue's max_sectors, which is a soft size in
138 in units of 512 byte sectors, and could be dynamically varied 138 units of 512 byte sectors, and could be dynamically varied
139 by the core kernel. 139 by the core kernel.
140 140
141 - The request queue's max_hw_sectors, which is a hard limit 141 - The request queue's max_hw_sectors, which is a hard limit
@@ -783,7 +783,7 @@ all the outstanding requests. There's a third helper to do that:
783 783
784 blk_queue_invalidate_tags(request_queue_t *q) 784 blk_queue_invalidate_tags(request_queue_t *q)
785 785
786 Clear the internal block tag queue and readd all the pending requests 786 Clear the internal block tag queue and re-add all the pending requests
787 to the request queue. The driver will receive them again on the 787 to the request queue. The driver will receive them again on the
788 next request_fn run, just like it did the first time it encountered 788 next request_fn run, just like it did the first time it encountered
789 them. 789 them.
@@ -890,7 +890,7 @@ Aside:
890 890
891 Kvec i/o: 891 Kvec i/o:
892 892
893 Ben LaHaise's aio code uses a slighly different structure instead 893 Ben LaHaise's aio code uses a slightly different structure instead
894 of kiobufs, called a kvec_cb. This contains an array of <page, offset, len> 894 of kiobufs, called a kvec_cb. This contains an array of <page, offset, len>
895 tuples (very much like the networking code), together with a callback function 895 tuples (very much like the networking code), together with a callback function
896 and data pointer. This is embedded into a brw_cb structure when passed 896 and data pointer. This is embedded into a brw_cb structure when passed
@@ -988,7 +988,7 @@ elevator_exit_fn Allocate and free any elevator specific storage
988 for a queue. 988 for a queue.
989 989
9904.2 Request flows seen by I/O schedulers 9904.2 Request flows seen by I/O schedulers
991All requests seens by I/O schedulers strictly follow one of the following three 991All requests seen by I/O schedulers strictly follow one of the following three
992flows. 992flows.
993 993
994 set_req_fn -> 994 set_req_fn ->
@@ -1203,6 +1203,6 @@ temporarily map a bio into the virtual address space.
1203and Linus' comments - Jan 2001) 1203and Linus' comments - Jan 2001)
12049.2 Discussions about kiobuf and bh design on lkml between sct, linus, alan 12049.2 Discussions about kiobuf and bh design on lkml between sct, linus, alan
1205et al - Feb-March 2001 (many of the initial thoughts that led to bio were 1205et al - Feb-March 2001 (many of the initial thoughts that led to bio were
1206brought up in this discusion thread) 1206brought up in this discussion thread)
12079.3 Discussions on mempool on lkml - Dec 2001. 12079.3 Discussions on mempool on lkml - Dec 2001.
1208 1208
diff --git a/Documentation/block/deadline-iosched.txt b/Documentation/block/deadline-iosched.txt
index c918b3a6022d..be08ffd1e9b8 100644
--- a/Documentation/block/deadline-iosched.txt
+++ b/Documentation/block/deadline-iosched.txt
@@ -23,11 +23,11 @@ you can do so by typing:
23read_expire (in ms) 23read_expire (in ms)
24----------- 24-----------
25 25
26The goal of the deadline io scheduler is to attempt to guarentee a start 26The goal of the deadline io scheduler is to attempt to guarantee a start
27service time for a request. As we focus mainly on read latencies, this is 27service time for a request. As we focus mainly on read latencies, this is
28tunable. When a read request first enters the io scheduler, it is assigned 28tunable. When a read request first enters the io scheduler, it is assigned
29a deadline that is the current time + the read_expire value in units of 29a deadline that is the current time + the read_expire value in units of
30miliseconds. 30milliseconds.
31 31
32 32
33write_expire (in ms) 33write_expire (in ms)
diff --git a/Documentation/cciss.txt b/Documentation/cciss.txt
index 9c629ffa0e58..f74affe5c829 100644
--- a/Documentation/cciss.txt
+++ b/Documentation/cciss.txt
@@ -80,7 +80,7 @@ the /proc filesystem entry which the "block" side of the driver creates as
80the SCSI core may not yet be initialized (because the driver is a block 80the SCSI core may not yet be initialized (because the driver is a block
81driver) and attempting to register it with the SCSI core in such a case 81driver) and attempting to register it with the SCSI core in such a case
82would cause a hang. This is best done via an initialization script 82would cause a hang. This is best done via an initialization script
83(typically in /etc/init.d, but could vary depending on distibution). 83(typically in /etc/init.d, but could vary depending on distribution).
84For example: 84For example:
85 85
86 for x in /proc/driver/cciss/cciss[0-9]* 86 for x in /proc/driver/cciss/cciss[0-9]*
@@ -152,7 +152,7 @@ side during the SCSI error recovery process, the cciss driver only
152implements the first two of these actions, aborting the command, and 152implements the first two of these actions, aborting the command, and
153resetting the device. Additionally, most tape drives will not oblige 153resetting the device. Additionally, most tape drives will not oblige
154in aborting commands, and sometimes it appears they will not even 154in aborting commands, and sometimes it appears they will not even
155obey a reset coommand, though in most circumstances they will. In 155obey a reset command, though in most circumstances they will. In
156the case that the command cannot be aborted and the device cannot be 156the case that the command cannot be aborted and the device cannot be
157reset, the device will be set offline. 157reset, the device will be set offline.
158 158
diff --git a/Documentation/computone.txt b/Documentation/computone.txt
index b1cf59b84d97..5e2a0c76bfa0 100644
--- a/Documentation/computone.txt
+++ b/Documentation/computone.txt
@@ -199,30 +199,6 @@ boxes this will leave gaps in the sequence of device names. ip2mkdev uses
199Linux tty naming conventions: ttyF0 - ttyF255 for normal devices, and 199Linux tty naming conventions: ttyF0 - ttyF255 for normal devices, and
200cuf0 - cuf255 for callout devices. 200cuf0 - cuf255 for callout devices.
201 201
202If you are using devfs, existing devices are automatically created within
203the devfs name space. Normal devices will be tts/F0 - tts/F255 and callout
204devices will be cua/F0 - cua/F255. With devfs installed, ip2mkdev will
205create symbolic links in /dev from the old conventional names to the newer
206devfs names as follows:
207
208 /dev/ip2ipl[n] -> /dev/ip2/ipl[n] n = 0 - 3
209 /dev/ip2stat[n] -> /dev/ip2/stat[n] n = 0 - 3
210 /dev/ttyF[n] -> /dev/tts/F[n] n = 0 - 255
211 /dev/cuf[n] -> /dev/cua/F[n] n = 0 - 255
212
213Only devices for existing ports and boards will be created.
214
215IMPORTANT NOTE: The naming convention used for devfs by this driver
216was changed from 1.2.12 to 1.2.13. The old naming convention was to
217use ttf/%d for the tty device and cuf/%d for the cua device. That
218has been changed to conform to an agreed-upon standard of placing
219all the tty devices under tts. The device names are now tts/F%d for
220the tty device and cua/F%d for the cua devices. If you were using
221the older devfs names, you must update for the newer convention.
222
223You do not need to run ip2mkdev if you are using devfs and only want to
224use the devfs native device names.
225
226 202
2274. USING THE DRIVERS 2034. USING THE DRIVERS
228 204
@@ -256,57 +232,15 @@ cut out and run as "ip2mkdev" to create the necessary device files. To
256use the ip2mkdev script, you must have procfs enabled and the proc file 232use the ip2mkdev script, you must have procfs enabled and the proc file
257system mounted on /proc. 233system mounted on /proc.
258 234
259You do not need to run ip2mkdev if you are using devfs and only want to
260use the devfs native device names.
261
262
2636. DEVFS
264
265DEVFS is the DEVice File System available as an add on package for the
2662.2.x kernels and available as a configuration option in 2.3.46 and higher.
267Devfs allows for the automatic creation and management of device names
268under control of the device drivers themselves. The Devfs namespace is
269hierarchical and reduces the clutter present in the normal flat /dev
270namespace. Devfs names and conventional device names may be intermixed.
271A userspace daemon, devfsd, exists to allow for automatic creation and
272management of symbolic links from the devfs name space to the conventional
273names. More details on devfs can be found on the DEVFS home site at
274<http://www.atnf.csiro.au/~rgooch/linux/> or in the file kernel
275documentation files, .../linux/Documentation/filesystems/devfs/README.
276
277If you are using devfs, existing devices are automatically created within
278the devfs name space. Normal devices will be tts/F0 - tts/F255 and callout
279devices will be cua/F0 - cua/F255. With devfs installed, ip2mkdev will
280create symbolic links in /dev from the old conventional names to the newer
281devfs names as follows:
282
283 /dev/ip2ipl[n] -> /dev/ip2/ipl[n] n = 0 - 3
284 /dev/ip2stat[n] -> /dev/ip2/stat[n] n = 0 - 3
285 /dev/ttyF[n] -> /dev/tts/F[n] n = 0 - 255
286 /dev/cuf[n] -> /dev/cua/F[n] n = 0 - 255
287
288Only devices for existing ports and boards will be created.
289
290IMPORTANT NOTE: The naming convention used for devfs by this driver
291was changed from 1.2.12 to 1.2.13. The old naming convention was to
292use ttf/%d for the tty device and cuf/%d for the cua device. That
293has been changed to conform to an agreed-upon standard of placing
294all the tty devices under tts. The device names are now tts/F%d for
295the tty device and cua/F%d for the cua devices. If you were using
296the older devfs names, you must update for the newer convention.
297
298You do not need to run ip2mkdev if you are using devfs and only want to
299use the devfs native device names.
300
301 235
3027. NOTES 2366. NOTES
303 237
304This is a release version of the driver, but it is impossible to test it 238This is a release version of the driver, but it is impossible to test it
305in all configurations of Linux. If there is any anomalous behaviour that 239in all configurations of Linux. If there is any anomalous behaviour that
306does not match the standard serial port's behaviour please let us know. 240does not match the standard serial port's behaviour please let us know.
307 241
308 242
3098. ip2mkdev shell script 2437. ip2mkdev shell script
310 244
311Previously, this script was simply attached here. It is now attached as a 245Previously, this script was simply attached here. It is now attached as a
312shar archive to make it easier to extract the script from the documentation. 246shar archive to make it easier to extract the script from the documentation.
diff --git a/Documentation/cpu-freq/cpufreq-stats.txt b/Documentation/cpu-freq/cpufreq-stats.txt
index 6a82948ff4bd..53d62c1e1c94 100644
--- a/Documentation/cpu-freq/cpufreq-stats.txt
+++ b/Documentation/cpu-freq/cpufreq-stats.txt
@@ -1,5 +1,5 @@
1 1
2 CPU frequency and voltage scaling statictics in the Linux(TM) kernel 2 CPU frequency and voltage scaling statistics in the Linux(TM) kernel
3 3
4 4
5 L i n u x c p u f r e q - s t a t s d r i v e r 5 L i n u x c p u f r e q - s t a t s d r i v e r
@@ -18,8 +18,8 @@ Contents
181. Introduction 181. Introduction
19 19
20cpufreq-stats is a driver that provices CPU frequency statistics for each CPU. 20cpufreq-stats is a driver that provices CPU frequency statistics for each CPU.
21This statistics is provided in /sysfs as a bunch of read_only interfaces. This 21These statistics are provided in /sysfs as a bunch of read_only interfaces. This
22interface (when configured) will appear in a seperate directory under cpufreq 22interface (when configured) will appear in a separate directory under cpufreq
23in /sysfs (<sysfs root>/devices/system/cpu/cpuX/cpufreq/stats/) for each CPU. 23in /sysfs (<sysfs root>/devices/system/cpu/cpuX/cpufreq/stats/) for each CPU.
24Various statistics will form read_only files under this directory. 24Various statistics will form read_only files under this directory.
25 25
@@ -53,7 +53,7 @@ drwxr-xr-x 3 root root 0 May 14 15:58 ..
53This gives the amount of time spent in each of the frequencies supported by 53This gives the amount of time spent in each of the frequencies supported by
54this CPU. The cat output will have "<frequency> <time>" pair in each line, which 54this CPU. The cat output will have "<frequency> <time>" pair in each line, which
55will mean this CPU spent <time> usertime units of time at <frequency>. Output 55will mean this CPU spent <time> usertime units of time at <frequency>. Output
56will have one line for each of the supported freuencies. usertime units here 56will have one line for each of the supported frequencies. usertime units here
57is 10mS (similar to other time exported in /proc). 57is 10mS (similar to other time exported in /proc).
58 58
59-------------------------------------------------------------------------------- 59--------------------------------------------------------------------------------
@@ -115,7 +115,7 @@ basic statistics which includes time_in_state and total_trans.
115 115
116"CPU frequency translation statistics details" (CONFIG_CPU_FREQ_STAT_DETAILS) 116"CPU frequency translation statistics details" (CONFIG_CPU_FREQ_STAT_DETAILS)
117provides fine grained cpufreq stats by trans_table. The reason for having a 117provides fine grained cpufreq stats by trans_table. The reason for having a
118seperate config option for trans_table is: 118separate config option for trans_table is:
119- trans_table goes against the traditional /sysfs rule of one value per 119- trans_table goes against the traditional /sysfs rule of one value per
120 interface. It provides a whole bunch of value in a 2 dimensional matrix 120 interface. It provides a whole bunch of value in a 2 dimensional matrix
121 form. 121 form.
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt
index f4b8dc4237e6..6a9c55bd556b 100644
--- a/Documentation/cpu-freq/governors.txt
+++ b/Documentation/cpu-freq/governors.txt
@@ -57,7 +57,7 @@ selected for each specific use.
57 57
58Basically, it's the following flow graph: 58Basically, it's the following flow graph:
59 59
60CPU can be set to switch independetly | CPU can only be set 60CPU can be set to switch independently | CPU can only be set
61 within specific "limits" | to specific frequencies 61 within specific "limits" | to specific frequencies
62 62
63 "CPUfreq policy" 63 "CPUfreq policy"
@@ -109,7 +109,7 @@ directory.
1092.4 Ondemand 1092.4 Ondemand
110------------ 110------------
111 111
112The CPUfreq govenor "ondemand" sets the CPU depending on the 112The CPUfreq governor "ondemand" sets the CPU depending on the
113current usage. To do this the CPU must have the capability to 113current usage. To do this the CPU must have the capability to
114switch the frequency very quickly. There are a number of sysfs file 114switch the frequency very quickly. There are a number of sysfs file
115accessible parameters: 115accessible parameters:
@@ -137,11 +137,11 @@ have to be made in a row before the CPU frequency is actually lower.
137If set to '1' then the frequency decreases as quickly as it increases, 137If set to '1' then the frequency decreases as quickly as it increases,
138if set to '2' it decreases at half the rate of the increase. 138if set to '2' it decreases at half the rate of the increase.
139 139
140ignore_nice_load: this parameter takes a value of '0' or '1', when set 140ignore_nice_load: this parameter takes a value of '0' or '1'. When
141to '0' (its default) then all processes are counted towards towards the 141set to '0' (its default), all processes are counted towards the
142'cpu utilisation' value. When set to '1' then processes that are 142'cpu utilisation' value. When set to '1', the processes that are
143run with a 'nice' value will not count (and thus be ignored) in the 143run with a 'nice' value will not count (and thus be ignored) in the
144overal usage calculation. This is useful if you are running a CPU 144overall usage calculation. This is useful if you are running a CPU
145intensive calculation on your laptop that you do not care how long it 145intensive calculation on your laptop that you do not care how long it
146takes to complete as you can 'nice' it and prevent it from taking part 146takes to complete as you can 'nice' it and prevent it from taking part
147in the deciding process of whether to increase your CPU frequency. 147in the deciding process of whether to increase your CPU frequency.
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt
index 76b44290c154..842f0d1ab216 100644
--- a/Documentation/cpusets.txt
+++ b/Documentation/cpusets.txt
@@ -217,11 +217,11 @@ exclusive cpuset. Also, the use of a Linux virtual file system (vfs)
217to represent the cpuset hierarchy provides for a familiar permission 217to represent the cpuset hierarchy provides for a familiar permission
218and name space for cpusets, with a minimum of additional kernel code. 218and name space for cpusets, with a minimum of additional kernel code.
219 219
220The cpus file in the root (top_cpuset) cpuset is read-only. 220The cpus and mems files in the root (top_cpuset) cpuset are
221It automatically tracks the value of cpu_online_map, using a CPU 221read-only. The cpus file automatically tracks the value of
222hotplug notifier. If and when memory nodes can be hotplugged, 222cpu_online_map using a CPU hotplug notifier, and the mems file
223we expect to make the mems file in the root cpuset read-only 223automatically tracks the value of node_online_map using the
224as well, and have it track the value of node_online_map. 224cpuset_track_online_nodes() hook.
225 225
226 226
2271.4 What are exclusive cpusets ? 2271.4 What are exclusive cpusets ?
diff --git a/Documentation/cputopology.txt b/Documentation/cputopology.txt
index 2b28e9ec4e3a..b61cb9564023 100644
--- a/Documentation/cputopology.txt
+++ b/Documentation/cputopology.txt
@@ -26,7 +26,7 @@ The type of **_id is int.
26The type of siblings is cpumask_t. 26The type of siblings is cpumask_t.
27 27
28To be consistent on all architectures, the 4 attributes should have 28To be consistent on all architectures, the 4 attributes should have
29deafult values if their values are unavailable. Below is the rule. 29default values if their values are unavailable. Below is the rule.
301) physical_package_id: If cpu has no physical package id, -1 is the 301) physical_package_id: If cpu has no physical package id, -1 is the
31default value. 31default value.
322) core_id: If cpu doesn't support multi-core, its core id is 0. 322) core_id: If cpu doesn't support multi-core, its core id is 0.
diff --git a/Documentation/dell_rbu.txt b/Documentation/dell_rbu.txt
index 941343a7a265..2c0d631de0cf 100644
--- a/Documentation/dell_rbu.txt
+++ b/Documentation/dell_rbu.txt
@@ -4,7 +4,7 @@ for updating BIOS images on Dell servers and desktops.
4 4
5Scope: 5Scope:
6This document discusses the functionality of the rbu driver only. 6This document discusses the functionality of the rbu driver only.
7It does not cover the support needed from aplications to enable the BIOS to 7It does not cover the support needed from applications to enable the BIOS to
8update itself with the image downloaded in to the memory. 8update itself with the image downloaded in to the memory.
9 9
10Overview: 10Overview:
@@ -16,8 +16,8 @@ OpenManage and Dell Update packages (DUP).
16Libsmbios can also be used to update BIOS on Dell systems go to 16Libsmbios can also be used to update BIOS on Dell systems go to
17http://linux.dell.com/libsmbios/ for details. 17http://linux.dell.com/libsmbios/ for details.
18 18
19Dell_RBU driver supports BIOS update using the monilothic image and packetized 19Dell_RBU driver supports BIOS update using the monolithic image and packetized
20image methods. In case of moniolithic the driver allocates a contiguous chunk 20image methods. In case of monolithic the driver allocates a contiguous chunk
21of physical pages having the BIOS image. In case of packetized the app 21of physical pages having the BIOS image. In case of packetized the app
22using the driver breaks the image in to packets of fixed sizes and the driver 22using the driver breaks the image in to packets of fixed sizes and the driver
23would place each packet in contiguous physical memory. The driver also 23would place each packet in contiguous physical memory. The driver also
@@ -41,7 +41,7 @@ The driver supports two types of update mechanism; monolithic and packetized.
41These update mechanism depends upon the BIOS currently running on the system. 41These update mechanism depends upon the BIOS currently running on the system.
42Most of the Dell systems support a monolithic update where the BIOS image is 42Most of the Dell systems support a monolithic update where the BIOS image is
43copied to a single contiguous block of physical memory. 43copied to a single contiguous block of physical memory.
44In case of packet mechanism the single memory can be broken in smaller chuks 44In case of packet mechanism the single memory can be broken in smaller chunks
45of contiguous memory and the BIOS image is scattered in these packets. 45of contiguous memory and the BIOS image is scattered in these packets.
46 46
47By default the driver uses monolithic memory for the update type. This can be 47By default the driver uses monolithic memory for the update type. This can be
@@ -52,11 +52,11 @@ echo packet > /sys/devices/platform/dell_rbu/image_type
52In packet update mode the packet size has to be given before any packets can 52In packet update mode the packet size has to be given before any packets can
53be downloaded. It is done as below 53be downloaded. It is done as below
54echo XXXX > /sys/devices/platform/dell_rbu/packet_size 54echo XXXX > /sys/devices/platform/dell_rbu/packet_size
55In the packet update mechanism, the user neesd to create a new file having 55In the packet update mechanism, the user needs to create a new file having
56packets of data arranged back to back. It can be done as follows 56packets of data arranged back to back. It can be done as follows
57The user creates packets header, gets the chunk of the BIOS image and 57The user creates packets header, gets the chunk of the BIOS image and
58placs it next to the packetheader; now, the packetheader + BIOS image chunk 58places it next to the packetheader; now, the packetheader + BIOS image chunk
59added to geather should match the specified packet_size. This makes one 59added together should match the specified packet_size. This makes one
60packet, the user needs to create more such packets out of the entire BIOS 60packet, the user needs to create more such packets out of the entire BIOS
61image file and then arrange all these packets back to back in to one single 61image file and then arrange all these packets back to back in to one single
62file. 62file.
@@ -93,8 +93,8 @@ read back the image downloaded.
93NOTE: 93NOTE:
94This driver requires a patch for firmware_class.c which has the modified 94This driver requires a patch for firmware_class.c which has the modified
95request_firmware_nowait function. 95request_firmware_nowait function.
96Also after updating the BIOS image an user mdoe application neeeds to execute 96Also after updating the BIOS image a user mode application needs to execute
97code which message the BIOS update request to the BIOS. So on the next reboot 97code which sends the BIOS update request to the BIOS. So on the next reboot
98the BIOS knows about the new image downloaded and it updates it self. 98the BIOS knows about the new image downloaded and it updates itself.
99Also don't unload the rbu drive if the image has to be updated. 99Also don't unload the rbu driver if the image has to be updated.
100 100
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 66c725f530f3..28c4f79662c2 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -2005,7 +2005,7 @@ Your cooperation is appreciated.
2005116 char Advanced Linux Sound Driver (ALSA) 2005116 char Advanced Linux Sound Driver (ALSA)
2006 2006
2007116 block MicroMemory battery backed RAM adapter (NVRAM) 2007116 block MicroMemory battery backed RAM adapter (NVRAM)
2008 Supports 16 boards, 15 paritions each. 2008 Supports 16 boards, 15 partitions each.
2009 Requested by neilb at cse.unsw.edu.au. 2009 Requested by neilb at cse.unsw.edu.au.
2010 2010
2011 0 = /dev/umem/d0 Whole of first board 2011 0 = /dev/umem/d0 Whole of first board
@@ -2543,6 +2543,9 @@ Your cooperation is appreciated.
2543 64 = /dev/usb/rio500 Diamond Rio 500 2543 64 = /dev/usb/rio500 Diamond Rio 500
2544 65 = /dev/usb/usblcd USBLCD Interface (info@usblcd.de) 2544 65 = /dev/usb/usblcd USBLCD Interface (info@usblcd.de)
2545 66 = /dev/usb/cpad0 Synaptics cPad (mouse/LCD) 2545 66 = /dev/usb/cpad0 Synaptics cPad (mouse/LCD)
2546 67 = /dev/usb/adutux0 1st Ontrak ADU device
2547 ...
2548 76 = /dev/usb/adutux10 10th Ontrak ADU device
2546 96 = /dev/usb/hiddev0 1st USB HID device 2549 96 = /dev/usb/hiddev0 1st USB HID device
2547 ... 2550 ...
2548 111 = /dev/usb/hiddev15 16th USB HID device 2551 111 = /dev/usb/hiddev15 16th USB HID device
@@ -3091,7 +3094,7 @@ Your cooperation is appreciated.
3091 This major is reserved to assist the expansion to a 3094 This major is reserved to assist the expansion to a
3092 larger number space. No device nodes with this major 3095 larger number space. No device nodes with this major
3093 should ever be created on the filesystem. 3096 should ever be created on the filesystem.
3094 (This is probaly not true anymore, but I'll leave it 3097 (This is probably not true anymore, but I'll leave it
3095 for now /Torben) 3098 for now /Torben)
3096 3099
3097---LARGE MAJORS!!!!!--- 3100---LARGE MAJORS!!!!!---
@@ -3202,7 +3205,7 @@ for a session; this includes virtual consoles, serial ports, and
3202pseudoterminals (PTYs). 3205pseudoterminals (PTYs).
3203 3206
3204All terminal devices share a common set of capabilities known as line 3207All terminal devices share a common set of capabilities known as line
3205diciplines; these include the common terminal line dicipline as well 3208disciplines; these include the common terminal line discipline as well
3206as SLIP and PPP modes. 3209as SLIP and PPP modes.
3207 3210
3208All terminal devices are named similarly; this section explains the 3211All terminal devices are named similarly; this section explains the
@@ -3282,7 +3285,7 @@ port TTY, for which no alternate device would exist.
3282 Pseudoterminals (PTYs) 3285 Pseudoterminals (PTYs)
3283 3286
3284Pseudoterminals, or PTYs, are used to create login sessions or provide 3287Pseudoterminals, or PTYs, are used to create login sessions or provide
3285other capabilities requiring a TTY line dicipline (including SLIP or 3288other capabilities requiring a TTY line discipline (including SLIP or
3286PPP capability) to arbitrary data-generation processes. Each PTY has 3289PPP capability) to arbitrary data-generation processes. Each PTY has
3287a master side, named /dev/pty[p-za-e][0-9a-f], and a slave side, named 3290a master side, named /dev/pty[p-za-e][0-9a-f], and a slave side, named
3288/dev/tty[p-za-e][0-9a-f]. The kernel arbitrates the use of PTYs by 3291/dev/tty[p-za-e][0-9a-f]. The kernel arbitrates the use of PTYs by
diff --git a/Documentation/driver-model/class.txt b/Documentation/driver-model/class.txt
index 2d1d893a5e5d..548505f14aa4 100644
--- a/Documentation/driver-model/class.txt
+++ b/Documentation/driver-model/class.txt
@@ -12,7 +12,7 @@ device. The following device classes have been identified:
12 12
13Each device class defines a set of semantics and a programming interface 13Each device class defines a set of semantics and a programming interface
14that devices of that class adhere to. Device drivers are the 14that devices of that class adhere to. Device drivers are the
15implemention of that programming interface for a particular device on 15implementation of that programming interface for a particular device on
16a particular bus. 16a particular bus.
17 17
18Device classes are agnostic with respect to what bus a device resides 18Device classes are agnostic with respect to what bus a device resides
diff --git a/Documentation/driver-model/driver.txt b/Documentation/driver-model/driver.txt
index 59806c9761f7..82132169d47a 100644
--- a/Documentation/driver-model/driver.txt
+++ b/Documentation/driver-model/driver.txt
@@ -178,7 +178,7 @@ the driver to that device.
178 178
179A driver's probe() may return a negative errno value to indicate that 179A driver's probe() may return a negative errno value to indicate that
180the driver did not bind to this device, in which case it should have 180the driver did not bind to this device, in which case it should have
181released all reasources it allocated. 181released all resources it allocated.
182 182
183 int (*remove) (struct device * dev); 183 int (*remove) (struct device * dev);
184 184
diff --git a/Documentation/driver-model/overview.txt b/Documentation/driver-model/overview.txt
index 2050c9ffc629..07236ed968da 100644
--- a/Documentation/driver-model/overview.txt
+++ b/Documentation/driver-model/overview.txt
@@ -57,7 +57,7 @@ the two.
57 57
58The PCI bus layer freely accesses the fields of struct device. It knows about 58The PCI bus layer freely accesses the fields of struct device. It knows about
59the structure of struct pci_dev, and it should know the structure of struct 59the structure of struct pci_dev, and it should know the structure of struct
60device. Individual PCI device drivers that have been converted the the current 60device. Individual PCI device drivers that have been converted to the current
61driver model generally do not and should not touch the fields of struct device, 61driver model generally do not and should not touch the fields of struct device,
62unless there is a strong compelling reason to do so. 62unless there is a strong compelling reason to do so.
63 63
diff --git a/Documentation/dvb/avermedia.txt b/Documentation/dvb/avermedia.txt
index 8bab8461a4af..e44c009ac6c5 100644
--- a/Documentation/dvb/avermedia.txt
+++ b/Documentation/dvb/avermedia.txt
@@ -45,9 +45,9 @@ Assumptions and Introduction
45 by circuitry on the card and is often presented uncompressed. 45 by circuitry on the card and is often presented uncompressed.
46 For a PAL TV signal encoded at a resolution of 768x576 24-bit 46 For a PAL TV signal encoded at a resolution of 768x576 24-bit
47 color pixels over 25 frames per second - a fair amount of data 47 color pixels over 25 frames per second - a fair amount of data
48 is generated and must be proceesed by the PC before it can be 48 is generated and must be processed by the PC before it can be
49 displayed on the video monitor screen. Some Analogue TV cards 49 displayed on the video monitor screen. Some Analogue TV cards
50 for PC's have onboard MPEG2 encoders which permit the raw 50 for PCs have onboard MPEG2 encoders which permit the raw
51 digital data stream to be presented to the PC in an encoded 51 digital data stream to be presented to the PC in an encoded
52 and compressed form - similar to the form that is used in 52 and compressed form - similar to the form that is used in
53 Digital TV. 53 Digital TV.
diff --git a/Documentation/dvb/cards.txt b/Documentation/dvb/cards.txt
index 9e10092440e1..ca58e339d85f 100644
--- a/Documentation/dvb/cards.txt
+++ b/Documentation/dvb/cards.txt
@@ -5,7 +5,7 @@ Hardware supported by the linuxtv.org DVB drivers
5 frontends (i.e. tuner / demodulator units) used, usually without 5 frontends (i.e. tuner / demodulator units) used, usually without
6 changing the product name, revision number or specs. Some cards 6 changing the product name, revision number or specs. Some cards
7 are also available in versions with different frontends for 7 are also available in versions with different frontends for
8 DVB-S/DVB-C/DVB-T. Thus the frontend drivers are listed seperately. 8 DVB-S/DVB-C/DVB-T. Thus the frontend drivers are listed separately.
9 9
10 Note 1: There is no guarantee that every frontend driver works 10 Note 1: There is no guarantee that every frontend driver works
11 out of the box with every card, because of different wiring. 11 out of the box with every card, because of different wiring.
diff --git a/Documentation/dvb/ci.txt b/Documentation/dvb/ci.txt
index 95f0e73b2135..531239b29082 100644
--- a/Documentation/dvb/ci.txt
+++ b/Documentation/dvb/ci.txt
@@ -32,7 +32,7 @@ This application requires the following to function properly as of now.
32 descrambler to function, 32 descrambler to function,
33 eg: $ ca_zap channels.conf "TMC" 33 eg: $ ca_zap channels.conf "TMC"
34 34
35 (d) Hopeflly Enjoy your favourite subscribed channel as you do with 35 (d) Hopefully enjoy your favourite subscribed channel as you do with
36 a FTA card. 36 a FTA card.
37 37
38(3) Currently ca_zap, and dst_test, both are meant for demonstration 38(3) Currently ca_zap, and dst_test, both are meant for demonstration
@@ -65,7 +65,7 @@ Modules that have been tested by this driver at present are
65~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 65~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66With the High Level CI approach any new card with almost any random 66With the High Level CI approach any new card with almost any random
67architecture can be implemented with this style, the definitions 67architecture can be implemented with this style, the definitions
68insidethe switch statement can be easily adapted for any card, thereby 68inside the switch statement can be easily adapted for any card, thereby
69eliminating the need for any additional ioctls. 69eliminating the need for any additional ioctls.
70 70
71The disadvantage is that the driver/hardware has to manage the rest. For 71The disadvantage is that the driver/hardware has to manage the rest. For
diff --git a/Documentation/dvb/faq.txt b/Documentation/dvb/faq.txt
index a42132d60dc8..dbcedf5833ee 100644
--- a/Documentation/dvb/faq.txt
+++ b/Documentation/dvb/faq.txt
@@ -5,7 +5,7 @@ Some very frequently asked questions about linuxtv-dvb
5 It's not a bug, it's a feature. Because the frontends have 5 It's not a bug, it's a feature. Because the frontends have
6 significant power requirements (and hence get very hot), they 6 significant power requirements (and hence get very hot), they
7 are powered down if they are unused (i.e. if the frontend device 7 are powered down if they are unused (i.e. if the frontend device
8 is closed). The dvb-core.o module paramter "dvb_shutdown_timeout" 8 is closed). The dvb-core.o module parameter "dvb_shutdown_timeout"
9 allow you to change the timeout (default 5 seconds). Setting the 9 allow you to change the timeout (default 5 seconds). Setting the
10 timeout to 0 disables the timeout feature. 10 timeout to 0 disables the timeout feature.
11 11
@@ -138,7 +138,7 @@ Some very frequently asked questions about linuxtv-dvb
138 138
139 - v4l2-common: common functions for Video4Linux-2 drivers 139 - v4l2-common: common functions for Video4Linux-2 drivers
140 140
141 - v4l1-compat: backward compatiblity layer for Video4Linux-1 legacy 141 - v4l1-compat: backward compatibility layer for Video4Linux-1 legacy
142 applications 142 applications
143 143
144 - dvb-core: DVB core module. This provides you with the 144 - dvb-core: DVB core module. This provides you with the
@@ -153,7 +153,7 @@ Some very frequently asked questions about linuxtv-dvb
153 - video-buf: capture helper module for the saa7146_vv driver. This 153 - video-buf: capture helper module for the saa7146_vv driver. This
154 one is responsible to handle capture buffers. 154 one is responsible to handle capture buffers.
155 155
156 - dvb-ttpci: The main driver for AV7110 based, full-featued 156 - dvb-ttpci: The main driver for AV7110 based, full-featured
157 DVB-S/C/T cards 157 DVB-S/C/T cards
158 158
159eof 159eof
diff --git a/Documentation/ecryptfs.txt b/Documentation/ecryptfs.txt
new file mode 100644
index 000000000000..01d8a08351ac
--- /dev/null
+++ b/Documentation/ecryptfs.txt
@@ -0,0 +1,77 @@
1eCryptfs: A stacked cryptographic filesystem for Linux
2
3eCryptfs is free software. Please see the file COPYING for details.
4For documentation, please see the files in the doc/ subdirectory. For
5building and installation instructions please see the INSTALL file.
6
7Maintainer: Phillip Hellewell
8Lead developer: Michael A. Halcrow <mhalcrow@us.ibm.com>
9Developers: Michael C. Thompson
10 Kent Yoder
11Web Site: http://ecryptfs.sf.net
12
13This software is currently undergoing development. Make sure to
14maintain a backup copy of any data you write into eCryptfs.
15
16eCryptfs requires the userspace tools downloadable from the
17SourceForge site:
18
19http://sourceforge.net/projects/ecryptfs/
20
21Userspace requirements include:
22 - David Howells' userspace keyring headers and libraries (version
23 1.0 or higher), obtainable from
24 http://people.redhat.com/~dhowells/keyutils/
25 - Libgcrypt
26
27
28NOTES
29
30In the beta/experimental releases of eCryptfs, when you upgrade
31eCryptfs, you should copy the files to an unencrypted location and
32then copy the files back into the new eCryptfs mount to migrate the
33files.
34
35
36MOUNT-WIDE PASSPHRASE
37
38Create a new directory into which eCryptfs will write its encrypted
39files (i.e., /root/crypt). Then, create the mount point directory
40(i.e., /mnt/crypt). Now it's time to mount eCryptfs:
41
42mount -t ecryptfs /root/crypt /mnt/crypt
43
44You should be prompted for a passphrase and a salt (the salt may be
45blank).
46
47Try writing a new file:
48
49echo "Hello, World" > /mnt/crypt/hello.txt
50
51The operation will complete. Notice that there is a new file in
52/root/crypt that is at least 12288 bytes in size (depending on your
53host page size). This is the encrypted underlying file for what you
54just wrote. To test reading, from start to finish, you need to clear
55the user session keyring:
56
57keyctl clear @u
58
59Then umount /mnt/crypt and mount again per the instructions given
60above.
61
62cat /mnt/crypt/hello.txt
63
64
65NOTES
66
67eCryptfs version 0.1 should only be mounted on (1) empty directories
68or (2) directories containing files only created by eCryptfs. If you
69mount a directory that has pre-existing files not created by eCryptfs,
70then behavior is undefined. Do not run eCryptfs in higher verbosity
71levels unless you are doing so for the sole purpose of debugging or
72development, since secret values will be written out to the system log
73in that case.
74
75
76Mike Halcrow
77mhalcrow@us.ibm.com
diff --git a/Documentation/eisa.txt b/Documentation/eisa.txt
index 8c8388da868a..6a099edadd62 100644
--- a/Documentation/eisa.txt
+++ b/Documentation/eisa.txt
@@ -18,7 +18,7 @@ The EISA infrastructure is made up of three parts :
18 18
19 - The bus code implements most of the generic code. It is shared 19 - The bus code implements most of the generic code. It is shared
20 among all the architectures that the EISA code runs on. It 20 among all the architectures that the EISA code runs on. It
21 implements bus probing (detecting EISA cards avaible on the bus), 21 implements bus probing (detecting EISA cards available on the bus),
22 allocates I/O resources, allows fancy naming through sysfs, and 22 allocates I/O resources, allows fancy naming through sysfs, and
23 offers interfaces for driver to register. 23 offers interfaces for driver to register.
24 24
@@ -84,7 +84,7 @@ struct eisa_driver {
84 84
85id_table : an array of NULL terminated EISA id strings, 85id_table : an array of NULL terminated EISA id strings,
86 followed by an empty string. Each string can 86 followed by an empty string. Each string can
87 optionnaly be paired with a driver-dependant value 87 optionally be paired with a driver-dependant value
88 (driver_data). 88 (driver_data).
89 89
90driver : a generic driver, such as described in 90driver : a generic driver, such as described in
diff --git a/Documentation/exception.txt b/Documentation/exception.txt
index 3cb39ade290e..2d5aded64247 100644
--- a/Documentation/exception.txt
+++ b/Documentation/exception.txt
@@ -10,7 +10,7 @@ int verify_area(int type, const void * addr, unsigned long size)
10function (which has since been replaced by access_ok()). 10function (which has since been replaced by access_ok()).
11 11
12This function verified that the memory area starting at address 12This function verified that the memory area starting at address
13addr and of size size was accessible for the operation specified 13'addr' and of size 'size' was accessible for the operation specified
14in type (read or write). To do this, verify_read had to look up the 14in type (read or write). To do this, verify_read had to look up the
15virtual memory area (vma) that contained the address addr. In the 15virtual memory area (vma) that contained the address addr. In the
16normal case (correctly working program), this test was successful. 16normal case (correctly working program), this test was successful.
diff --git a/Documentation/fb/fbcon.txt b/Documentation/fb/fbcon.txt
index f373df12ed4c..99ea58e65eff 100644
--- a/Documentation/fb/fbcon.txt
+++ b/Documentation/fb/fbcon.txt
@@ -163,7 +163,7 @@ from the console layer before unloading the driver. The VGA driver cannot be
163unloaded if it is still bound to the console layer. (See 163unloaded if it is still bound to the console layer. (See
164Documentation/console/console.txt for more information). 164Documentation/console/console.txt for more information).
165 165
166This is more complicated in the case of the the framebuffer console (fbcon), 166This is more complicated in the case of the framebuffer console (fbcon),
167because fbcon is an intermediate layer between the console and the drivers: 167because fbcon is an intermediate layer between the console and the drivers:
168 168
169console ---> fbcon ---> fbdev drivers ---> hardware 169console ---> fbcon ---> fbdev drivers ---> hardware
diff --git a/Documentation/fb/intel810.txt b/Documentation/fb/intel810.txt
index 4f0d6bc789ef..be3e7836abef 100644
--- a/Documentation/fb/intel810.txt
+++ b/Documentation/fb/intel810.txt
@@ -9,8 +9,9 @@ Intel 810/815 Framebuffer driver
9================================================================ 9================================================================
10 10
11A. Introduction 11A. Introduction
12
12 This is a framebuffer driver for various Intel 810/815 compatible 13 This is a framebuffer driver for various Intel 810/815 compatible
13graphics devices. These would include: 14 graphics devices. These include:
14 15
15 Intel 810 16 Intel 810
16 Intel 810E 17 Intel 810E
@@ -21,136 +22,136 @@ graphics devices. These would include:
21 22
22B. Features 23B. Features
23 24
24 - Choice of using Discrete Video Timings, VESA Generalized Timing 25 - Choice of using Discrete Video Timings, VESA Generalized Timing
25 Formula, or a framebuffer specific database to set the video mode 26 Formula, or a framebuffer specific database to set the video mode
26 27
27 - Supports a variable range of horizontal and vertical resolution, and 28 - Supports a variable range of horizontal and vertical resolution and
28 vertical refresh rates if the VESA Generalized Timing Formula is 29 vertical refresh rates if the VESA Generalized Timing Formula is
29 enabled. 30 enabled.
30 31
31 - Supports color depths of 8, 16, 24 and 32 bits per pixel 32 - Supports color depths of 8, 16, 24 and 32 bits per pixel
32 33
33 - Supports pseudocolor, directcolor, or truecolor visuals 34 - Supports pseudocolor, directcolor, or truecolor visuals
34 35
35 - Full and optimized hardware acceleration at 8, 16 and 24 bpp 36 - Full and optimized hardware acceleration at 8, 16 and 24 bpp
36 37
37 - Robust video state save and restore 38 - Robust video state save and restore
38 39
39 - MTRR support 40 - MTRR support
40 41
41 - Utilizes user-entered monitor specifications to automatically 42 - Utilizes user-entered monitor specifications to automatically
42 calculate required video mode parameters. 43 calculate required video mode parameters.
43 44
44 - Can concurrently run with xfree86 running with native i810 drivers 45 - Can concurrently run with xfree86 running with native i810 drivers
45 46
46 - Hardware Cursor Support 47 - Hardware Cursor Support
47 48
48 - Supports EDID probing either by DDC/I2C or through the BIOS 49 - Supports EDID probing either by DDC/I2C or through the BIOS
49 50
50C. List of available options 51C. List of available options
51 52
52 a. "video=i810fb" 53 a. "video=i810fb"
53 enables the i810 driver 54 enables the i810 driver
54 55
55 Recommendation: required 56 Recommendation: required
56 57
57 b. "xres:<value>" 58 b. "xres:<value>"
58 select horizontal resolution in pixels. (This parameter will be 59 select horizontal resolution in pixels. (This parameter will be
59 ignored if 'mode_option' is specified. See 'o' below). 60 ignored if 'mode_option' is specified. See 'o' below).
60 61
61 Recommendation: user preference 62 Recommendation: user preference
62 (default = 640) 63 (default = 640)
63 64
64 c. "yres:<value>" 65 c. "yres:<value>"
65 select vertical resolution in scanlines. If Discrete Video Timings 66 select vertical resolution in scanlines. If Discrete Video Timings
66 is enabled, this will be ignored and computed as 3*xres/4. (This 67 is enabled, this will be ignored and computed as 3*xres/4. (This
67 parameter will be ignored if 'mode_option' is specified. See 'o' 68 parameter will be ignored if 'mode_option' is specified. See 'o'
68 below) 69 below)
69 70
70 Recommendation: user preference 71 Recommendation: user preference
71 (default = 480) 72 (default = 480)
72 73
73 d. "vyres:<value>" 74 d. "vyres:<value>"
74 select virtual vertical resolution in scanlines. If (0) or none 75 select virtual vertical resolution in scanlines. If (0) or none
75 is specified, this will be computed against maximum available memory. 76 is specified, this will be computed against maximum available memory.
76 77
77 Recommendation: do not set 78 Recommendation: do not set
78 (default = 480) 79 (default = 480)
79 80
80 e. "vram:<value>" 81 e. "vram:<value>"
81 select amount of system RAM in MB to allocate for the video memory 82 select amount of system RAM in MB to allocate for the video memory
82 83
83 Recommendation: 1 - 4 MB. 84 Recommendation: 1 - 4 MB.
84 (default = 4) 85 (default = 4)
85 86
86 f. "bpp:<value>" 87 f. "bpp:<value>"
87 select desired pixel depth 88 select desired pixel depth
88 89
89 Recommendation: 8 90 Recommendation: 8
90 (default = 8) 91 (default = 8)
91 92
92 g. "hsync1/hsync2:<value>" 93 g. "hsync1/hsync2:<value>"
93 select the minimum and maximum Horizontal Sync Frequency of the 94 select the minimum and maximum Horizontal Sync Frequency of the
94 monitor in KHz. If a using a fixed frequency monitor, hsync1 must 95 monitor in kHz. If using a fixed frequency monitor, hsync1 must
95 be equal to hsync2. If EDID probing is successful, these will be 96 be equal to hsync2. If EDID probing is successful, these will be
96 ignored and values will be taken from the EDID block. 97 ignored and values will be taken from the EDID block.
97 98
98 Recommendation: check monitor manual for correct values 99 Recommendation: check monitor manual for correct values
99 default (29/30) 100 (default = 29/30)
100 101
101 h. "vsync1/vsync2:<value>" 102 h. "vsync1/vsync2:<value>"
102 select the minimum and maximum Vertical Sync Frequency of the monitor 103 select the minimum and maximum Vertical Sync Frequency of the monitor
103 in Hz. You can also use this option to lock your monitor's refresh 104 in Hz. You can also use this option to lock your monitor's refresh
104 rate. If EDID probing is successful, these will be ignored and values 105 rate. If EDID probing is successful, these will be ignored and values
105 will be taken from the EDID block. 106 will be taken from the EDID block.
106 107
107 Recommendation: check monitor manual for correct values 108 Recommendation: check monitor manual for correct values
108 (default = 60/60) 109 (default = 60/60)
109 110
110 IMPORTANT: If you need to clamp your timings, try to give some 111 IMPORTANT: If you need to clamp your timings, try to give some
111 leeway for computational errors (over/underflows). Example: if 112 leeway for computational errors (over/underflows). Example: if
112 using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least 113 using vsync1/vsync2 = 60/60, make sure hsync1/hsync2 has at least
113 a 1 unit difference, and vice versa. 114 a 1 unit difference, and vice versa.
114 115
115 i. "voffset:<value>" 116 i. "voffset:<value>"
116 select at what offset in MB of the logical memory to allocate the 117 select at what offset in MB of the logical memory to allocate the
117 framebuffer memory. The intent is to avoid the memory blocks 118 framebuffer memory. The intent is to avoid the memory blocks
118 used by standard graphics applications (XFree86). The default 119 used by standard graphics applications (XFree86). The default
119 offset (16 MB for a 64MB aperture, 8 MB for a 32MB aperture) will 120 offset (16 MB for a 64 MB aperture, 8 MB for a 32 MB aperture) will
120 avoid XFree86's usage and allows up to 7MB/15MB of framebuffer 121 avoid XFree86's usage and allows up to 7 MB/15 MB of framebuffer
121 memory. Depending on your usage, adjust the value up or down, 122 memory. Depending on your usage, adjust the value up or down
122 (0 for maximum usage, 31/63 MB for the least amount). Note, an 123 (0 for maximum usage, 31/63 MB for the least amount). Note, an
123 arbitrary setting may conflict with XFree86. 124 arbitrary setting may conflict with XFree86.
124 125
125 Recommendation: do not set 126 Recommendation: do not set
126 (default = 8 or 16 MB) 127 (default = 8 or 16 MB)
127 128
128 j. "accel" 129 j. "accel"
129 enable text acceleration. This can be enabled/reenabled anytime 130 enable text acceleration. This can be enabled/reenabled anytime
130 by using 'fbset -accel true/false'. 131 by using 'fbset -accel true/false'.
131 132
132 Recommendation: enable 133 Recommendation: enable
133 (default = not set) 134 (default = not set)
134 135
135 k. "mtrr" 136 k. "mtrr"
136 enable MTRR. This allows data transfers to the framebuffer memory 137 enable MTRR. This allows data transfers to the framebuffer memory
137 to occur in bursts which can significantly increase performance. 138 to occur in bursts which can significantly increase performance.
138 Not very helpful with the i810/i815 because of 'shared memory'. 139 Not very helpful with the i810/i815 because of 'shared memory'.
139 140
140 Recommendation: do not set 141 Recommendation: do not set
141 (default = not set) 142 (default = not set)
142 143
143 l. "extvga" 144 l. "extvga"
144 if specified, secondary/external VGA output will always be enabled. 145 if specified, secondary/external VGA output will always be enabled.
145 Useful if the BIOS turns off the VGA port when no monitor is attached. 146 Useful if the BIOS turns off the VGA port when no monitor is attached.
146 The external VGA monitor can then be attached without rebooting. 147 The external VGA monitor can then be attached without rebooting.
147 148
148 Recommendation: do not set 149 Recommendation: do not set
149 (default = not set) 150 (default = not set)
150 151
151 m. "sync" 152 m. "sync"
152 Forces the hardware engine to do a "sync" or wait for the hardware 153 Forces the hardware engine to do a "sync" or wait for the hardware
153 to finish before starting another instruction. This will produce a 154 to finish before starting another instruction. This will produce a
154 more stable setup, but will be slower. 155 more stable setup, but will be slower.
155 156
156 Recommendation: do not set 157 Recommendation: do not set
@@ -162,6 +163,7 @@ C. List of available options
162 163
163 Recommendation: do not set 164 Recommendation: do not set
164 (default = not set) 165 (default = not set)
166
165 o. <xres>x<yres>[-<bpp>][@<refresh>] 167 o. <xres>x<yres>[-<bpp>][@<refresh>]
166 The driver will now accept specification of boot mode option. If this 168 The driver will now accept specification of boot mode option. If this
167 is specified, the options 'xres' and 'yres' will be ignored. See 169 is specified, the options 'xres' and 'yres' will be ignored. See
@@ -183,8 +185,8 @@ append="video=i810fb:vram:2,xres:1024,yres:768,bpp:8,hsync1:30,hsync2:55, \
183 vsync1:50,vsync2:85,accel,mtrr" 185 vsync1:50,vsync2:85,accel,mtrr"
184 186
185This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer 187This will initialize the framebuffer to 1024x768 at 8bpp. The framebuffer
186will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate 188will use 2 MB of System RAM. MTRR support will be enabled. The refresh rate
187will be computed based on the hsync1/hsync2 and vsync1/vsync2 values. 189will be computed based on the hsync1/hsync2 and vsync1/vsync2 values.
188 190
189IMPORTANT: 191IMPORTANT:
190You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes 192You must include hsync1, hsync2, vsync1 and vsync2 to enable video modes
@@ -194,10 +196,10 @@ vsync1 and vsync2 parameters. These parameters will be taken from the EDID
194block. 196block.
195 197
196E. Module options 198E. Module options
197 199
198 The module parameters are essentially similar to the kernel 200The module parameters are essentially similar to the kernel
199parameters. The main difference is that you need to include a Boolean value 201parameters. The main difference is that you need to include a Boolean value
200(1 for TRUE, and 0 for FALSE) for those options which don't need a value. 202(1 for TRUE, and 0 for FALSE) for those options which don't need a value.
201 203
202Example, to enable MTRR, include "mtrr=1". 204Example, to enable MTRR, include "mtrr=1".
203 205
@@ -214,62 +216,62 @@ Or just add the following to /etc/modprobe.conf
214 options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \ 216 options i810fb vram=2 xres=1024 bpp=16 hsync1=30 hsync2=55 vsync1=50 \
215 vsync2=85 accel=1 mtrr=1 217 vsync2=85 accel=1 mtrr=1
216 218
217and just do a 219and just do a
218 220
219 modprobe i810fb 221 modprobe i810fb
220 222
221 223
222F. Setup 224F. Setup
223 225
224 a. Do your usual method of configuring the kernel. 226 a. Do your usual method of configuring the kernel.
225 227
226 make menuconfig/xconfig/config 228 make menuconfig/xconfig/config
227 229
228 b. Under "Code Maturity Options", enable "Prompt for experimental/ 230 b. Under "Code maturity level options" enable "Prompt for development
229 incomplete code/drivers". 231 and/or incomplete code/drivers".
230 232
231 c. Enable agpgart support for the Intel 810/815 on-board graphics. 233 c. Enable agpgart support for the Intel 810/815 on-board graphics.
232 This is required. The option is under "Character Devices" 234 This is required. The option is under "Character Devices".
233 235
234 d. Under "Graphics Support", select "Intel 810/815" either statically 236 d. Under "Graphics Support", select "Intel 810/815" either statically
235 or as a module. Choose "use VESA Generalized Timing Formula" if 237 or as a module. Choose "use VESA Generalized Timing Formula" if
236 you need to maximize the capability of your display. To be on the 238 you need to maximize the capability of your display. To be on the
237 safe side, you can leave this unselected. 239 safe side, you can leave this unselected.
238 240
239 e. If you want support for DDC/I2C probing (Plug and Play Displays), 241 e. If you want support for DDC/I2C probing (Plug and Play Displays),
240 set 'Enable DDC Support' to 'y'. To make this option appear, set 242 set 'Enable DDC Support' to 'y'. To make this option appear, set
241 'use VESA Generalized Timing Formula' to 'y'. 243 'use VESA Generalized Timing Formula' to 'y'.
242 244
243 f. If you want a framebuffer console, enable it under "Console 245 f. If you want a framebuffer console, enable it under "Console
244 Drivers" 246 Drivers".
247
248 g. Compile your kernel.
249
250 h. Load the driver as described in sections D and E.
245 251
246 g. Compile your kernel.
247
248 h. Load the driver as described in section D and E.
249
250 i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver 252 i. Try the DirectFB (http://www.directfb.org) + the i810 gfxdriver
251 patch to see the chipset in action (or inaction :-). 253 patch to see the chipset in action (or inaction :-).
252 254
253G. Acknowledgment: 255G. Acknowledgment:
254 256
255 1. Geert Uytterhoeven - his excellent howto and the virtual 257 1. Geert Uytterhoeven - his excellent howto and the virtual
256 framebuffer driver code made this possible. 258 framebuffer driver code made this possible.
257 259
258 2. Jeff Hartmann for his agpgart code. 260 2. Jeff Hartmann for his agpgart code.
259 261
260 3. The X developers. Insights were provided just by reading the 262 3. The X developers. Insights were provided just by reading the
261 XFree86 source code. 263 XFree86 source code.
262 264
263 4. Intel(c). For this value-oriented chipset driver and for 265 4. Intel(c). For this value-oriented chipset driver and for
264 providing documentation. 266 providing documentation.
265 267
266 5. Matt Sottek. His inputs and ideas helped in making some 268 5. Matt Sottek. His inputs and ideas helped in making some
267 optimizations possible. 269 optimizations possible.
268 270
269H. Home Page: 271H. Home Page:
270 272
271 A more complete, and probably updated information is provided at 273 A more complete, and probably updated information is provided at
272http://i810fb.sourceforge.net. 274 http://i810fb.sourceforge.net.
273 275
274########################### 276###########################
275Tony 277Tony
diff --git a/Documentation/fb/intelfb.txt b/Documentation/fb/intelfb.txt
index c12d39a23c3d..da5ee74219e8 100644
--- a/Documentation/fb/intelfb.txt
+++ b/Documentation/fb/intelfb.txt
@@ -1,16 +1,19 @@
1Intel 830M/845G/852GM/855GM/865G/915G Framebuffer driver 1Intel 830M/845G/852GM/855GM/865G/915G/945G Framebuffer driver
2================================================================ 2================================================================
3 3
4A. Introduction 4A. Introduction
5 This is a framebuffer driver for various Intel 810/815 compatible 5 This is a framebuffer driver for various Intel 8xx/9xx compatible
6graphics devices. These would include: 6graphics devices. These would include:
7 7
8 Intel 830M 8 Intel 830M
9 Intel 810E845G 9 Intel 845G
10 Intel 852GM 10 Intel 852GM
11 Intel 855GM 11 Intel 855GM
12 Intel 865G 12 Intel 865G
13 Intel 915G 13 Intel 915G
14 Intel 915GM
15 Intel 945G
16 Intel 945GM
14 17
15B. List of available options 18B. List of available options
16 19
@@ -78,19 +81,27 @@ C. Kernel booting
78Separate each option/option-pair by commas (,) and the option from its value 81Separate each option/option-pair by commas (,) and the option from its value
79with an equals sign (=) as in the following: 82with an equals sign (=) as in the following:
80 83
81video=i810fb:option1,option2=value2 84video=intelfb:option1,option2=value2
82 85
83Sample Usage 86Sample Usage
84------------ 87------------
85 88
86In /etc/lilo.conf, add the line: 89In /etc/lilo.conf, add the line:
87 90
88append="video=intelfb:800x600-32@75,accel,hwcursor,vram=8" 91append="video=intelfb:mode=800x600-32@75,accel,hwcursor,vram=8"
89 92
90This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The 93This will initialize the framebuffer to 800x600 at 32bpp and 75Hz. The
91framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor 94framebuffer will use 8 MB of System RAM. hw acceleration of text and cursor
92will be enabled. 95will be enabled.
93 96
97Remarks
98-------
99
100If setting this parameter doesn't work (you stay in a 80x25 text-mode),
101you might need to set the "vga=<mode>" parameter too - see vesafb.txt
102in this directory.
103
104
94D. Module options 105D. Module options
95 106
96 The module parameters are essentially similar to the kernel 107 The module parameters are essentially similar to the kernel
diff --git a/Documentation/fb/sisfb.txt b/Documentation/fb/sisfb.txt
index 3b50c517a08d..2e68e503e72f 100644
--- a/Documentation/fb/sisfb.txt
+++ b/Documentation/fb/sisfb.txt
@@ -72,7 +72,7 @@ information. Additionally, "modinfo sisfb" gives an overview over all
72supported options including some explanation. 72supported options including some explanation.
73 73
74The desired display mode can be specified using the keyword "mode" with 74The desired display mode can be specified using the keyword "mode" with
75a parameter in one of the follwing formats: 75a parameter in one of the following formats:
76 - XxYxDepth or 76 - XxYxDepth or
77 - XxY-Depth or 77 - XxY-Depth or
78 - XxY-Depth@Rate or 78 - XxY-Depth@Rate or
diff --git a/Documentation/fb/sstfb.txt b/Documentation/fb/sstfb.txt
index 628d7ffa8769..df27f5bf15db 100644
--- a/Documentation/fb/sstfb.txt
+++ b/Documentation/fb/sstfb.txt
@@ -48,12 +48,12 @@ Module Usage
48 48
49 Module insertion: 49 Module insertion:
50 # insmod sstfb.o 50 # insmod sstfb.o
51 you should see some strange output frome the board: 51 you should see some strange output from the board:
52 a big blue square, a green and a red small squares and a vertical 52 a big blue square, a green and a red small squares and a vertical
53 white rectangle. why ? the function's name is self explanatory : 53 white rectangle. why? the function's name is self-explanatory:
54 "sstfb_test()"... 54 "sstfb_test()"...
55 (if you don't have a second monitor, you'll have to plug your monitor 55 (if you don't have a second monitor, you'll have to plug your monitor
56 directely to the 2D videocard to see what you're typing) 56 directly to the 2D videocard to see what you're typing)
57 # con2fb /dev/fbx /dev/ttyx 57 # con2fb /dev/fbx /dev/ttyx
58 bind a tty to the new frame buffer. if you already have a frame 58 bind a tty to the new frame buffer. if you already have a frame
59 buffer driver, the voodoo fb will likely be /dev/fb1. if not, 59 buffer driver, the voodoo fb will likely be /dev/fb1. if not,
@@ -72,12 +72,12 @@ Module Usage
72 72
73Kernel/Modules Options 73Kernel/Modules Options
74 74
75 You can pass some otions to sstfb module, and via the kernel command 75 You can pass some options to the sstfb module, and via the kernel
76 line when the driver is compiled in : 76 command line when the driver is compiled in:
77 for module : insmod sstfb.o option1=value1 option2=value2 ... 77 for module : insmod sstfb.o option1=value1 option2=value2 ...
78 in kernel : video=sstfb:option1,option2:value2,option3 ... 78 in kernel : video=sstfb:option1,option2:value2,option3 ...
79 79
80 sstfb supports the folowing options : 80 sstfb supports the following options :
81 81
82Module Kernel Description 82Module Kernel Description
83 83
@@ -95,11 +95,11 @@ inverse=1 inverse Supposed to enable inverse console.
95 95
96clipping=1 clipping Enable or disable clipping. 96clipping=1 clipping Enable or disable clipping.
97clipping=0 noclipping With clipping enabled, all offscreen 97clipping=0 noclipping With clipping enabled, all offscreen
98 reads and writes are disgarded. 98 reads and writes are discarded.
99 Default: enable clipping. 99 Default: enable clipping.
100 100
101gfxclk=x gfxclk:x Force graphic clock frequency (in MHz). 101gfxclk=x gfxclk:x Force graphic clock frequency (in MHz).
102 Be carefull with this option, it may be 102 Be careful with this option, it may be
103 DANGEROUS. 103 DANGEROUS.
104 Default: auto 104 Default: auto
105 50Mhz for Voodoo 1, 105 50Mhz for Voodoo 1,
@@ -137,23 +137,23 @@ Bugs
137 - The driver is 16 bpp only, 24/32 won't work. 137 - The driver is 16 bpp only, 24/32 won't work.
138 - The driver is not your_favorite_toy-safe. this includes SMP... 138 - The driver is not your_favorite_toy-safe. this includes SMP...
139 [Actually from inspection it seems to be safe - Alan] 139 [Actually from inspection it seems to be safe - Alan]
140 - when using XFree86 FBdev (X over fbdev) you may see strange color 140 - When using XFree86 FBdev (X over fbdev) you may see strange color
141 patterns at the border of your windows (the pixels lose the lowest 141 patterns at the border of your windows (the pixels lose the lowest
142 byte -> basicaly the blue component nd some of the green) . I'm unable 142 byte -> basically the blue component and some of the green). I'm unable
143 to reproduce this with XFree86-3.3, but one of the testers has this 143 to reproduce this with XFree86-3.3, but one of the testers has this
144 problem with XFree86-4. apparently recent Xfree86-4.x solve this 144 problem with XFree86-4. Apparently recent Xfree86-4.x solve this
145 problem. 145 problem.
146 - I didn't really test changing the palette, so you may find some weird 146 - I didn't really test changing the palette, so you may find some weird
147 things when playing with that. 147 things when playing with that.
148 - Sometimes the driver will not recognise the DAC , and the 148 - Sometimes the driver will not recognise the DAC, and the
149 initialisation will fail. this is specificaly true for 149 initialisation will fail. This is specifically true for
150 voodoo 2 boards , but it should be solved in recent versions. please 150 voodoo 2 boards, but it should be solved in recent versions. Please
151 contact me . 151 contact me.
152 - the 24/32 is not likely to work anytime soon , knowing that the 152 - The 24/32 is not likely to work anytime soon, knowing that the
153 hardware does ... unusual thigs in 24/32 bpp 153 hardware does ... unusual things in 24/32 bpp.
154 - When used with anther video board, current limitations of linux 154 - When used with another video board, current limitations of the linux
155 console subsystem can cause some troubles, specificaly, you should 155 console subsystem can cause some troubles, specifically, you should
156 disable software scrollback , as it can oops badly ... 156 disable software scrollback, as it can oops badly ...
157 157
158Todo 158Todo
159 159
@@ -161,7 +161,7 @@ Todo
161 - Buy more coffee. 161 - Buy more coffee.
162 - test/port to other arch. 162 - test/port to other arch.
163 - try to add panning using tweeks with front and back buffer . 163 - try to add panning using tweeks with front and back buffer .
164 - try to implement accel on voodoo2 , this board can actualy do a 164 - try to implement accel on voodoo2, this board can actually do a
165 lot in 2D even if it was sold as a 3D only board ... 165 lot in 2D even if it was sold as a 3D only board ...
166 166
167ghoz. 167ghoz.
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 552507fe9a7e..24f3c63b3017 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -6,6 +6,21 @@ be removed from this file.
6 6
7--------------------------- 7---------------------------
8 8
9What: /sys/devices/.../power/state
10 dev->power.power_state
11 dpm_runtime_{suspend,resume)()
12When: July 2007
13Why: Broken design for runtime control over driver power states, confusing
14 driver-internal runtime power management with: mechanisms to support
15 system-wide sleep state transitions; event codes that distinguish
16 different phases of swsusp "sleep" transitions; and userspace policy
17 inputs. This framework was never widely used, and most attempts to
18 use it were broken. Drivers should instead be exposing domain-specific
19 interfaces either to kernel or to userspace.
20Who: Pavel Machek <pavel@suse.cz>
21
22---------------------------
23
9What: RAW driver (CONFIG_RAW_DRIVER) 24What: RAW driver (CONFIG_RAW_DRIVER)
10When: December 2005 25When: December 2005
11Why: declared obsolete since kernel 2.6.3 26Why: declared obsolete since kernel 2.6.3
@@ -14,14 +29,6 @@ Who: Adrian Bunk <bunk@stusta.de>
14 29
15--------------------------- 30---------------------------
16 31
17What: drivers that were depending on OBSOLETE_OSS_DRIVER
18 (config options already removed)
19When: before 2.6.19
20Why: OSS drivers with ALSA replacements
21Who: Adrian Bunk <bunk@stusta.de>
22
23---------------------------
24
25What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN 32What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN
26When: November 2006 33When: November 2006
27Why: Deprecated in favour of the new ioctl-based rawiso interface, which is 34Why: Deprecated in favour of the new ioctl-based rawiso interface, which is
@@ -31,17 +38,8 @@ Who: Jody McIntyre <scjody@modernduck.com>
31 38
32--------------------------- 39---------------------------
33 40
34What: sbp2: module parameter "force_inquiry_hack"
35When: July 2006
36Why: Superceded by parameter "workarounds". Both parameters are meant to be
37 used ad-hoc and for single devices only, i.e. not in modprobe.conf,
38 therefore the impact of this feature replacement should be low.
39Who: Stefan Richter <stefanr@s5r6.in-berlin.de>
40
41---------------------------
42
43What: Video4Linux API 1 ioctls and video_decoder.h from Video devices. 41What: Video4Linux API 1 ioctls and video_decoder.h from Video devices.
44When: July 2006 42When: December 2006
45Why: V4L1 AP1 was replaced by V4L2 API. during migration from 2.4 to 2.6 43Why: V4L1 AP1 was replaced by V4L2 API. during migration from 2.4 to 2.6
46 series. The old API have lots of drawbacks and don't provide enough 44 series. The old API have lots of drawbacks and don't provide enough
47 means to work with all video and audio standards. The newer API is 45 means to work with all video and audio standards. The newer API is
@@ -55,6 +53,18 @@ Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
55 53
56--------------------------- 54---------------------------
57 55
56What: sys_sysctl
57When: January 2007
58Why: The same information is available through /proc/sys and that is the
59 interface user space prefers to use. And there do not appear to be
60 any existing user in user space of sys_sysctl. The additional
61 maintenance overhead of keeping a set of binary names gets
62 in the way of doing a good job of maintaining this interface.
63
64Who: Eric Biederman <ebiederm@xmission.com>
65
66---------------------------
67
58What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl]) 68What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
59When: November 2005 69When: November 2005
60Files: drivers/pcmcia/: pcmcia_ioctl.c 70Files: drivers/pcmcia/: pcmcia_ioctl.c
@@ -104,15 +114,6 @@ Who: Arjan van de Ven
104 114
105--------------------------- 115---------------------------
106 116
107What: START_ARRAY ioctl for md
108When: July 2006
109Files: drivers/md/md.c
110Why: Not reliable by design - can fail when most needed.
111 Alternatives exist
112Who: NeilBrown <neilb@suse.de>
113
114---------------------------
115
116What: eepro100 network driver 117What: eepro100 network driver
117When: January 2007 118When: January 2007
118Why: replaced by the e100 driver 119Why: replaced by the e100 driver
@@ -175,7 +176,7 @@ Who: Greg Kroah-Hartman <gregkh@suse.de>
175--------------------------- 176---------------------------
176 177
177What: USB driver API moves to EXPORT_SYMBOL_GPL 178What: USB driver API moves to EXPORT_SYMBOL_GPL
178When: Febuary 2008 179When: February 2008
179Files: include/linux/usb.h, drivers/usb/core/driver.c 180Files: include/linux/usb.h, drivers/usb/core/driver.c
180Why: The USB subsystem has changed a lot over time, and it has been 181Why: The USB subsystem has changed a lot over time, and it has been
181 possible to create userspace USB drivers using usbfs/libusb/gadgetfs 182 possible to create userspace USB drivers using usbfs/libusb/gadgetfs
@@ -202,50 +203,6 @@ Who: Nick Piggin <npiggin@suse.de>
202 203
203--------------------------- 204---------------------------
204 205
205What: Support for the MIPS EV96100 evaluation board
206When: September 2006
207Why: Does no longer build since at least November 15, 2003, apparently
208 no userbase left.
209Who: Ralf Baechle <ralf@linux-mips.org>
210
211---------------------------
212
213What: Support for the Momentum / PMC-Sierra Jaguar ATX evaluation board
214When: September 2006
215Why: Does no longer build since quite some time, and was never popular,
216 due to the platform being replaced by successor models. Apparently
217 no user base left. It also is one of the last users of
218 WANT_PAGE_VIRTUAL.
219Who: Ralf Baechle <ralf@linux-mips.org>
220
221---------------------------
222
223What: Support for the Momentum Ocelot, Ocelot 3, Ocelot C and Ocelot G
224When: September 2006
225Why: Some do no longer build and apparently there is no user base left
226 for these platforms.
227Who: Ralf Baechle <ralf@linux-mips.org>
228
229---------------------------
230
231What: Support for MIPS Technologies' Altas and SEAD evaluation board
232When: September 2006
233Why: Some do no longer build and apparently there is no user base left
234 for these platforms. Hardware out of production since several years.
235Who: Ralf Baechle <ralf@linux-mips.org>
236
237---------------------------
238
239What: Support for the IT8172-based platforms, ITE 8172G and Globespan IVR
240When: September 2006
241Why: Code does no longer build since at least 2.6.0, apparently there is
242 no user base left for these platforms. Hardware out of production
243 since several years and hardly a trace of the manufacturer left on
244 the net.
245Who: Ralf Baechle <ralf@linux-mips.org>
246
247---------------------------
248
249What: Interrupt only SA_* flags 206What: Interrupt only SA_* flags
250When: Januar 2007 207When: Januar 2007
251Why: The interrupt related SA_* flags are replaced by IRQF_* to move them 208Why: The interrupt related SA_* flags are replaced by IRQF_* to move them
@@ -294,3 +251,32 @@ Why: The frame diverter is included in most distribution kernels, but is
294 It is not clear if anyone is still using it. 251 It is not clear if anyone is still using it.
295Who: Stephen Hemminger <shemminger@osdl.org> 252Who: Stephen Hemminger <shemminger@osdl.org>
296 253
254---------------------------
255
256
257What: PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
258When: Oktober 2008
259Why: The stacking of class devices makes these values misleading and
260 inconsistent.
261 Class devices should not carry any of these properties, and bus
262 devices have SUBSYTEM and DRIVER as a replacement.
263Who: Kay Sievers <kay.sievers@suse.de>
264
265---------------------------
266
267What: i2c-isa
268When: December 2006
269Why: i2c-isa is a non-sense and doesn't fit in the device driver
270 model. Drivers relying on it are better implemented as platform
271 drivers.
272Who: Jean Delvare <khali@linux-fr.org>
273
274---------------------------
275
276What: ftape
277When: 2.6.20
278Why: Orphaned for ages. SMP bugs long unfixed. Few users left
279 in the world.
280Who: Jeff Garzik <jeff@garzik.org>
281
282---------------------------
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX
index 16dec61d7671..3c384c0cf86e 100644
--- a/Documentation/filesystems/00-INDEX
+++ b/Documentation/filesystems/00-INDEX
@@ -26,8 +26,6 @@ cramfs.txt
26 - info on the cram filesystem for small storage (ROMs etc). 26 - info on the cram filesystem for small storage (ROMs etc).
27dentry-locking.txt 27dentry-locking.txt
28 - info on the RCU-based dcache locking model. 28 - info on the RCU-based dcache locking model.
29devfs/
30 - directory containing devfs documentation.
31directory-locking 29directory-locking
32 - info about the locking scheme used for directory operations. 30 - info about the locking scheme used for directory operations.
33dlmfs.txt 31dlmfs.txt
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index 247d7f619aa2..eb1a6cad21e6 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -356,10 +356,9 @@ The last two are called only from check_disk_change().
356prototypes: 356prototypes:
357 loff_t (*llseek) (struct file *, loff_t, int); 357 loff_t (*llseek) (struct file *, loff_t, int);
358 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); 358 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
359 ssize_t (*aio_read) (struct kiocb *, char __user *, size_t, loff_t);
360 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); 359 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
361 ssize_t (*aio_write) (struct kiocb *, const char __user *, size_t, 360 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
362 loff_t); 361 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
363 int (*readdir) (struct file *, void *, filldir_t); 362 int (*readdir) (struct file *, void *, filldir_t);
364 unsigned int (*poll) (struct file *, struct poll_table_struct *); 363 unsigned int (*poll) (struct file *, struct poll_table_struct *);
365 int (*ioctl) (struct inode *, struct file *, unsigned int, 364 int (*ioctl) (struct inode *, struct file *, unsigned int,
diff --git a/Documentation/filesystems/befs.txt b/Documentation/filesystems/befs.txt
index 877a7b1d46ec..67391a15949a 100644
--- a/Documentation/filesystems/befs.txt
+++ b/Documentation/filesystems/befs.txt
@@ -7,7 +7,7 @@ WARNING
7Make sure you understand that this is alpha software. This means that the 7Make sure you understand that this is alpha software. This means that the
8implementation is neither complete nor well-tested. 8implementation is neither complete nor well-tested.
9 9
10I DISCLAIM ALL RESPONSIBILTY FOR ANY POSSIBLE BAD EFFECTS OF THIS CODE! 10I DISCLAIM ALL RESPONSIBILITY FOR ANY POSSIBLE BAD EFFECTS OF THIS CODE!
11 11
12LICENSE 12LICENSE
13===== 13=====
@@ -22,7 +22,7 @@ He has been working on the code since Aug 13, 2001. See the changelog for
22details. 22details.
23 23
24Original Author: Makoto Kato <m_kato@ga2.so-net.ne.jp> 24Original Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
25His orriginal code can still be found at: 25His original code can still be found at:
26<http://hp.vector.co.jp/authors/VA008030/bfs/> 26<http://hp.vector.co.jp/authors/VA008030/bfs/>
27Does anyone know of a more current email address for Makoto? He doesn't 27Does anyone know of a more current email address for Makoto? He doesn't
28respond to the address given above... 28respond to the address given above...
@@ -39,7 +39,7 @@ Which is it, BFS or BEFS?
39================ 39================
40Be, Inc said, "BeOS Filesystem is officially called BFS, not BeFS". 40Be, Inc said, "BeOS Filesystem is officially called BFS, not BeFS".
41But Unixware Boot Filesystem is called bfs, too. And they are already in 41But Unixware Boot Filesystem is called bfs, too. And they are already in
42the kernel. Because of this nameing conflict, on Linux the BeOS 42the kernel. Because of this naming conflict, on Linux the BeOS
43filesystem is called befs. 43filesystem is called befs.
44 44
45HOW TO INSTALL 45HOW TO INSTALL
@@ -57,7 +57,7 @@ if the patching step fails (i.e. there are rejected hunks), you can try to
57figure it out yourself (it shouldn't be hard), or mail the maintainer 57figure it out yourself (it shouldn't be hard), or mail the maintainer
58(Will Dyson <will_dyson@pobox.com>) for help. 58(Will Dyson <will_dyson@pobox.com>) for help.
59 59
60step 2. Configuretion & make kernel 60step 2. Configuration & make kernel
61 61
62The linux kernel has many compile-time options. Most of them are beyond the 62The linux kernel has many compile-time options. Most of them are beyond the
63scope of this document. I suggest the Kernel-HOWTO document as a good general 63scope of this document. I suggest the Kernel-HOWTO document as a good general
diff --git a/Documentation/filesystems/configfs/configfs.txt b/Documentation/filesystems/configfs/configfs.txt
index c4ff96b7c4e0..c3a7afb5eabf 100644
--- a/Documentation/filesystems/configfs/configfs.txt
+++ b/Documentation/filesystems/configfs/configfs.txt
@@ -1,5 +1,5 @@
1 1
2configfs - Userspace-driven kernel object configuation. 2configfs - Userspace-driven kernel object configuration.
3 3
4Joel Becker <joel.becker@oracle.com> 4Joel Becker <joel.becker@oracle.com>
5 5
@@ -254,7 +254,7 @@ using the group _init() functions on the group.
254 254
255Finally, when userspace calls rmdir(2) on the item or group, 255Finally, when userspace calls rmdir(2) on the item or group,
256ct_group_ops->drop_item() is called. As a config_group is also a 256ct_group_ops->drop_item() is called. As a config_group is also a
257config_item, it is not necessary for a seperate drop_group() method. 257config_item, it is not necessary for a separate drop_group() method.
258The subsystem must config_item_put() the reference that was initialized 258The subsystem must config_item_put() the reference that was initialized
259upon item allocation. If a subsystem has no work to do, it may omit 259upon item allocation. If a subsystem has no work to do, it may omit
260the ct_group_ops->drop_item() method, and configfs will call 260the ct_group_ops->drop_item() method, and configfs will call
@@ -406,7 +406,7 @@ that condition is met.
406 406
407Far better would be an explicit action notifying the subsystem that the 407Far better would be an explicit action notifying the subsystem that the
408config_item is ready to go. More importantly, an explicit action allows 408config_item is ready to go. More importantly, an explicit action allows
409the subsystem to provide feedback as to whether the attibutes are 409the subsystem to provide feedback as to whether the attributes are
410initialized in a way that makes sense. configfs provides this as 410initialized in a way that makes sense. configfs provides this as
411committable items. 411committable items.
412 412
@@ -422,7 +422,7 @@ support mkdir(2) or rmdir(2) either. It only allows rename(2). The
422"pending" directory does allow mkdir(2) and rmdir(2). An item is 422"pending" directory does allow mkdir(2) and rmdir(2). An item is
423created in the "pending" directory. Its attributes can be modified at 423created in the "pending" directory. Its attributes can be modified at
424will. Userspace commits the item by renaming it into the "live" 424will. Userspace commits the item by renaming it into the "live"
425directory. At this point, the subsystem recieves the ->commit_item() 425directory. At this point, the subsystem receives the ->commit_item()
426callback. If all required attributes are filled to satisfaction, the 426callback. If all required attributes are filled to satisfaction, the
427method returns zero and the item is moved to the "live" directory. 427method returns zero and the item is moved to the "live" directory.
428 428
diff --git a/Documentation/filesystems/directory-locking b/Documentation/filesystems/directory-locking
index 34380d4fbce3..d7099a9266fb 100644
--- a/Documentation/filesystems/directory-locking
+++ b/Documentation/filesystems/directory-locking
@@ -82,7 +82,7 @@ own descendent. Moreover, there is exactly one cross-directory rename
82 82
83 Consider the object blocking the cross-directory rename. One 83 Consider the object blocking the cross-directory rename. One
84of its descendents is locked by cross-directory rename (otherwise we 84of its descendents is locked by cross-directory rename (otherwise we
85would again have an infinite set of of contended objects). But that 85would again have an infinite set of contended objects). But that
86means that cross-directory rename is taking locks out of order. Due 86means that cross-directory rename is taking locks out of order. Due
87to (2) the order hadn't changed since we had acquired filesystem lock. 87to (2) the order hadn't changed since we had acquired filesystem lock.
88But locking rules for cross-directory rename guarantee that we do not 88But locking rules for cross-directory rename guarantee that we do not
diff --git a/Documentation/filesystems/dlmfs.txt b/Documentation/filesystems/dlmfs.txt
index 9afab845a906..c50bbb2d52b4 100644
--- a/Documentation/filesystems/dlmfs.txt
+++ b/Documentation/filesystems/dlmfs.txt
@@ -68,7 +68,7 @@ request for an already acquired lock will not generate another DLM
68call. Userspace programs are assumed to handle their own local 68call. Userspace programs are assumed to handle their own local
69locking. 69locking.
70 70
71Two levels of locks are supported - Shared Read, and Exlcusive. 71Two levels of locks are supported - Shared Read, and Exclusive.
72Also supported is a Trylock operation. 72Also supported is a Trylock operation.
73 73
74For information on the libo2dlm interface, please see o2dlm.h, 74For information on the libo2dlm interface, please see o2dlm.h,
diff --git a/Documentation/filesystems/ext2.txt b/Documentation/filesystems/ext2.txt
index 3dd2872416a1..4333e836c495 100644
--- a/Documentation/filesystems/ext2.txt
+++ b/Documentation/filesystems/ext2.txt
@@ -205,7 +205,7 @@ Reserved Space
205 205
206In ext2, there is a mechanism for reserving a certain number of blocks 206In ext2, there is a mechanism for reserving a certain number of blocks
207for a particular user (normally the super-user). This is intended to 207for a particular user (normally the super-user). This is intended to
208allow for the system to continue functioning even if non-priveleged users 208allow for the system to continue functioning even if non-privileged users
209fill up all the space available to them (this is independent of filesystem 209fill up all the space available to them (this is independent of filesystem
210quotas). It also keeps the filesystem from filling up entirely which 210quotas). It also keeps the filesystem from filling up entirely which
211helps combat fragmentation. 211helps combat fragmentation.
diff --git a/Documentation/filesystems/files.txt b/Documentation/filesystems/files.txt
index 8c206f4e0250..133e213ebb72 100644
--- a/Documentation/filesystems/files.txt
+++ b/Documentation/filesystems/files.txt
@@ -55,7 +55,7 @@ the fdtable structure -
552. Reading of the fdtable as described above must be protected 552. Reading of the fdtable as described above must be protected
56 by rcu_read_lock()/rcu_read_unlock(). 56 by rcu_read_lock()/rcu_read_unlock().
57 57
583. For any update to the the fd table, files->file_lock must 583. For any update to the fd table, files->file_lock must
59 be held. 59 be held.
60 60
614. To look up the file structure given an fd, a reader 614. To look up the file structure given an fd, a reader
diff --git a/Documentation/filesystems/gfs2.txt b/Documentation/filesystems/gfs2.txt
new file mode 100644
index 000000000000..593004b6bbab
--- /dev/null
+++ b/Documentation/filesystems/gfs2.txt
@@ -0,0 +1,43 @@
1Global File System
2------------------
3
4http://sources.redhat.com/cluster/
5
6GFS is a cluster file system. It allows a cluster of computers to
7simultaneously use a block device that is shared between them (with FC,
8iSCSI, NBD, etc). GFS reads and writes to the block device like a local
9file system, but also uses a lock module to allow the computers coordinate
10their I/O so file system consistency is maintained. One of the nifty
11features of GFS is perfect consistency -- changes made to the file system
12on one machine show up immediately on all other machines in the cluster.
13
14GFS uses interchangable inter-node locking mechanisms. Different lock
15modules can plug into GFS and each file system selects the appropriate
16lock module at mount time. Lock modules include:
17
18 lock_nolock -- allows gfs to be used as a local file system
19
20 lock_dlm -- uses a distributed lock manager (dlm) for inter-node locking
21 The dlm is found at linux/fs/dlm/
22
23In addition to interfacing with an external locking manager, a gfs lock
24module is responsible for interacting with external cluster management
25systems. Lock_dlm depends on user space cluster management systems found
26at the URL above.
27
28To use gfs as a local file system, no external clustering systems are
29needed, simply:
30
31 $ mkfs -t gfs2 -p lock_nolock -j 1 /dev/block_device
32 $ mount -t gfs2 /dev/block_device /dir
33
34GFS2 is not on-disk compatible with previous versions of GFS.
35
36The following man pages can be found at the URL above:
37 gfs2_fsck to repair a filesystem
38 gfs2_grow to expand a filesystem online
39 gfs2_jadd to add journals to a filesystem online
40 gfs2_tool to manipulate, examine and tune a filesystem
41 gfs2_quota to examine and change quota values in a filesystem
42 mount.gfs2 to help mount(8) mount a filesystem
43 mkfs.gfs2 to make a filesystem
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
index 638cbd3d2b00..35f105b29e3e 100644
--- a/Documentation/filesystems/ntfs.txt
+++ b/Documentation/filesystems/ntfs.txt
@@ -13,7 +13,7 @@ Table of contents
13- Using NTFS volume and stripe sets 13- Using NTFS volume and stripe sets
14 - The Device-Mapper driver 14 - The Device-Mapper driver
15 - The Software RAID / MD driver 15 - The Software RAID / MD driver
16 - Limitiations when using the MD driver 16 - Limitations when using the MD driver
17- ChangeLog 17- ChangeLog
18 18
19 19
@@ -43,7 +43,7 @@ There is plenty of additional information on the linux-ntfs web site
43at http://linux-ntfs.sourceforge.net/ 43at http://linux-ntfs.sourceforge.net/
44 44
45The web site has a lot of additional information, such as a comprehensive 45The web site has a lot of additional information, such as a comprehensive
46FAQ, documentation on the NTFS on-disk format, informaiton on the Linux-NTFS 46FAQ, documentation on the NTFS on-disk format, information on the Linux-NTFS
47userspace utilities, etc. 47userspace utilities, etc.
48 48
49 49
@@ -383,14 +383,14 @@ Software RAID / MD driver. For which you need to set up your /etc/raidtab
383appropriately (see man 5 raidtab). 383appropriately (see man 5 raidtab).
384 384
385Linear volume sets, i.e. linear raid, as well as stripe sets, i.e. raid level 385Linear volume sets, i.e. linear raid, as well as stripe sets, i.e. raid level
3860, have been tested and work fine (though see section "Limitiations when using 3860, have been tested and work fine (though see section "Limitations when using
387the MD driver with NTFS volumes" especially if you want to use linear raid). 387the MD driver with NTFS volumes" especially if you want to use linear raid).
388Even though untested, there is no reason why mirrors, i.e. raid level 1, and 388Even though untested, there is no reason why mirrors, i.e. raid level 1, and
389stripes with parity, i.e. raid level 5, should not work, too. 389stripes with parity, i.e. raid level 5, should not work, too.
390 390
391You have to use the "persistent-superblock 0" option for each raid-disk in the 391You have to use the "persistent-superblock 0" option for each raid-disk in the
392NTFS volume/stripe you are configuring in /etc/raidtab as the persistent 392NTFS volume/stripe you are configuring in /etc/raidtab as the persistent
393superblock used by the MD driver would damange the NTFS volume. 393superblock used by the MD driver would damage the NTFS volume.
394 394
395Windows by default uses a stripe chunk size of 64k, so you probably want the 395Windows by default uses a stripe chunk size of 64k, so you probably want the
396"chunk-size 64k" option for each raid-disk, too. 396"chunk-size 64k" option for each raid-disk, too.
@@ -435,7 +435,7 @@ setup correctly to avoid the possibility of causing damage to the data on the
435ntfs volume. 435ntfs volume.
436 436
437 437
438Limitiations when using the Software RAID / MD driver 438Limitations when using the Software RAID / MD driver
439----------------------------------------------------- 439-----------------------------------------------------
440 440
441Using the md driver will not work properly if any of your NTFS partitions have 441Using the md driver will not work properly if any of your NTFS partitions have
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index 99902ae6804e..3355e6920105 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -39,6 +39,8 @@ Table of Contents
39 2.9 Appletalk 39 2.9 Appletalk
40 2.10 IPX 40 2.10 IPX
41 2.11 /proc/sys/fs/mqueue - POSIX message queues filesystem 41 2.11 /proc/sys/fs/mqueue - POSIX message queues filesystem
42 2.12 /proc/<pid>/oom_adj - Adjust the oom-killer score
43 2.13 /proc/<pid>/oom_score - Display current oom-killer score
42 44
43------------------------------------------------------------------------------ 45------------------------------------------------------------------------------
44Preface 46Preface
@@ -408,7 +410,7 @@ VmallocChunk: 111088 kB
408 this memory, making it slower to access than lowmem. 410 this memory, making it slower to access than lowmem.
409 LowTotal: 411 LowTotal:
410 LowFree: Lowmem is memory which can be used for everything that 412 LowFree: Lowmem is memory which can be used for everything that
411 highmem can be used for, but it is also availble for the 413 highmem can be used for, but it is also available for the
412 kernel's use for its own data structures. Among many 414 kernel's use for its own data structures. Among many
413 other things, it is where everything from the Slab is 415 other things, it is where everything from the Slab is
414 allocated. Bad things happen when you're out of lowmem. 416 allocated. Bad things happen when you're out of lowmem.
@@ -1124,11 +1126,15 @@ debugging information is displayed on console.
1124NMI switch that most IA32 servers have fires unknown NMI up, for example. 1126NMI switch that most IA32 servers have fires unknown NMI up, for example.
1125If a system hangs up, try pressing the NMI switch. 1127If a system hangs up, try pressing the NMI switch.
1126 1128
1127[NOTE] 1129nmi_watchdog
1128 This function and oprofile share a NMI callback. Therefore this function 1130------------
1129 cannot be enabled when oprofile is activated. 1131
1130 And NMI watchdog will be disabled when the value in this file is set to 1132Enables/Disables the NMI watchdog on x86 systems. When the value is non-zero
1131 non-zero. 1133the NMI watchdog is enabled and will continuously test all online cpus to
1134determine whether or not they are still functioning properly.
1135
1136Because the NMI watchdog shares registers with oprofile, by disabling the NMI
1137watchdog, oprofile may have more registers to utilize.
1132 1138
1133 1139
11342.4 /proc/sys/vm - The virtual memory subsystem 11402.4 /proc/sys/vm - The virtual memory subsystem
@@ -1249,7 +1255,7 @@ to allocate (but not use) more memory than is actually available.
1249 address space are refused. Used for a typical system. It 1255 address space are refused. Used for a typical system. It
1250 ensures a seriously wild allocation fails while allowing 1256 ensures a seriously wild allocation fails while allowing
1251 overcommit to reduce swap usage. root is allowed to 1257 overcommit to reduce swap usage. root is allowed to
1252 allocate slighly more memory in this mode. This is the 1258 allocate slightly more memory in this mode. This is the
1253 default. 1259 default.
1254 1260
12551 - Always overcommit. Appropriate for some scientific 12611 - Always overcommit. Appropriate for some scientific
@@ -1582,7 +1588,7 @@ Enable the strict RFC793 interpretation of the TCP urgent pointer field. The
1582default is to use the BSD compatible interpretation of the urgent pointer 1588default is to use the BSD compatible interpretation of the urgent pointer
1583pointing to the first byte after the urgent data. The RFC793 interpretation is 1589pointing to the first byte after the urgent data. The RFC793 interpretation is
1584to have it point to the last byte of urgent data. Enabling this option may 1590to have it point to the last byte of urgent data. Enabling this option may
1585lead to interoperatibility problems. Disabled by default. 1591lead to interoperability problems. Disabled by default.
1586 1592
1587tcp_syncookies 1593tcp_syncookies
1588-------------- 1594--------------
@@ -1727,7 +1733,7 @@ error_burst and error_cost
1727 1733
1728These parameters are used to limit how many ICMP destination unreachable to 1734These parameters are used to limit how many ICMP destination unreachable to
1729send from the host in question. ICMP destination unreachable messages are 1735send from the host in question. ICMP destination unreachable messages are
1730sent when we can not reach the next hop, while trying to transmit a packet. 1736sent when we cannot reach the next hop while trying to transmit a packet.
1731It will also print some error messages to kernel logs if someone is ignoring 1737It will also print some error messages to kernel logs if someone is ignoring
1732our ICMP redirects. The higher the error_cost factor is, the fewer 1738our ICMP redirects. The higher the error_cost factor is, the fewer
1733destination unreachable and error messages will be let through. Error_burst 1739destination unreachable and error messages will be let through. Error_burst
@@ -1851,7 +1857,7 @@ proxy_qlen
1851 1857
1852Maximum queue length of the delayed proxy arp timer. (see proxy_delay). 1858Maximum queue length of the delayed proxy arp timer. (see proxy_delay).
1853 1859
1854app_solcit 1860app_solicit
1855---------- 1861----------
1856 1862
1857Determines the number of requests to send to the user level ARP daemon. Use 0 1863Determines the number of requests to send to the user level ARP daemon. Use 0
@@ -1958,6 +1964,22 @@ a queue must be less or equal then msg_max.
1958maximum message size value (it is every message queue's attribute set during 1964maximum message size value (it is every message queue's attribute set during
1959its creation). 1965its creation).
1960 1966
19672.12 /proc/<pid>/oom_adj - Adjust the oom-killer score
1968------------------------------------------------------
1969
1970This file can be used to adjust the score used to select which processes
1971should be killed in an out-of-memory situation. Giving it a high score will
1972increase the likelihood of this process being killed by the oom-killer. Valid
1973values are in the range -16 to +15, plus the special value -17, which disables
1974oom-killing altogether for this process.
1975
19762.13 /proc/<pid>/oom_score - Display current oom-killer score
1977-------------------------------------------------------------
1978
1979------------------------------------------------------------------------------
1980This file can be used to check the current score used by the oom-killer is for
1981any given <pid>. Use it together with /proc/<pid>/oom_adj to tune which
1982process should be killed in an out-of-memory situation.
1961 1983
1962------------------------------------------------------------------------------ 1984------------------------------------------------------------------------------
1963Summary 1985Summary
diff --git a/Documentation/filesystems/spufs.txt b/Documentation/filesystems/spufs.txt
index 8edc3952eff4..982645a1981d 100644
--- a/Documentation/filesystems/spufs.txt
+++ b/Documentation/filesystems/spufs.txt
@@ -84,7 +84,7 @@ FILES
84 /ibox 84 /ibox
85 The second SPU to CPU communication mailbox. This file is similar to 85 The second SPU to CPU communication mailbox. This file is similar to
86 the first mailbox file, but can be read in blocking I/O mode, and the 86 the first mailbox file, but can be read in blocking I/O mode, and the
87 poll familiy of system calls can be used to wait for it. The possible 87 poll family of system calls can be used to wait for it. The possible
88 operations on an open ibox file are: 88 operations on an open ibox file are:
89 89
90 read(2) 90 read(2)
@@ -105,7 +105,7 @@ FILES
105 105
106 106
107 /wbox 107 /wbox
108 The CPU to SPU communation mailbox. It is write-only can can be written 108 The CPU to SPU communation mailbox. It is write-only and can be written
109 in units of 32 bits. If the mailbox is full, write() will block and 109 in units of 32 bits. If the mailbox is full, write() will block and
110 poll can be used to wait for it becoming empty again. The possible 110 poll can be used to wait for it becoming empty again. The possible
111 operations on an open wbox file are: write(2) If a count smaller than 111 operations on an open wbox file are: write(2) If a count smaller than
@@ -359,7 +359,7 @@ ERRORS
359 EFAULT npc is not a valid pointer or status is neither NULL nor a valid 359 EFAULT npc is not a valid pointer or status is neither NULL nor a valid
360 pointer. 360 pointer.
361 361
362 EINTR A signal occured while spu_run was in progress. The npc value 362 EINTR A signal occurred while spu_run was in progress. The npc value
363 has been updated to the new program counter value if necessary. 363 has been updated to the new program counter value if necessary.
364 364
365 EINVAL fd is not a file descriptor returned from spu_create(2). 365 EINVAL fd is not a file descriptor returned from spu_create(2).
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt
index 89b1d196ca80..4b5ca26e5048 100644
--- a/Documentation/filesystems/sysfs.txt
+++ b/Documentation/filesystems/sysfs.txt
@@ -238,7 +238,7 @@ Top Level Directory Layout
238The sysfs directory arrangement exposes the relationship of kernel 238The sysfs directory arrangement exposes the relationship of kernel
239data structures. 239data structures.
240 240
241The top level sysfs diretory looks like: 241The top level sysfs directory looks like:
242 242
243block/ 243block/
244bus/ 244bus/
diff --git a/Documentation/filesystems/tmpfs.txt b/Documentation/filesystems/tmpfs.txt
index 1773106976a2..6dd050878a20 100644
--- a/Documentation/filesystems/tmpfs.txt
+++ b/Documentation/filesystems/tmpfs.txt
@@ -39,7 +39,7 @@ tmpfs has the following uses:
39 tmpfs /dev/shm tmpfs defaults 0 0 39 tmpfs /dev/shm tmpfs defaults 0 0
40 40
41 Remember to create the directory that you intend to mount tmpfs on 41 Remember to create the directory that you intend to mount tmpfs on
42 if necessary (/dev/shm is automagically created if you use devfs). 42 if necessary.
43 43
44 This mount is _not_ needed for SYSV shared memory. The internal 44 This mount is _not_ needed for SYSV shared memory. The internal
45 mount is used for that. (In the 2.3 kernel versions it was 45 mount is used for that. (In the 2.3 kernel versions it was
@@ -63,7 +63,7 @@ size: The limit of allocated bytes for this tmpfs instance. The
63nr_blocks: The same as size, but in blocks of PAGE_CACHE_SIZE. 63nr_blocks: The same as size, but in blocks of PAGE_CACHE_SIZE.
64nr_inodes: The maximum number of inodes for this instance. The default 64nr_inodes: The maximum number of inodes for this instance. The default
65 is half of the number of your physical RAM pages, or (on a 65 is half of the number of your physical RAM pages, or (on a
66 a machine with highmem) the number of lowmem RAM pages, 66 machine with highmem) the number of lowmem RAM pages,
67 whichever is the lower. 67 whichever is the lower.
68 68
69These parameters accept a suffix k, m or g for kilo, mega and giga and 69These parameters accept a suffix k, m or g for kilo, mega and giga and
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
index 2001abbc60e6..069cb1094300 100644
--- a/Documentation/filesystems/vfat.txt
+++ b/Documentation/filesystems/vfat.txt
@@ -35,7 +35,7 @@ iocharset=name -- Character set to use for converting between the
35 you should consider the following option instead. 35 you should consider the following option instead.
36 36
37utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that 37utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that
38 is used by the console. It can be be enabled for the 38 is used by the console. It can be enabled for the
39 filesystem with this option. If 'uni_xlate' gets set, 39 filesystem with this option. If 'uni_xlate' gets set,
40 UTF-8 gets disabled. 40 UTF-8 gets disabled.
41 41
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 1cb7e8be927a..7737bfd03cf8 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -410,7 +410,7 @@ otherwise noted.
410 410
411 put_link: called by the VFS to release resources allocated by 411 put_link: called by the VFS to release resources allocated by
412 follow_link(). The cookie returned by follow_link() is passed 412 follow_link(). The cookie returned by follow_link() is passed
413 to to this method as the last parameter. It is used by 413 to this method as the last parameter. It is used by
414 filesystems such as NFS where page cache is not stable 414 filesystems such as NFS where page cache is not stable
415 (i.e. page that was installed when the symbolic link walk 415 (i.e. page that was installed when the symbolic link walk
416 started might not be in the page cache at the end of the 416 started might not be in the page cache at the end of the
@@ -699,9 +699,9 @@ This describes how the VFS can manipulate an open file. As of kernel
699struct file_operations { 699struct file_operations {
700 loff_t (*llseek) (struct file *, loff_t, int); 700 loff_t (*llseek) (struct file *, loff_t, int);
701 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); 701 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
702 ssize_t (*aio_read) (struct kiocb *, char __user *, size_t, loff_t);
703 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); 702 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
704 ssize_t (*aio_write) (struct kiocb *, const char __user *, size_t, loff_t); 703 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
704 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
705 int (*readdir) (struct file *, void *, filldir_t); 705 int (*readdir) (struct file *, void *, filldir_t);
706 unsigned int (*poll) (struct file *, struct poll_table_struct *); 706 unsigned int (*poll) (struct file *, struct poll_table_struct *);
707 int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); 707 int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
diff --git a/Documentation/fujitsu/frv/mmu-layout.txt b/Documentation/fujitsu/frv/mmu-layout.txt
index 11dcc5679887..db10250df6be 100644
--- a/Documentation/fujitsu/frv/mmu-layout.txt
+++ b/Documentation/fujitsu/frv/mmu-layout.txt
@@ -233,7 +233,7 @@ related kernel services:
233 (*) __debug_mmu.iamr[] 233 (*) __debug_mmu.iamr[]
234 (*) __debug_mmu.damr[] 234 (*) __debug_mmu.damr[]
235 235
236 These receive the current IAMR and DAMR contents. These can be viewed with with the _amr 236 These receive the current IAMR and DAMR contents. These can be viewed with the _amr
237 GDB macro: 237 GDB macro:
238 238
239 (gdb) _amr 239 (gdb) _amr
diff --git a/Documentation/highuid.txt b/Documentation/highuid.txt
index 2c33926b9099..76034d9dbfc0 100644
--- a/Documentation/highuid.txt
+++ b/Documentation/highuid.txt
@@ -57,7 +57,7 @@ What's left to be done for 32-bit UIDs on all Linux architectures:
57 57
58 Other filesystems have not been checked yet. 58 Other filesystems have not been checked yet.
59 59
60- The ncpfs and smpfs filesystems can not presently use 32-bit UIDs in 60- The ncpfs and smpfs filesystems cannot presently use 32-bit UIDs in
61 all ioctl()s. Some new ioctl()s have been added with 32-bit UIDs, but 61 all ioctl()s. Some new ioctl()s have been added with 32-bit UIDs, but
62 more are needed. (as well as new user<->kernel data structures) 62 more are needed. (as well as new user<->kernel data structures)
63 63
diff --git a/Documentation/hrtimers.txt b/Documentation/hrtimers.txt
index 7620ff735faf..ce31f65e12e7 100644
--- a/Documentation/hrtimers.txt
+++ b/Documentation/hrtimers.txt
@@ -10,7 +10,7 @@ back and forth trying to integrate high-resolution and high-precision
10features into the existing timer framework, and after testing various 10features into the existing timer framework, and after testing various
11such high-resolution timer implementations in practice, we came to the 11such high-resolution timer implementations in practice, we came to the
12conclusion that the timer wheel code is fundamentally not suitable for 12conclusion that the timer wheel code is fundamentally not suitable for
13such an approach. We initially didnt believe this ('there must be a way 13such an approach. We initially didn't believe this ('there must be a way
14to solve this'), and spent a considerable effort trying to integrate 14to solve this'), and spent a considerable effort trying to integrate
15things into the timer wheel, but we failed. In hindsight, there are 15things into the timer wheel, but we failed. In hindsight, there are
16several reasons why such integration is hard/impossible: 16several reasons why such integration is hard/impossible:
@@ -27,7 +27,7 @@ several reasons why such integration is hard/impossible:
27 high-res timers. 27 high-res timers.
28 28
29- the unpredictable [O(N)] overhead of cascading leads to delays which 29- the unpredictable [O(N)] overhead of cascading leads to delays which
30 necessiate a more complex handling of high resolution timers, which 30 necessitate a more complex handling of high resolution timers, which
31 in turn decreases robustness. Such a design still led to rather large 31 in turn decreases robustness. Such a design still led to rather large
32 timing inaccuracies. Cascading is a fundamental property of the timer 32 timing inaccuracies. Cascading is a fundamental property of the timer
33 wheel concept, it cannot be 'designed out' without unevitably 33 wheel concept, it cannot be 'designed out' without unevitably
@@ -58,7 +58,7 @@ several reasons why such integration is hard/impossible:
58The primary users of precision timers are user-space applications that 58The primary users of precision timers are user-space applications that
59utilize nanosleep, posix-timers and itimer interfaces. Also, in-kernel 59utilize nanosleep, posix-timers and itimer interfaces. Also, in-kernel
60users like drivers and subsystems which require precise timed events 60users like drivers and subsystems which require precise timed events
61(e.g. multimedia) can benefit from the availability of a seperate 61(e.g. multimedia) can benefit from the availability of a separate
62high-resolution timer subsystem as well. 62high-resolution timer subsystem as well.
63 63
64While this subsystem does not offer high-resolution clock sources just 64While this subsystem does not offer high-resolution clock sources just
@@ -68,7 +68,7 @@ The increasing demand for realtime and multimedia applications along
68with other potential users for precise timers gives another reason to 68with other potential users for precise timers gives another reason to
69separate the "timeout" and "precise timer" subsystems. 69separate the "timeout" and "precise timer" subsystems.
70 70
71Another potential benefit is that such a seperation allows even more 71Another potential benefit is that such a separation allows even more
72special-purpose optimization of the existing timer wheel for the low 72special-purpose optimization of the existing timer wheel for the low
73resolution and low precision use cases - once the precision-sensitive 73resolution and low precision use cases - once the precision-sensitive
74APIs are separated from the timer wheel and are migrated over to 74APIs are separated from the timer wheel and are migrated over to
@@ -96,8 +96,8 @@ file systems. The rbtree is solely used for time sorted ordering, while
96a separate list is used to give the expiry code fast access to the 96a separate list is used to give the expiry code fast access to the
97queued timers, without having to walk the rbtree. 97queued timers, without having to walk the rbtree.
98 98
99(This seperate list is also useful for later when we'll introduce 99(This separate list is also useful for later when we'll introduce
100high-resolution clocks, where we need seperate pending and expired 100high-resolution clocks, where we need separate pending and expired
101queues while keeping the time-order intact.) 101queues while keeping the time-order intact.)
102 102
103Time-ordered enqueueing is not purely for the purposes of 103Time-ordered enqueueing is not purely for the purposes of
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
index 9555be1ed999..e783fd62e308 100644
--- a/Documentation/hwmon/it87
+++ b/Documentation/hwmon/it87
@@ -13,12 +13,25 @@ Supported chips:
13 from Super I/O config space (8 I/O ports) 13 from Super I/O config space (8 I/O ports)
14 Datasheet: Publicly available at the ITE website 14 Datasheet: Publicly available at the ITE website
15 http://www.ite.com.tw/ 15 http://www.ite.com.tw/
16 * IT8716F
17 Prefix: 'it8716'
18 Addresses scanned: from Super I/O config space (8 I/O ports)
19 Datasheet: Publicly available at the ITE website
20 http://www.ite.com.tw/product_info/file/pc/IT8716F_V0.3.ZIP
21 * IT8718F
22 Prefix: 'it8718'
23 Addresses scanned: from Super I/O config space (8 I/O ports)
24 Datasheet: Publicly available at the ITE website
25 http://www.ite.com.tw/product_info/file/pc/IT8718F_V0.2.zip
26 http://www.ite.com.tw/product_info/file/pc/IT8718F_V0%203_(for%20C%20version).zip
16 * SiS950 [clone of IT8705F] 27 * SiS950 [clone of IT8705F]
17 Prefix: 'it87' 28 Prefix: 'it87'
18 Addresses scanned: from Super I/O config space (8 I/O ports) 29 Addresses scanned: from Super I/O config space (8 I/O ports)
19 Datasheet: No longer be available 30 Datasheet: No longer be available
20 31
21Author: Christophe Gauthron <chrisg@0-in.com> 32Authors:
33 Christophe Gauthron <chrisg@0-in.com>
34 Jean Delvare <khali@linux-fr.org>
22 35
23 36
24Module Parameters 37Module Parameters
@@ -43,26 +56,46 @@ Module Parameters
43Description 56Description
44----------- 57-----------
45 58
46This driver implements support for the IT8705F, IT8712F and SiS950 chips. 59This driver implements support for the IT8705F, IT8712F, IT8716F,
47 60IT8718F and SiS950 chips.
48This driver also supports IT8712F, which adds SMBus access, and a VID
49input, used to report the Vcore voltage of the Pentium processor.
50The IT8712F additionally features VID inputs.
51 61
52These chips are 'Super I/O chips', supporting floppy disks, infrared ports, 62These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
53joysticks and other miscellaneous stuff. For hardware monitoring, they 63joysticks and other miscellaneous stuff. For hardware monitoring, they
54include an 'environment controller' with 3 temperature sensors, 3 fan 64include an 'environment controller' with 3 temperature sensors, 3 fan
55rotation speed sensors, 8 voltage sensors, and associated alarms. 65rotation speed sensors, 8 voltage sensors, and associated alarms.
56 66
67The IT8712F and IT8716F additionally feature VID inputs, used to report
68the Vcore voltage of the processor. The early IT8712F have 5 VID pins,
69the IT8716F and late IT8712F have 6. They are shared with other functions
70though, so the functionality may not be available on a given system.
71The driver dumbly assume it is there.
72
73The IT8718F also features VID inputs (up to 8 pins) but the value is
74stored in the Super-I/O configuration space. Due to technical limitations,
75this value can currently only be read once at initialization time, so
76the driver won't notice and report changes in the VID value. The two
77upper VID bits share their pins with voltage inputs (in5 and in6) so you
78can't have both on a given board.
79
80The IT8716F, IT8718F and later IT8712F revisions have support for
812 additional fans. They are not yet supported by the driver.
82
83The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional
8416-bit tachometer counters for fans 1 to 3. This is better (no more fan
85clock divider mess) but not compatible with the older chips and
86revisions. For now, the driver only uses the 16-bit mode on the
87IT8716F and IT8718F.
88
57Temperatures are measured in degrees Celsius. An alarm is triggered once 89Temperatures are measured in degrees Celsius. An alarm is triggered once
58when the Overtemperature Shutdown limit is crossed. 90when the Overtemperature Shutdown limit is crossed.
59 91
60Fan rotation speeds are reported in RPM (rotations per minute). An alarm is 92Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
61triggered if the rotation speed has dropped below a programmable limit. Fan 93triggered if the rotation speed has dropped below a programmable limit. When
62readings can be divided by a programmable divider (1, 2, 4 or 8) to give the 9416-bit tachometer counters aren't used, fan readings can be divided by
63readings more range or accuracy. Not all RPM values can accurately be 95a programmable divider (1, 2, 4 or 8) to give the readings more range or
64represented, so some rounding is done. With a divider of 2, the lowest 96accuracy. With a divider of 2, the lowest representable value is around
65representable value is around 2600 RPM. 972600 RPM. Not all RPM values can accurately be represented, so some rounding
98is done.
66 99
67Voltage sensors (also known as IN sensors) report their values in volts. An 100Voltage sensors (also known as IN sensors) report their values in volts. An
68alarm is triggered if the voltage has crossed a programmable minimum or 101alarm is triggered if the voltage has crossed a programmable minimum or
@@ -71,9 +104,9 @@ zero'; this is important for negative voltage measurements. All voltage
71inputs can measure voltages between 0 and 4.08 volts, with a resolution of 104inputs can measure voltages between 0 and 4.08 volts, with a resolution of
720.016 volt. The battery voltage in8 does not have limit registers. 1050.016 volt. The battery voltage in8 does not have limit registers.
73 106
74The VID lines (IT8712F only) encode the core voltage value: the voltage 107The VID lines (IT8712F/IT8716F/IT8718F) encode the core voltage value:
75level your processor should work with. This is hardcoded by the mainboard 108the voltage level your processor should work with. This is hardcoded by
76and/or processor itself. It is a value in volts. 109the mainboard and/or processor itself. It is a value in volts.
77 110
78If an alarm triggers, it will remain triggered until the hardware register 111If an alarm triggers, it will remain triggered until the hardware register
79is read at least once. This means that the cause for the alarm may already 112is read at least once. This means that the cause for the alarm may already
diff --git a/Documentation/hwmon/k8temp b/Documentation/hwmon/k8temp
new file mode 100644
index 000000000000..bab445ab0f52
--- /dev/null
+++ b/Documentation/hwmon/k8temp
@@ -0,0 +1,52 @@
1Kernel driver k8temp
2====================
3
4Supported chips:
5 * AMD K8 CPU
6 Prefix: 'k8temp'
7 Addresses scanned: PCI space
8 Datasheet: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/32559.pdf
9
10Author: Rudolf Marek
11Contact: Rudolf Marek <r.marek@sh.cvut.cz>
12
13Description
14-----------
15
16This driver permits reading temperature sensor(s) embedded inside AMD K8 CPUs.
17Official documentation says that it works from revision F of K8 core, but
18in fact it seems to be implemented for all revisions of K8 except the first
19two revisions (SH-B0 and SH-B3).
20
21There can be up to four temperature sensors inside single CPU. The driver
22will auto-detect the sensors and will display only temperatures from
23implemented sensors.
24
25Mapping of /sys files is as follows:
26
27temp1_input - temperature of Core 0 and "place" 0
28temp2_input - temperature of Core 0 and "place" 1
29temp3_input - temperature of Core 1 and "place" 0
30temp4_input - temperature of Core 1 and "place" 1
31
32Temperatures are measured in degrees Celsius and measurement resolution is
331 degree C. It is expected that future CPU will have better resolution. The
34temperature is updated once a second. Valid temperatures are from -49 to
35206 degrees C.
36
37Temperature known as TCaseMax was specified for processors up to revision E.
38This temperature is defined as temperature between heat-spreader and CPU
39case, so the internal CPU temperature supplied by this driver can be higher.
40There is no easy way how to measure the temperature which will correlate
41with TCaseMax temperature.
42
43For newer revisions of CPU (rev F, socket AM2) there is a mathematically
44computed temperature called TControl, which must be lower than TControlMax.
45
46The relationship is following:
47
48temp1_input - TjOffset*2 < TControlMax,
49
50TjOffset is not yet exported by the driver, TControlMax is usually
5170 degrees C. The rule of the thumb -> CPU temperature should not cross
5260 degrees C too much.
diff --git a/Documentation/hwmon/vt1211 b/Documentation/hwmon/vt1211
new file mode 100644
index 000000000000..77fa633b97a8
--- /dev/null
+++ b/Documentation/hwmon/vt1211
@@ -0,0 +1,206 @@
1Kernel driver vt1211
2====================
3
4Supported chips:
5 * VIA VT1211
6 Prefix: 'vt1211'
7 Addresses scanned: none, address read from Super-I/O config space
8 Datasheet: Provided by VIA upon request and under NDA
9
10Authors: Juerg Haefliger <juergh@gmail.com>
11
12This driver is based on the driver for kernel 2.4 by Mark D. Studebaker and
13its port to kernel 2.6 by Lars Ekman.
14
15Thanks to Joseph Chan and Fiona Gatt from VIA for providing documentation and
16technical support.
17
18
19Module Parameters
20-----------------
21
22* uch_config: int Override the BIOS default universal channel (UCH)
23 configuration for channels 1-5.
24 Legal values are in the range of 0-31. Bit 0 maps to
25 UCH1, bit 1 maps to UCH2 and so on. Setting a bit to 1
26 enables the thermal input of that particular UCH and
27 setting a bit to 0 enables the voltage input.
28
29* int_mode: int Override the BIOS default temperature interrupt mode.
30 The only possible value is 0 which forces interrupt
31 mode 0. In this mode, any pending interrupt is cleared
32 when the status register is read but is regenerated as
33 long as the temperature stays above the hysteresis
34 limit.
35
36Be aware that overriding BIOS defaults might cause some unwanted side effects!
37
38
39Description
40-----------
41
42The VIA VT1211 Super-I/O chip includes complete hardware monitoring
43capabilities. It monitors 2 dedicated temperature sensor inputs (temp1 and
44temp2), 1 dedicated voltage (in5) and 2 fans. Additionally, the chip
45implements 5 universal input channels (UCH1-5) that can be individually
46programmed to either monitor a voltage or a temperature.
47
48This chip also provides manual and automatic control of fan speeds (according
49to the datasheet). The driver only supports automatic control since the manual
50mode doesn't seem to work as advertised in the datasheet. In fact I couldn't
51get manual mode to work at all! Be aware that automatic mode hasn't been
52tested very well (due to the fact that my EPIA M10000 doesn't have the fans
53connected to the PWM outputs of the VT1211 :-().
54
55The following table shows the relationship between the vt1211 inputs and the
56sysfs nodes.
57
58Sensor Voltage Mode Temp Mode Default Use (from the datasheet)
59------ ------------ --------- --------------------------------
60Reading 1 temp1 Intel thermal diode
61Reading 3 temp2 Internal thermal diode
62UCH1/Reading2 in0 temp3 NTC type thermistor
63UCH2 in1 temp4 +2.5V
64UCH3 in2 temp5 VccP (processor core)
65UCH4 in3 temp6 +5V
66UCH5 in4 temp7 +12V
67+3.3V in5 Internal VCC (+3.3V)
68
69
70Voltage Monitoring
71------------------
72
73Voltages are sampled by an 8-bit ADC with a LSB of ~10mV. The supported input
74range is thus from 0 to 2.60V. Voltage values outside of this range need
75external scaling resistors. This external scaling needs to be compensated for
76via compute lines in sensors.conf, like:
77
78compute inx @*(1+R1/R2), @/(1+R1/R2)
79
80The board level scaling resistors according to VIA's recommendation are as
81follows. And this is of course totally dependent on the actual board
82implementation :-) You will have to find documentation for your own
83motherboard and edit sensors.conf accordingly.
84
85 Expected
86Voltage R1 R2 Divider Raw Value
87-----------------------------------------------
88+2.5V 2K 10K 1.2 2083 mV
89VccP --- --- 1.0 1400 mV (1)
90+5V 14K 10K 2.4 2083 mV
91+12V 47K 10K 5.7 2105 mV
92+3.3V (int) 2K 3.4K 1.588 3300 mV (2)
93+3.3V (ext) 6.8K 10K 1.68 1964 mV
94
95(1) Depending on the CPU (1.4V is for a VIA C3 Nehemiah).
96(2) R1 and R2 for 3.3V (int) are internal to the VT1211 chip and the driver
97 performs the scaling and returns the properly scaled voltage value.
98
99Each measured voltage has an associated low and high limit which triggers an
100alarm when crossed.
101
102
103Temperature Monitoring
104----------------------
105
106Temperatures are reported in millidegree Celsius. Each measured temperature
107has a high limit which triggers an alarm if crossed. There is an associated
108hysteresis value with each temperature below which the temperature has to drop
109before the alarm is cleared (this is only true for interrupt mode 0). The
110interrupt mode can be forced to 0 in case the BIOS doesn't do it
111automatically. See the 'Module Parameters' section for details.
112
113All temperature channels except temp2 are external. Temp2 is the VT1211
114internal thermal diode and the driver does all the scaling for temp2 and
115returns the temperature in millidegree Celsius. For the external channels
116temp1 and temp3-temp7, scaling depends on the board implementation and needs
117to be performed in userspace via sensors.conf.
118
119Temp1 is an Intel-type thermal diode which requires the following formula to
120convert between sysfs readings and real temperatures:
121
122compute temp1 (@-Offset)/Gain, (@*Gain)+Offset
123
124According to the VIA VT1211 BIOS porting guide, the following gain and offset
125values should be used:
126
127Diode Type Offset Gain
128---------- ------ ----
129Intel CPU 88.638 0.9528
130 65.000 0.9686 *)
131VIA C3 Ezra 83.869 0.9528
132VIA C3 Ezra-T 73.869 0.9528
133
134*) This is the formula from the lm_sensors 2.10.0 sensors.conf file. I don't
135know where it comes from or how it was derived, it's just listed here for
136completeness.
137
138Temp3-temp7 support NTC thermistors. For these channels, the driver returns
139the voltages as seen at the individual pins of UCH1-UCH5. The voltage at the
140pin (Vpin) is formed by a voltage divider made of the thermistor (Rth) and a
141scaling resistor (Rs):
142
143Vpin = 2200 * Rth / (Rs + Rth) (2200 is the ADC max limit of 2200 mV)
144
145The equation for the thermistor is as follows (google it if you want to know
146more about it):
147
148Rth = Ro * exp(B * (1 / T - 1 / To)) (To is 298.15K (25C) and Ro is the
149 nominal resistance at 25C)
150
151Mingling the above two equations and assuming Rs = Ro and B = 3435 yields the
152following formula for sensors.conf:
153
154compute tempx 1 / (1 / 298.15 - (` (2200 / @ - 1)) / 3435) - 273.15,
155 2200 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @))))
156
157
158Fan Speed Control
159-----------------
160
161The VT1211 provides 2 programmable PWM outputs to control the speeds of 2
162fans. Writing a 2 to any of the two pwm[1-2]_enable sysfs nodes will put the
163PWM controller in automatic mode. There is only a single controller that
164controls both PWM outputs but each PWM output can be individually enabled and
165disabled.
166
167Each PWM has 4 associated distinct output duty-cycles: full, high, low and
168off. Full and off are internally hard-wired to 255 (100%) and 0 (0%),
169respectively. High and low can be programmed via
170pwm[1-2]_auto_point[2-3]_pwm. Each PWM output can be associated with a
171different thermal input but - and here's the weird part - only one set of
172thermal thresholds exist that controls both PWMs output duty-cycles. The
173thermal thresholds are accessible via pwm[1-2]_auto_point[1-4]_temp. Note
174that even though there are 2 sets of 4 auto points each, they map to the same
175registers in the VT1211 and programming one set is sufficient (actually only
176the first set pwm1_auto_point[1-4]_temp is writable, the second set is
177read-only).
178
179PWM Auto Point PWM Output Duty-Cycle
180------------------------------------------------
181pwm[1-2]_auto_point4_pwm full speed duty-cycle (hard-wired to 255)
182pwm[1-2]_auto_point3_pwm high speed duty-cycle
183pwm[1-2]_auto_point2_pwm low speed duty-cycle
184pwm[1-2]_auto_point1_pwm off duty-cycle (hard-wired to 0)
185
186Temp Auto Point Thermal Threshold
187---------------------------------------------
188pwm[1-2]_auto_point4_temp full speed temp
189pwm[1-2]_auto_point3_temp high speed temp
190pwm[1-2]_auto_point2_temp low speed temp
191pwm[1-2]_auto_point1_temp off temp
192
193Long story short, the controller implements the following algorithm to set the
194PWM output duty-cycle based on the input temperature:
195
196Thermal Threshold Output Duty-Cycle
197 (Rising Temp) (Falling Temp)
198----------------------------------------------------------
199 full speed duty-cycle full speed duty-cycle
200full speed temp
201 high speed duty-cycle full speed duty-cycle
202high speed temp
203 low speed duty-cycle high speed duty-cycle
204low speed temp
205 off duty-cycle low speed duty-cycle
206off temp
diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf
new file mode 100644
index 000000000000..fae3b781d82d
--- /dev/null
+++ b/Documentation/hwmon/w83627ehf
@@ -0,0 +1,85 @@
1Kernel driver w83627ehf
2=======================
3
4Supported chips:
5 * Winbond W83627EHF/EHG (ISA access ONLY)
6 Prefix: 'w83627ehf'
7 Addresses scanned: ISA address retrieved from Super I/O registers
8 Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83627EHF_%20W83627EHGb.pdf
9
10Authors:
11 Jean Delvare <khali@linux-fr.org>
12 Yuan Mu (Winbond)
13 Rudolf Marek <r.marek@sh.cvut.cz>
14
15Description
16-----------
17
18This driver implements support for the Winbond W83627EHF and W83627EHG
19super I/O chips. We will refer to them collectively as Winbond chips.
20
21The chips implement three temperature sensors, five fan rotation
22speed sensors, ten analog voltage sensors, alarms with beep warnings (control
23unimplemented), and some automatic fan regulation strategies (plus manual
24fan control mode).
25
26Temperatures are measured in degrees Celsius and measurement resolution is 1
27degC for temp1 and 0.5 degC for temp2 and temp3. An alarm is triggered when
28the temperature gets higher than high limit; it stays on until the temperature
29falls below the Hysteresis value.
30
31Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
32triggered if the rotation speed has dropped below a programmable limit. Fan
33readings can be divided by a programmable divider (1, 2, 4, 8, 16, 32, 64 or
34128) to give the readings more range or accuracy. The driver sets the most
35suitable fan divisor itself. Some fans might not be present because they
36share pins with other functions.
37
38Voltage sensors (also known as IN sensors) report their values in millivolts.
39An alarm is triggered if the voltage has crossed a programmable minimum
40or maximum limit.
41
42The driver supports automatic fan control mode known as Thermal Cruise.
43In this mode, the chip attempts to keep the measured temperature in a
44predefined temperature range. If the temperature goes out of range, fan
45is driven slower/faster to reach the predefined range again.
46
47The mode works for fan1-fan4. Mapping of temperatures to pwm outputs is as
48follows:
49
50temp1 -> pwm1
51temp2 -> pwm2
52temp3 -> pwm3
53prog -> pwm4 (the programmable setting is not supported by the driver)
54
55/sys files
56----------
57
58pwm[1-4] - this file stores PWM duty cycle or DC value (fan speed) in range:
59 0 (stop) to 255 (full)
60
61pwm[1-4]_enable - this file controls mode of fan/temperature control:
62 * 1 Manual Mode, write to pwm file any value 0-255 (full speed)
63 * 2 Thermal Cruise
64
65Thermal Cruise mode
66-------------------
67
68If the temperature is in the range defined by:
69
70pwm[1-4]_target - set target temperature, unit millidegree Celcius
71 (range 0 - 127000)
72pwm[1-4]_tolerance - tolerance, unit millidegree Celcius (range 0 - 15000)
73
74there are no changes to fan speed. Once the temperature leaves the interval,
75fan speed increases (temp is higher) or decreases if lower than desired.
76There are defined steps and times, but not exported by the driver yet.
77
78pwm[1-4]_min_output - minimum fan speed (range 1 - 255), when the temperature
79 is below defined range.
80pwm[1-4]_stop_time - how many milliseconds [ms] must elapse to switch
81 corresponding fan off. (when the temperature was below
82 defined range).
83
84Note: last two functions are influenced by other control bits, not yet exported
85 by the driver, so a change might not have any effect.
diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d
index 83a3836289c2..19b2ed739fa1 100644
--- a/Documentation/hwmon/w83791d
+++ b/Documentation/hwmon/w83791d
@@ -5,7 +5,7 @@ Supported chips:
5 * Winbond W83791D 5 * Winbond W83791D
6 Prefix: 'w83791d' 6 Prefix: 'w83791d'
7 Addresses scanned: I2C 0x2c - 0x2f 7 Addresses scanned: I2C 0x2c - 0x2f
8 Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83791Da.pdf 8 Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/W83791D_W83791Gb.pdf
9 9
10Author: Charles Spirakis <bezaur@gmail.com> 10Author: Charles Spirakis <bezaur@gmail.com>
11 11
@@ -20,6 +20,9 @@ Credits:
20 Chunhao Huang <DZShen@Winbond.com.tw>, 20 Chunhao Huang <DZShen@Winbond.com.tw>,
21 Rudolf Marek <r.marek@sh.cvut.cz> 21 Rudolf Marek <r.marek@sh.cvut.cz>
22 22
23Additional contributors:
24 Sven Anders <anders@anduras.de>
25
23Module Parameters 26Module Parameters
24----------------- 27-----------------
25 28
@@ -46,7 +49,8 @@ Module Parameters
46Description 49Description
47----------- 50-----------
48 51
49This driver implements support for the Winbond W83791D chip. 52This driver implements support for the Winbond W83791D chip. The W83791G
53chip appears to be the same as the W83791D but is lead free.
50 54
51Detection of the chip can sometimes be foiled because it can be in an 55Detection of the chip can sometimes be foiled because it can be in an
52internal state that allows no clean access (Bank with ID register is not 56internal state that allows no clean access (Bank with ID register is not
@@ -71,34 +75,36 @@ Voltage sensors (also known as IN sensors) report their values in millivolts.
71An alarm is triggered if the voltage has crossed a programmable minimum 75An alarm is triggered if the voltage has crossed a programmable minimum
72or maximum limit. 76or maximum limit.
73 77
74Alarms are provided as output from a "realtime status register". The 78The bit ordering for the alarm "realtime status register" and the
75following bits are defined: 79"beep enable registers" are different.
76 80
77bit - alarm on: 81in0 (VCORE) : alarms: 0x000001 beep_enable: 0x000001
780 - Vcore 82in1 (VINR0) : alarms: 0x000002 beep_enable: 0x002000 <== mismatch
791 - VINR0 83in2 (+3.3VIN): alarms: 0x000004 beep_enable: 0x000004
802 - +3.3VIN 84in3 (5VDD) : alarms: 0x000008 beep_enable: 0x000008
813 - 5VDD 85in4 (+12VIN) : alarms: 0x000100 beep_enable: 0x000100
824 - temp1 86in5 (-12VIN) : alarms: 0x000200 beep_enable: 0x000200
835 - temp2 87in6 (-5VIN) : alarms: 0x000400 beep_enable: 0x000400
846 - fan1 88in7 (VSB) : alarms: 0x080000 beep_enable: 0x010000 <== mismatch
857 - fan2 89in8 (VBAT) : alarms: 0x100000 beep_enable: 0x020000 <== mismatch
868 - +12VIN 90in9 (VINR1) : alarms: 0x004000 beep_enable: 0x004000
879 - -12VIN 91temp1 : alarms: 0x000010 beep_enable: 0x000010
8810 - -5VIN 92temp2 : alarms: 0x000020 beep_enable: 0x000020
8911 - fan3 93temp3 : alarms: 0x002000 beep_enable: 0x000002 <== mismatch
9012 - chassis 94fan1 : alarms: 0x000040 beep_enable: 0x000040
9113 - temp3 95fan2 : alarms: 0x000080 beep_enable: 0x000080
9214 - VINR1 96fan3 : alarms: 0x000800 beep_enable: 0x000800
9315 - reserved 97fan4 : alarms: 0x200000 beep_enable: 0x200000
9416 - tart1 98fan5 : alarms: 0x400000 beep_enable: 0x400000
9517 - tart2 99tart1 : alarms: 0x010000 beep_enable: 0x040000 <== mismatch
9618 - tart3 100tart2 : alarms: 0x020000 beep_enable: 0x080000 <== mismatch
9719 - VSB 101tart3 : alarms: 0x040000 beep_enable: 0x100000 <== mismatch
9820 - VBAT 102case_open : alarms: 0x001000 beep_enable: 0x001000
9921 - fan4 103user_enable : alarms: -------- beep_enable: 0x800000
10022 - fan5 104
10123 - reserved 105*** NOTE: It is the responsibility of user-space code to handle the fact
106that the beep enable and alarm bits are in different positions when using that
107feature of the chip.
102 108
103When an alarm goes off, you can be warned by a beeping signal through your 109When an alarm goes off, you can be warned by a beeping signal through your
104computer speaker. It is possible to enable all beeping globally, or only 110computer speaker. It is possible to enable all beeping globally, or only
@@ -109,5 +115,6 @@ often will do no harm, but will return 'old' values.
109 115
110W83791D TODO: 116W83791D TODO:
111--------------- 117---------------
112Provide a patch for per-file alarms as discussed on the mailing list 118Provide a patch for per-file alarms and beep enables as defined in the hwmon
119 documentation (Documentation/hwmon/sysfs-interface)
113Provide a patch for smart-fan control (still need appropriate motherboard/fans) 120Provide a patch for smart-fan control (still need appropriate motherboard/fans)
diff --git a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro
index 16775663b9f5..25680346e0ac 100644
--- a/Documentation/i2c/busses/i2c-viapro
+++ b/Documentation/i2c/busses/i2c-viapro
@@ -7,9 +7,12 @@ Supported adapters:
7 * VIA Technologies, Inc. VT82C686A/B 7 * VIA Technologies, Inc. VT82C686A/B
8 Datasheet: Sometimes available at the VIA website 8 Datasheet: Sometimes available at the VIA website
9 9
10 * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237R 10 * VIA Technologies, Inc. VT8231, VT8233, VT8233A
11 Datasheet: available on request from VIA 11 Datasheet: available on request from VIA
12 12
13 * VIA Technologies, Inc. VT8235, VT8237R, VT8237A, VT8251
14 Datasheet: available on request and under NDA from VIA
15
13Authors: 16Authors:
14 Kyösti Mälkki <kmalkki@cc.hut.fi>, 17 Kyösti Mälkki <kmalkki@cc.hut.fi>,
15 Mark D. Studebaker <mdsxyz123@yahoo.com>, 18 Mark D. Studebaker <mdsxyz123@yahoo.com>,
@@ -39,6 +42,8 @@ Your lspci -n listing must show one of these :
39 device 1106:8235 (VT8231 function 4) 42 device 1106:8235 (VT8231 function 4)
40 device 1106:3177 (VT8235) 43 device 1106:3177 (VT8235)
41 device 1106:3227 (VT8237R) 44 device 1106:3227 (VT8237R)
45 device 1106:3337 (VT8237A)
46 device 1106:3287 (VT8251)
42 47
43If none of these show up, you should look in the BIOS for settings like 48If none of these show up, you should look in the BIOS for settings like
44enable ACPI / SMBus or even USB. 49enable ACPI / SMBus or even USB.
diff --git a/Documentation/i2c/i2c-stub b/Documentation/i2c/i2c-stub
index d6dcb138abf5..9cc081e69764 100644
--- a/Documentation/i2c/i2c-stub
+++ b/Documentation/i2c/i2c-stub
@@ -6,9 +6,12 @@ This module is a very simple fake I2C/SMBus driver. It implements four
6types of SMBus commands: write quick, (r/w) byte, (r/w) byte data, and 6types of SMBus commands: write quick, (r/w) byte, (r/w) byte data, and
7(r/w) word data. 7(r/w) word data.
8 8
9You need to provide a chip address as a module parameter when loading
10this driver, which will then only react to SMBus commands to this address.
11
9No hardware is needed nor associated with this module. It will accept write 12No hardware is needed nor associated with this module. It will accept write
10quick commands to all addresses; it will respond to the other commands (also 13quick commands to one address; it will respond to the other commands (also
11to all addresses) by reading from or writing to an array in memory. It will 14to one address) by reading from or writing to an array in memory. It will
12also spam the kernel logs for every command it handles. 15also spam the kernel logs for every command it handles.
13 16
14A pointer register with auto-increment is implemented for all byte 17A pointer register with auto-increment is implemented for all byte
@@ -21,6 +24,11 @@ The typical use-case is like this:
21 3. load the target sensors chip driver module 24 3. load the target sensors chip driver module
22 4. observe its behavior in the kernel log 25 4. observe its behavior in the kernel log
23 26
27PARAMETERS:
28
29int chip_addr:
30 The SMBus address to emulate a chip at.
31
24CAVEATS: 32CAVEATS:
25 33
26There are independent arrays for byte/data and word/data commands. Depending 34There are independent arrays for byte/data and word/data commands. Depending
@@ -33,6 +41,9 @@ If the hardware for your driver has banked registers (e.g. Winbond sensors
33chips) this module will not work well - although it could be extended to 41chips) this module will not work well - although it could be extended to
34support that pretty easily. 42support that pretty easily.
35 43
44Only one chip address is supported - although this module could be
45extended to support more.
46
36If you spam it hard enough, printk can be lossy. This module really wants 47If you spam it hard enough, printk can be lossy. This module really wants
37something like relayfs. 48something like relayfs.
38 49
diff --git a/Documentation/ia64/efirtc.txt b/Documentation/ia64/efirtc.txt
index ede2c1e51cd7..057e6bebda8f 100644
--- a/Documentation/ia64/efirtc.txt
+++ b/Documentation/ia64/efirtc.txt
@@ -26,7 +26,7 @@ to initialize the system view of the time during boot.
26Because we wanted to minimize the impact on existing user-level apps using 26Because we wanted to minimize the impact on existing user-level apps using
27the CMOS clock, we decided to expose an API that was very similar to the one 27the CMOS clock, we decided to expose an API that was very similar to the one
28used today with the legacy RTC driver (driver/char/rtc.c). However, because 28used today with the legacy RTC driver (driver/char/rtc.c). However, because
29EFI provides a simpler services, not all all ioctl() are available. Also 29EFI provides a simpler services, not all ioctl() are available. Also
30new ioctl()s have been introduced for things that EFI provides but not the 30new ioctl()s have been introduced for things that EFI provides but not the
31legacy. 31legacy.
32 32
diff --git a/Documentation/ia64/fsys.txt b/Documentation/ia64/fsys.txt
index 28da181f9966..59dd689d9b86 100644
--- a/Documentation/ia64/fsys.txt
+++ b/Documentation/ia64/fsys.txt
@@ -165,7 +165,7 @@ complicated cases.
165* Signal handling 165* Signal handling
166 166
167The delivery of (asynchronous) signals must be delayed until fsys-mode 167The delivery of (asynchronous) signals must be delayed until fsys-mode
168is exited. This is acomplished with the help of the lower-privilege 168is exited. This is accomplished with the help of the lower-privilege
169transfer trap: arch/ia64/kernel/process.c:do_notify_resume_user() 169transfer trap: arch/ia64/kernel/process.c:do_notify_resume_user()
170checks whether the interrupted task was in fsys-mode and, if so, sets 170checks whether the interrupted task was in fsys-mode and, if so, sets
171PSR.lp and returns immediately. When fsys-mode is exited via the 171PSR.lp and returns immediately. When fsys-mode is exited via the
diff --git a/Documentation/ia64/mca.txt b/Documentation/ia64/mca.txt
index a71cc6a67ef7..f097c60cba1b 100644
--- a/Documentation/ia64/mca.txt
+++ b/Documentation/ia64/mca.txt
@@ -12,7 +12,7 @@ by locks is indeterminate, including linked lists.
12--- 12---
13 13
14The complicated ia64 MCA process. All of this is mandated by Intel's 14The complicated ia64 MCA process. All of this is mandated by Intel's
15specification for ia64 SAL, error recovery and and unwind, it is not as 15specification for ia64 SAL, error recovery and unwind, it is not as
16if we have a choice here. 16if we have a choice here.
17 17
18* MCA occurs on one cpu, usually due to a double bit memory error. 18* MCA occurs on one cpu, usually due to a double bit memory error.
@@ -94,7 +94,7 @@ if we have a choice here.
94 94
95INIT is less complicated than MCA. Pressing the nmi button or using 95INIT is less complicated than MCA. Pressing the nmi button or using
96the equivalent command on the management console sends INIT to all 96the equivalent command on the management console sends INIT to all
97cpus. SAL picks one one of the cpus as the monarch and the rest are 97cpus. SAL picks one of the cpus as the monarch and the rest are
98slaves. All the OS INIT handlers are entered at approximately the same 98slaves. All the OS INIT handlers are entered at approximately the same
99time. The OS monarch prints the state of all tasks and returns, after 99time. The OS monarch prints the state of all tasks and returns, after
100which the slaves return and the system resumes. 100which the slaves return and the system resumes.
diff --git a/Documentation/ia64/serial.txt b/Documentation/ia64/serial.txt
index f51eb4bc2ff1..040b9773209f 100644
--- a/Documentation/ia64/serial.txt
+++ b/Documentation/ia64/serial.txt
@@ -124,6 +124,13 @@ TROUBLESHOOTING SERIAL CONSOLE PROBLEMS
124 124
125 - Add entry to /etc/securetty for console tty. 125 - Add entry to /etc/securetty for console tty.
126 126
127 No ACPI serial devices found in 2.6.17 or later:
128
129 - Turn on CONFIG_PNP and CONFIG_PNPACPI. Prior to 2.6.17, ACPI
130 serial devices were discovered by 8250_acpi. In 2.6.17,
131 8250_acpi was replaced by the combination of 8250_pnp and
132 CONFIG_PNPACPI.
133
127 134
128 135
129[1] http://www.dig64.org/specifications/DIG64_PCDPv20.pdf 136[1] http://www.dig64.org/specifications/DIG64_PCDPv20.pdf
diff --git a/Documentation/ibm-acpi.txt b/Documentation/ibm-acpi.txt
index 8b3fd82b2ce7..71aa40345272 100644
--- a/Documentation/ibm-acpi.txt
+++ b/Documentation/ibm-acpi.txt
@@ -450,7 +450,7 @@ his laptop (the location of sensors may vary on other models):
450 450
451No commands can be written to this file. 451No commands can be written to this file.
452 452
453EXPERIMENTAL: Embedded controller reigster dump -- /proc/acpi/ibm/ecdump 453EXPERIMENTAL: Embedded controller register dump -- /proc/acpi/ibm/ecdump
454------------------------------------------------------------------------ 454------------------------------------------------------------------------
455 455
456This feature is marked EXPERIMENTAL because the implementation 456This feature is marked EXPERIMENTAL because the implementation
diff --git a/Documentation/ide.txt b/Documentation/ide.txt
index 29866fbfb229..0bf38baa2db9 100644
--- a/Documentation/ide.txt
+++ b/Documentation/ide.txt
@@ -281,7 +281,7 @@ Summary of ide driver parameters for kernel command line
281 281
282 "idex=serialize" : do not overlap operations on idex. Please note 282 "idex=serialize" : do not overlap operations on idex. Please note
283 that you will have to specify this option for 283 that you will have to specify this option for
284 both the respecitve primary and secondary channel 284 both the respective primary and secondary channel
285 to take effect. 285 to take effect.
286 286
287 "idex=four" : four drives on idex and ide(x^1) share same ports 287 "idex=four" : four drives on idex and ide(x^1) share same ports
diff --git a/Documentation/input/amijoy.txt b/Documentation/input/amijoy.txt
index 3b8b2d43a68e..4f0e89df5c51 100644
--- a/Documentation/input/amijoy.txt
+++ b/Documentation/input/amijoy.txt
@@ -79,10 +79,10 @@ JOY0DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0
79JOY1DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0 79JOY1DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0
80 80
81 0=LEFT CONTROLLER PAIR, 1=RIGHT CONTROLLER PAIR. 81 0=LEFT CONTROLLER PAIR, 1=RIGHT CONTROLLER PAIR.
82 (4 counters total).The bit usage for both left and right 82 (4 counters total). The bit usage for both left and right
83 addresses is shown below. Each 6 bit counter (Y7-Y2,X7-X2) is 83 addresses is shown below. Each 6 bit counter (Y7-Y2,X7-X2) is
84 clocked by 2 of the signals input from the mouse serial 84 clocked by 2 of the signals input from the mouse serial
85 stream. Starting with first bit recived: 85 stream. Starting with first bit received:
86 86
87 +-------------------+-----------------------------------------+ 87 +-------------------+-----------------------------------------+
88 | Serial | Bit Name | Description | 88 | Serial | Bit Name | Description |
diff --git a/Documentation/input/atarikbd.txt b/Documentation/input/atarikbd.txt
index 8fb896c74114..1e7e5853ba4c 100644
--- a/Documentation/input/atarikbd.txt
+++ b/Documentation/input/atarikbd.txt
@@ -10,7 +10,7 @@ provides a convenient connection point for a mouse and switch-type joysticks.
10The ikbd processor also maintains a time-of-day clock with one second 10The ikbd processor also maintains a time-of-day clock with one second
11resolution. 11resolution.
12The ikbd has been designed to be general enough that it can be used with a 12The ikbd has been designed to be general enough that it can be used with a
13ariety of new computer products. Product variations in a number of 13variety of new computer products. Product variations in a number of
14keyswitches, mouse resolution, etc. can be accommodated. 14keyswitches, mouse resolution, etc. can be accommodated.
15The ikbd communicates with the main processor over a high speed bi-directional 15The ikbd communicates with the main processor over a high speed bi-directional
16serial interface. It can function in a variety of modes to facilitate 16serial interface. It can function in a variety of modes to facilitate
@@ -30,7 +30,7 @@ is obtained by ORing 0x80 with the make code.
30The special codes 0xF6 through 0xFF are reserved for use as follows: 30The special codes 0xF6 through 0xFF are reserved for use as follows:
31 0xF6 status report 31 0xF6 status report
32 0xF7 absolute mouse position record 32 0xF7 absolute mouse position record
33 0xF8-0xFB relative mouse position records(lsbs determind by 33 0xF8-0xFB relative mouse position records (lsbs determined by
34 mouse button states) 34 mouse button states)
35 0xFC time-of-day 35 0xFC time-of-day
36 0xFD joystick report (both sticks) 36 0xFD joystick report (both sticks)
@@ -84,7 +84,7 @@ selected.
844.2 Absolute Position reporting 844.2 Absolute Position reporting
85 85
86The ikbd can also maintain absolute mouse position. Commands exist for 86The ikbd can also maintain absolute mouse position. Commands exist for
87reseting the mouse position, setting X/Y scaling, and interrogating the 87resetting the mouse position, setting X/Y scaling, and interrogating the
88current mouse position. 88current mouse position.
89 89
904.3 Mouse Cursor Key Mode 904.3 Mouse Cursor Key Mode
@@ -406,7 +406,7 @@ INTERROGATION MODE.
4069.18 SET JOYSTICK MONITORING 4069.18 SET JOYSTICK MONITORING
407 407
408 0x17 408 0x17
409 rate ; time between samples in hundreths of a second 409 rate ; time between samples in hundredths of a second
410 Returns: (in packets of two as long as in mode) 410 Returns: (in packets of two as long as in mode)
411 %000000xy ; where y is JOYSTICK1 Fire button 411 %000000xy ; where y is JOYSTICK1 Fire button
412 ; and x is JOYSTICK0 Fire button 412 ; and x is JOYSTICK0 Fire button
@@ -522,7 +522,7 @@ controller memory. The time between data bytes must be less than 20ms.
522 0x20 ; memory access 522 0x20 ; memory access
523 { data } ; 6 data bytes starting at ADR 523 { data } ; 6 data bytes starting at ADR
524 524
525This comand permits the host to read from the ikbd controller memory. 525This command permits the host to read from the ikbd controller memory.
526 526
5279.26 CONTROLLER EXECUTE 5279.26 CONTROLLER EXECUTE
528 528
diff --git a/Documentation/input/cs461x.txt b/Documentation/input/cs461x.txt
index 6181747a14d8..afe0d6543e09 100644
--- a/Documentation/input/cs461x.txt
+++ b/Documentation/input/cs461x.txt
@@ -27,7 +27,7 @@ This driver have the basic support for PCI devices only; there is no
27ISA or PnP ISA cards supported. AFAIK the ns558 have support for Crystal 27ISA or PnP ISA cards supported. AFAIK the ns558 have support for Crystal
28ISA and PnP ISA series. 28ISA and PnP ISA series.
29 29
30The driver works witn ALSA drivers simultaneously. For exmple, the xracer 30The driver works with ALSA drivers simultaneously. For example, the xracer
31uses joystick as input device and PCM device as sound output in one time. 31uses joystick as input device and PCM device as sound output in one time.
32There are no sound or input collisions detected. The source code have 32There are no sound or input collisions detected. The source code have
33comments about them; but I've found the joystick can be initialized 33comments about them; but I've found the joystick can be initialized
diff --git a/Documentation/input/ff.txt b/Documentation/input/ff.txt
index c7e10eaff203..085eb15b45b7 100644
--- a/Documentation/input/ff.txt
+++ b/Documentation/input/ff.txt
@@ -1,78 +1,48 @@
1Force feedback for Linux. 1Force feedback for Linux.
2By Johann Deneux <deneux@ifrance.com> on 2001/04/22. 2By Johann Deneux <deneux@ifrance.com> on 2001/04/22.
3Updated by Anssi Hannula <anssi.hannula@gmail.com> on 2006/04/09.
3You may redistribute this file. Please remember to include shape.fig and 4You may redistribute this file. Please remember to include shape.fig and
4interactive.fig as well. 5interactive.fig as well.
5---------------------------------------------------------------------------- 6----------------------------------------------------------------------------
6 7
70. Introduction 81. Introduction
8~~~~~~~~~~~~~~~ 9~~~~~~~~~~~~~~~
9This document describes how to use force feedback devices under Linux. The 10This document describes how to use force feedback devices under Linux. The
10goal is not to support these devices as if they were simple input-only devices 11goal is not to support these devices as if they were simple input-only devices
11(as it is already the case), but to really enable the rendering of force 12(as it is already the case), but to really enable the rendering of force
12effects. 13effects.
13At the moment, only I-Force devices are supported, and not officially. That 14This document only describes the force feedback part of the Linux input
14means I had to find out how the protocol works on my own. Of course, the 15interface. Please read joystick.txt and input.txt before reading further this
15information I managed to grasp is far from being complete, and I can not 16document.
16guarranty that this driver will work for you.
17This document only describes the force feedback part of the driver for I-Force
18devices. Please read joystick.txt before reading further this document.
19 17
202. Instructions to the user 182. Instructions to the user
21~~~~~~~~~~~~~~~~~~~~~~~~~~~ 19~~~~~~~~~~~~~~~~~~~~~~~~~~~
22Here are instructions on how to compile and use the driver. In fact, this 20To enable force feedback, you have to:
23driver is the normal iforce, input and evdev drivers written by Vojtech 21
24Pavlik, plus additions to support force feedback. 221. have your kernel configured with evdev and a driver that supports your
23 device.
242. make sure evdev module is loaded and /dev/input/event* device files are
25 created.
25 26
26Before you start, let me WARN you that some devices shake violently during the 27Before you start, let me WARN you that some devices shake violently during the
27initialisation phase. This happens for example with my "AVB Top Shot Pegasus". 28initialisation phase. This happens for example with my "AVB Top Shot Pegasus".
28To stop this annoying behaviour, move you joystick to its limits. Anyway, you 29To stop this annoying behaviour, move you joystick to its limits. Anyway, you
29should keep a hand on your device, in order to avoid it to brake down if 30should keep a hand on your device, in order to avoid it to break down if
30something goes wrong. 31something goes wrong.
31 32
32At the kernel's compilation: 33If you have a serial iforce device, you need to start inputattach. See
33 - Enable IForce/Serial 34joystick.txt for details.
34 - Enable Event interface
35
36Compile the modules, install them.
37
38You also need inputattach.
39
40You then need to insert the modules into the following order:
41% modprobe joydev
42% modprobe serport # Only for serial
43% modprobe iforce
44% modprobe evdev
45% ./inputattach -ifor $2 & # Only for serial
46If you are using USB, you don't need the inputattach step.
47
48Please check that you have all the /dev/input entries needed:
49cd /dev
50rm js*
51mkdir input
52mknod input/js0 c 13 0
53mknod input/js1 c 13 1
54mknod input/js2 c 13 2
55mknod input/js3 c 13 3
56ln -s input/js0 js0
57ln -s input/js1 js1
58ln -s input/js2 js2
59ln -s input/js3 js3
60
61mknod input/event0 c 13 64
62mknod input/event1 c 13 65
63mknod input/event2 c 13 66
64mknod input/event3 c 13 67
65 35
662.1 Does it work ? 362.1 Does it work ?
67~~~~~~~~~~~~~~~~~~ 37~~~~~~~~~~~~~~~~~~
68There is an utility called fftest that will allow you to test the driver. 38There is an utility called fftest that will allow you to test the driver.
69% fftest /dev/input/eventXX 39% fftest /dev/input/eventXX
70 40
713. Instructions to the developper 413. Instructions to the developer
72~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 42~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73 All interactions are done using the event API. That is, you can use ioctl() 43All interactions are done using the event API. That is, you can use ioctl()
74and write() on /dev/input/eventXX. 44and write() on /dev/input/eventXX.
75 This information is subject to change. 45This information is subject to change.
76 46
773.1 Querying device capabilities 473.1 Querying device capabilities
78~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -86,18 +56,29 @@ int ioctl(int file_descriptor, int request, unsigned long *features);
86 56
87Returns the features supported by the device. features is a bitfield with the 57Returns the features supported by the device. features is a bitfield with the
88following bits: 58following bits:
89- FF_X has an X axis (usually joysticks)
90- FF_Y has an Y axis (usually joysticks)
91- FF_WHEEL has a wheel (usually sterring wheels)
92- FF_CONSTANT can render constant force effects 59- FF_CONSTANT can render constant force effects
93- FF_PERIODIC can render periodic effects (sine, triangle, square...) 60- FF_PERIODIC can render periodic effects with the following waveforms:
61 - FF_SQUARE square waveform
62 - FF_TRIANGLE triangle waveform
63 - FF_SINE sine waveform
64 - FF_SAW_UP sawtooth up waveform
65 - FF_SAW_DOWN sawtooth down waveform
66 - FF_CUSTOM custom waveform
94- FF_RAMP can render ramp effects 67- FF_RAMP can render ramp effects
95- FF_SPRING can simulate the presence of a spring 68- FF_SPRING can simulate the presence of a spring
96- FF_FRICTION can simulate friction 69- FF_FRICTION can simulate friction
97- FF_DAMPER can simulate damper effects 70- FF_DAMPER can simulate damper effects
98- FF_RUMBLE rumble effects (normally the only effect supported by rumble 71- FF_RUMBLE rumble effects
99 pads)
100- FF_INERTIA can simulate inertia 72- FF_INERTIA can simulate inertia
73- FF_GAIN gain is adjustable
74- FF_AUTOCENTER autocenter is adjustable
75
76Note: In most cases you should use FF_PERIODIC instead of FF_RUMBLE. All
77 devices that support FF_RUMBLE support FF_PERIODIC (square, triangle,
78 sine) and the other way around.
79
80Note: The exact syntax FF_CUSTOM is undefined for the time being as no driver
81 supports it yet.
101 82
102 83
103int ioctl(int fd, EVIOCGEFFECTS, int *n); 84int ioctl(int fd, EVIOCGEFFECTS, int *n);
@@ -108,7 +89,7 @@ Returns the number of effects the device can keep in its memory.
108~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 89~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109#include <linux/input.h> 90#include <linux/input.h>
110#include <sys/ioctl.h> 91#include <sys/ioctl.h>
111 92
112int ioctl(int file_descriptor, int request, struct ff_effect *effect); 93int ioctl(int file_descriptor, int request, struct ff_effect *effect);
113 94
114"request" must be EVIOCSFF. 95"request" must be EVIOCSFF.
@@ -120,6 +101,9 @@ to the unique id assigned by the driver. This data is required for performing
120some operations (removing an effect, controlling the playback). 101some operations (removing an effect, controlling the playback).
121This if field must be set to -1 by the user in order to tell the driver to 102This if field must be set to -1 by the user in order to tell the driver to
122allocate a new effect. 103allocate a new effect.
104
105Effects are file descriptor specific.
106
123See <linux/input.h> for a description of the ff_effect struct. You should also 107See <linux/input.h> for a description of the ff_effect struct. You should also
124find help in a few sketches, contained in files shape.fig and interactive.fig. 108find help in a few sketches, contained in files shape.fig and interactive.fig.
125You need xfig to visualize these files. 109You need xfig to visualize these files.
@@ -128,8 +112,8 @@ You need xfig to visualize these files.
128~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129int ioctl(int fd, EVIOCRMFF, effect.id); 113int ioctl(int fd, EVIOCRMFF, effect.id);
130 114
131This makes room for new effects in the device's memory. Please note this won't 115This makes room for new effects in the device's memory. Note that this also
132stop the effect if it was playing. 116stops the effect if it was playing.
133 117
1343.4 Controlling the playback of effects 1183.4 Controlling the playback of effects
135~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 119~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -149,22 +133,21 @@ Control of playing is done with write(). Below is an example:
149 play.type = EV_FF; 133 play.type = EV_FF;
150 play.code = effect.id; 134 play.code = effect.id;
151 play.value = 3; 135 play.value = 3;
152 136
153 write(fd, (const void*) &play, sizeof(play)); 137 write(fd, (const void*) &play, sizeof(play));
154... 138...
155 /* Stop an effect */ 139 /* Stop an effect */
156 stop.type = EV_FF; 140 stop.type = EV_FF;
157 stop.code = effect.id; 141 stop.code = effect.id;
158 stop.value = 0; 142 stop.value = 0;
159 143
160 write(fd, (const void*) &play, sizeof(stop)); 144 write(fd, (const void*) &play, sizeof(stop));
161 145
1623.5 Setting the gain 1463.5 Setting the gain
163~~~~~~~~~~~~~~~~~~~~ 147~~~~~~~~~~~~~~~~~~~~
164Not all devices have the same strength. Therefore, users should set a gain 148Not all devices have the same strength. Therefore, users should set a gain
165factor depending on how strong they want effects to be. This setting is 149factor depending on how strong they want effects to be. This setting is
166persistent across access to the driver, so you should not care about it if 150persistent across access to the driver.
167you are writing games, as another utility probably already set this for you.
168 151
169/* Set the gain of the device 152/* Set the gain of the device
170int gain; /* between 0 and 100 */ 153int gain; /* between 0 and 100 */
@@ -204,11 +187,14 @@ type of device, not all parameters can be dynamically updated. For example,
204the direction of an effect cannot be updated with iforce devices. In this 187the direction of an effect cannot be updated with iforce devices. In this
205case, the driver stops the effect, up-load it, and restart it. 188case, the driver stops the effect, up-load it, and restart it.
206 189
190Therefore it is recommended to dynamically change direction while the effect
191is playing only when it is ok to restart the effect with a replay count of 1.
207 192
2083.8 Information about the status of effects 1933.8 Information about the status of effects
209~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
210Every time the status of an effect is changed, an event is sent. The values 195Every time the status of an effect is changed, an event is sent. The values
211and meanings of the fields of the event are as follows: 196and meanings of the fields of the event are as follows:
197
212struct input_event { 198struct input_event {
213/* When the status of the effect changed */ 199/* When the status of the effect changed */
214 struct timeval time; 200 struct timeval time;
@@ -225,3 +211,9 @@ struct input_event {
225 211
226FF_STATUS_STOPPED The effect stopped playing 212FF_STATUS_STOPPED The effect stopped playing
227FF_STATUS_PLAYING The effect started to play 213FF_STATUS_PLAYING The effect started to play
214
215NOTE: Status feedback is only supported by iforce driver. If you have
216 a really good reason to use this, please contact
217 linux-joystick@atrey.karlin.mff.cuni.cz or anssi.hannula@gmail.com
218 so that support for it can be added to the rest of the drivers.
219
diff --git a/Documentation/input/gameport-programming.txt b/Documentation/input/gameport-programming.txt
index 1ba3d322e0ac..14e0a8b70225 100644
--- a/Documentation/input/gameport-programming.txt
+++ b/Documentation/input/gameport-programming.txt
@@ -18,8 +18,8 @@ Make sure struct gameport is initialized to 0 in all other fields. The
18gameport generic code will take care of the rest. 18gameport generic code will take care of the rest.
19 19
20If your hardware supports more than one io address, and your driver can 20If your hardware supports more than one io address, and your driver can
21choose which one program the hardware to, starting from the more exotic 21choose which one to program the hardware to, starting from the more exotic
22addresses is preferred, because the likelyhood of clashing with the standard 22addresses is preferred, because the likelihood of clashing with the standard
230x201 address is smaller. 230x201 address is smaller.
24 24
25Eg. if your driver supports addresses 0x200, 0x208, 0x210 and 0x218, then 25Eg. if your driver supports addresses 0x200, 0x208, 0x210 and 0x218, then
diff --git a/Documentation/input/input.txt b/Documentation/input/input.txt
index 47137e75fdb8..ff8cea0225f9 100644
--- a/Documentation/input/input.txt
+++ b/Documentation/input/input.txt
@@ -68,8 +68,8 @@ will be available as a character device on major 13, minor 63:
68 68
69 crw-r--r-- 1 root root 13, 63 Mar 28 22:45 mice 69 crw-r--r-- 1 root root 13, 63 Mar 28 22:45 mice
70 70
71 This device has to be created, unless you use devfs, in which case it's 71 This device has to be created.
72created automatically. The commands to do create it by hand are: 72 The commands to create it by hand are:
73 73
74 cd /dev 74 cd /dev
75 mkdir input 75 mkdir input
@@ -154,7 +154,7 @@ about it.
154 154
1553.2 Event handlers 1553.2 Event handlers
156~~~~~~~~~~~~~~~~~~ 156~~~~~~~~~~~~~~~~~~
157 Event handlers distrubite the events from the devices to userland and 157 Event handlers distribute the events from the devices to userland and
158kernel, as needed. 158kernel, as needed.
159 159
1603.2.1 keybdev 1603.2.1 keybdev
@@ -230,7 +230,7 @@ generated in the kernel straight to the program, with timestamps. The
230API is still evolving, but should be useable now. It's described in 230API is still evolving, but should be useable now. It's described in
231section 5. 231section 5.
232 232
233 This should be the way for GPM and X to get keyboard and mouse mouse 233 This should be the way for GPM and X to get keyboard and mouse
234events. It allows for multihead in X without any specific multihead 234events. It allows for multihead in X without any specific multihead
235kernel support. The event codes are the same on all architectures and 235kernel support. The event codes are the same on all architectures and
236are hardware independent. 236are hardware independent.
@@ -279,7 +279,7 @@ struct input_event {
279}; 279};
280 280
281 'time' is the timestamp, it returns the time at which the event happened. 281 'time' is the timestamp, it returns the time at which the event happened.
282Type is for example EV_REL for relative momement, REL_KEY for a keypress or 282Type is for example EV_REL for relative moment, REL_KEY for a keypress or
283release. More types are defined in include/linux/input.h. 283release. More types are defined in include/linux/input.h.
284 284
285 'code' is event code, for example REL_X or KEY_BACKSPACE, again a complete 285 'code' is event code, for example REL_X or KEY_BACKSPACE, again a complete
@@ -289,24 +289,3 @@ list is in include/linux/input.h.
289EV_REL, absolute new value for EV_ABS (joysticks ...), or 0 for EV_KEY for 289EV_REL, absolute new value for EV_ABS (joysticks ...), or 0 for EV_KEY for
290release, 1 for keypress and 2 for autorepeat. 290release, 1 for keypress and 2 for autorepeat.
291 291
2926. Contacts
293~~~~~~~~~~~
294 This effort has its home page at:
295
296 http://www.suse.cz/development/input/
297
298You'll find both the latest HID driver and the complete Input driver
299there as well as information how to access the CVS repository for
300latest revisions of the drivers.
301
302 There is also a mailing list for this:
303
304 majordomo@atrey.karlin.mff.cuni.cz
305
306Send "subscribe linux-input" to subscribe to it.
307
308The input changes are also being worked on as part of the LinuxConsole
309project, see:
310
311 http://sourceforge.net/projects/linuxconsole/
312
diff --git a/Documentation/input/joystick-parport.txt b/Documentation/input/joystick-parport.txt
index d537c48cc6d0..ede5f33daad3 100644
--- a/Documentation/input/joystick-parport.txt
+++ b/Documentation/input/joystick-parport.txt
@@ -456,8 +456,8 @@ uses the following kernel/module command line:
456 8 | Sony PSX DDR controller 456 8 | Sony PSX DDR controller
457 9 | SNES mouse 457 9 | SNES mouse
458 458
459 The exact type of the PSX controller type is autoprobed when used so 459 The exact type of the PSX controller type is autoprobed when used, so
460hot swapping should work (but is not recomended). 460hot swapping should work (but is not recommended).
461 461
462 Should you want to use more than one of parallel ports at once, you can use 462 Should you want to use more than one of parallel ports at once, you can use
463gamecon.map2 and gamecon.map3 as additional command line parameters for two 463gamecon.map2 and gamecon.map3 as additional command line parameters for two
@@ -465,8 +465,8 @@ more parallel ports.
465 465
466 There are two options specific to PSX driver portion. gamecon.psx_delay sets 466 There are two options specific to PSX driver portion. gamecon.psx_delay sets
467the command delay when talking to the controllers. The default of 25 should 467the command delay when talking to the controllers. The default of 25 should
468work but you can try lowering it for better performace. If your pads don't 468work but you can try lowering it for better performance. If your pads don't
469respond try raising it untill they work. Setting the type to 8 allows the 469respond try raising it until they work. Setting the type to 8 allows the
470driver to be used with Dance Dance Revolution or similar games. Arrow keys are 470driver to be used with Dance Dance Revolution or similar games. Arrow keys are
471registered as key presses instead of X and Y axes. 471registered as key presses instead of X and Y axes.
472 472
diff --git a/Documentation/input/joystick.txt b/Documentation/input/joystick.txt
index 841c353297e6..389de9bd9878 100644
--- a/Documentation/input/joystick.txt
+++ b/Documentation/input/joystick.txt
@@ -60,7 +60,7 @@ and install it before going on.
60 60
612.2 Device nodes 612.2 Device nodes
62~~~~~~~~~~~~~~~~ 62~~~~~~~~~~~~~~~~
63For applications to be able to use the joysticks, in you don't use devfs, 63For applications to be able to use the joysticks,
64you'll have to manually create these nodes in /dev: 64you'll have to manually create these nodes in /dev:
65 65
66cd /dev 66cd /dev
diff --git a/Documentation/input/yealink.txt b/Documentation/input/yealink.txt
index 0962c5c948be..0a8c97e87d47 100644
--- a/Documentation/input/yealink.txt
+++ b/Documentation/input/yealink.txt
@@ -87,13 +87,13 @@ Line 3 Format : 888888888888
87 87
88 88
89Format description: 89Format description:
90 From a user space perspective the world is seperated in "digits" and "icons". 90 From a userspace perspective the world is separated into "digits" and "icons".
91 A digit can have a character set, an icon can only be ON or OFF. 91 A digit can have a character set, an icon can only be ON or OFF.
92 92
93 Format specifier 93 Format specifier
94 '8' : Generic 7 segment digit with individual addressable segments 94 '8' : Generic 7 segment digit with individual addressable segments
95 95
96 Reduced capabillity 7 segm digit, when segments are hard wired together. 96 Reduced capability 7 segm digit, when segments are hard wired together.
97 '1' : 2 segments digit only able to produce a 1. 97 '1' : 2 segments digit only able to produce a 1.
98 'e' : Most significant day of the month digit, 98 'e' : Most significant day of the month digit,
99 able to produce at least 1 2 3. 99 able to produce at least 1 2 3.
diff --git a/Documentation/ioctl/hdio.txt b/Documentation/ioctl/hdio.txt
index 11c9be49f37c..c19efdeace2c 100644
--- a/Documentation/ioctl/hdio.txt
+++ b/Documentation/ioctl/hdio.txt
@@ -203,7 +203,7 @@ HDIO_SET_MULTCOUNT change IDE blockmode
203 203
204 Source code comments read: 204 Source code comments read:
205 205
206 This is tightly woven into the driver->do_special can not 206 This is tightly woven into the driver->do_special cannot
207 touch. DON'T do it again until a total personality rewrite 207 touch. DON'T do it again until a total personality rewrite
208 is committed. 208 is committed.
209 209
diff --git a/Documentation/isdn/INTERFACE.fax b/Documentation/isdn/INTERFACE.fax
index 7e5731319e30..9c8c6d914ec7 100644
--- a/Documentation/isdn/INTERFACE.fax
+++ b/Documentation/isdn/INTERFACE.fax
@@ -26,7 +26,7 @@ Structure T30_s description:
26 If the HL-driver receives ISDN_CMD_FAXCMD, all needed information 26 If the HL-driver receives ISDN_CMD_FAXCMD, all needed information
27 is in this struct set by the LL. 27 is in this struct set by the LL.
28 To signal information to the LL, the HL-driver has to set the 28 To signal information to the LL, the HL-driver has to set the
29 the parameters and use ISDN_STAT_FAXIND. 29 parameters and use ISDN_STAT_FAXIND.
30 (Please refer to INTERFACE) 30 (Please refer to INTERFACE)
31 31
32Structure T30_s: 32Structure T30_s:
diff --git a/Documentation/isdn/README.hysdn b/Documentation/isdn/README.hysdn
index 56cc59df1fb7..eeca11f00ccd 100644
--- a/Documentation/isdn/README.hysdn
+++ b/Documentation/isdn/README.hysdn
@@ -1,6 +1,6 @@
1$Id: README.hysdn,v 1.3.6.1 2001/02/10 14:41:19 kai Exp $ 1$Id: README.hysdn,v 1.3.6.1 2001/02/10 14:41:19 kai Exp $
2The hysdn driver has been written by 2The hysdn driver has been written by
3by Werner Cornelius (werner@isdn4linux.de or werner@titro.de) 3Werner Cornelius (werner@isdn4linux.de or werner@titro.de)
4for Hypercope GmbH Aachen Germany. Hypercope agreed to publish this driver 4for Hypercope GmbH Aachen Germany. Hypercope agreed to publish this driver
5under the GNU General Public License. 5under the GNU General Public License.
6 6
diff --git a/Documentation/java.txt b/Documentation/java.txt
index e4814c213301..c768dc63b34e 100644
--- a/Documentation/java.txt
+++ b/Documentation/java.txt
@@ -22,7 +22,7 @@ other program after you have done the following:
22 the kernel (CONFIG_BINFMT_MISC) and set it up properly. 22 the kernel (CONFIG_BINFMT_MISC) and set it up properly.
23 If you choose to compile it as a module, you will have 23 If you choose to compile it as a module, you will have
24 to insert it manually with modprobe/insmod, as kmod 24 to insert it manually with modprobe/insmod, as kmod
25 can not easily be supported with binfmt_misc. 25 cannot easily be supported with binfmt_misc.
26 Read the file 'binfmt_misc.txt' in this directory to know 26 Read the file 'binfmt_misc.txt' in this directory to know
27 more about the configuration process. 27 more about the configuration process.
28 28
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt
index 003fccc14d24..125093c3ef76 100644
--- a/Documentation/kbuild/kconfig-language.txt
+++ b/Documentation/kbuild/kconfig-language.txt
@@ -1,7 +1,7 @@
1Introduction 1Introduction
2------------ 2------------
3 3
4The configuration database is collection of configuration options 4The configuration database is a collection of configuration options
5organized in a tree structure: 5organized in a tree structure:
6 6
7 +- Code maturity level options 7 +- Code maturity level options
@@ -110,7 +110,7 @@ applicable everywhere (see syntax).
110 the indentation level, this means it ends at the first line which has 110 the indentation level, this means it ends at the first line which has
111 a smaller indentation than the first line of the help text. 111 a smaller indentation than the first line of the help text.
112 "---help---" and "help" do not differ in behaviour, "---help---" is 112 "---help---" and "help" do not differ in behaviour, "---help---" is
113 used to help visually seperate configuration logic from help within 113 used to help visually separate configuration logic from help within
114 the file as an aid to developers. 114 the file as an aid to developers.
115 115
116 116
@@ -226,7 +226,7 @@ menuconfig:
226 "menuconfig" <symbol> 226 "menuconfig" <symbol>
227 <config options> 227 <config options>
228 228
229This is similiar to the simple config entry above, but it also gives a 229This is similar to the simple config entry above, but it also gives a
230hint to front ends, that all suboptions should be displayed as a 230hint to front ends, that all suboptions should be displayed as a
231separate list of options. 231separate list of options.
232 232
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index b7d6abb501a6..50f4eddf899c 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -390,7 +390,7 @@ more details, with real examples.
390 The kernel may be built with several different versions of 390 The kernel may be built with several different versions of
391 $(CC), each supporting a unique set of features and options. 391 $(CC), each supporting a unique set of features and options.
392 kbuild provide basic support to check for valid options for $(CC). 392 kbuild provide basic support to check for valid options for $(CC).
393 $(CC) is useally the gcc compiler, but other alternatives are 393 $(CC) is usually the gcc compiler, but other alternatives are
394 available. 394 available.
395 395
396 as-option 396 as-option
@@ -421,6 +421,11 @@ more details, with real examples.
421 The second argument is optional, and if supplied will be used 421 The second argument is optional, and if supplied will be used
422 if first argument is not supported. 422 if first argument is not supported.
423 423
424 as-instr
425 as-instr checks if the assembler reports a specific instruction
426 and then outputs either option1 or option2
427 C escapes are supported in the test instruction
428
424 cc-option 429 cc-option
425 cc-option is used to check if $(CC) supports a given option, and not 430 cc-option is used to check if $(CC) supports a given option, and not
426 supported to use an optional second option. 431 supported to use an optional second option.
diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt
index 2e7702e94a78..769ee05ee4d1 100644
--- a/Documentation/kbuild/modules.txt
+++ b/Documentation/kbuild/modules.txt
@@ -43,7 +43,7 @@ are not planned to be included in the kernel tree.
43What is covered within this file is mainly information to authors 43What is covered within this file is mainly information to authors
44of modules. The author of an external module should supply 44of modules. The author of an external module 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 presented in
47chapter 4, "Creating a kbuild file for an external module". 47chapter 4, "Creating a kbuild file for an external module".
48 48
49 49
@@ -61,6 +61,7 @@ when building an external module.
61 make -C <path-to-kernel> M=`pwd` 61 make -C <path-to-kernel> M=`pwd`
62 62
63 For the running kernel use: 63 For the running kernel use:
64
64 make -C /lib/modules/`uname -r`/build M=`pwd` 65 make -C /lib/modules/`uname -r`/build M=`pwd`
65 66
66 For the above command to succeed, the kernel must have been 67 For the above command to succeed, the kernel must have been
@@ -130,10 +131,10 @@ when building an external module.
130 131
131 To make sure the kernel contains the information required to 132 To make sure the kernel contains the information required to
132 build external modules the target 'modules_prepare' must be used. 133 build external modules the target 'modules_prepare' must be used.
133 'module_prepare' exists solely as a simple way to prepare 134 'modules_prepare' exists solely as a simple way to prepare
134 a kernel source tree for building external modules. 135 a kernel source tree for building external modules.
135 Note: modules_prepare will not build Module.symvers even if 136 Note: modules_prepare will not build Module.symvers even if
136 CONFIG_MODULEVERSIONING is set. Therefore a full kernel build 137 CONFIG_MODVERSIONS is set. Therefore a full kernel build
137 needs to be executed to make module versioning work. 138 needs to be executed to make module versioning work.
138 139
139--- 2.5 Building separate files for a module 140--- 2.5 Building separate files for a module
@@ -450,7 +451,7 @@ kernel refuses to load the module.
450 451
451Module.symvers contains a list of all exported symbols from a kernel build. 452Module.symvers contains a list of all exported symbols from a kernel build.
452 453
453--- 7.1 Symbols fron the kernel (vmlinux + modules) 454--- 7.1 Symbols from the kernel (vmlinux + modules)
454 455
455 During a kernel build, a file named Module.symvers will be generated. 456 During a kernel build, a file named Module.symvers will be generated.
456 Module.symvers contains all exported symbols from the kernel and 457 Module.symvers contains all exported symbols from the kernel and
diff --git a/Documentation/kdump/kdump.txt b/Documentation/kdump/kdump.txt
index 08bafa8c1caa..99f2d4d4bf7d 100644
--- a/Documentation/kdump/kdump.txt
+++ b/Documentation/kdump/kdump.txt
@@ -249,7 +249,7 @@ If die() is called, and it happens to be a thread with pid 0 or 1, or die()
249is called inside interrupt context or die() is called and panic_on_oops is set, 249is called inside interrupt context or die() is called and panic_on_oops is set,
250the system will boot into the dump-capture kernel. 250the system will boot into the dump-capture kernel.
251 251
252On powererpc systems when a soft-reset is generated, die() is called by all cpus and the system system will boot into the dump-capture kernel. 252On powererpc systems when a soft-reset is generated, die() is called by all cpus and the system will boot into the dump-capture kernel.
253 253
254For testing purposes, you can trigger a crash by using "ALT-SysRq-c", 254For testing purposes, you can trigger a crash by using "ALT-SysRq-c",
255"echo c > /proc/sysrq-trigger or write a module to force the panic. 255"echo c > /proc/sysrq-trigger or write a module to force the panic.
diff --git a/Documentation/kernel-docs.txt b/Documentation/kernel-docs.txt
index 99d24f2943ee..b53bccbd9727 100644
--- a/Documentation/kernel-docs.txt
+++ b/Documentation/kernel-docs.txt
@@ -290,17 +290,6 @@
290 Description: Very nice 92 pages GPL book on the topic of modules 290 Description: Very nice 92 pages GPL book on the topic of modules
291 programming. Lots of examples. 291 programming. Lots of examples.
292 292
293 * Title: "Device File System (devfs) Overview"
294 Author: Richard Gooch.
295 URL: http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html
296 Keywords: filesystem, /dev, devfs, dynamic devices, major/minor
297 allocation, device management.
298 Description: Document describing Richard Gooch's controversial
299 devfs, which allows for dynamic devices, only shows present
300 devices in /dev, gets rid of major/minor numbers allocation
301 problems, and allows for hundreds of identical devices (which some
302 USB systems might demand soon).
303
304 * Title: "I/O Event Handling Under Linux" 293 * Title: "I/O Event Handling Under Linux"
305 Author: Richard Gooch. 294 Author: Richard Gooch.
306 URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html 295 URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 766abdab94e7..ff571f9298e0 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -110,6 +110,13 @@ be entered as an environment variable, whereas its absence indicates that
110it will appear as a kernel argument readable via /proc/cmdline by programs 110it will appear as a kernel argument readable via /proc/cmdline by programs
111running once the system is up. 111running once the system is up.
112 112
113The number of kernel parameters is not limited, but the length of the
114complete command line (parameters including spaces etc.) is limited to
115a fixed number of characters. This limit depends on the architecture
116and is between 256 and 4096 characters. It is defined in the file
117./include/asm/setup.h as COMMAND_LINE_SIZE.
118
119
113 53c7xx= [HW,SCSI] Amiga SCSI controllers 120 53c7xx= [HW,SCSI] Amiga SCSI controllers
114 See header of drivers/scsi/53c7xx.c. 121 See header of drivers/scsi/53c7xx.c.
115 See also Documentation/scsi/ncr53c7xx.txt. 122 See also Documentation/scsi/ncr53c7xx.txt.
@@ -282,9 +289,6 @@ running once the system is up.
282 289
283 autotest [IA64] 290 autotest [IA64]
284 291
285 awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth
286 Format: <io>,<memsize>,<isapnp>
287
288 aztcd= [HW,CD] Aztech CD268 CDROM driver 292 aztcd= [HW,CD] Aztech CD268 CDROM driver
289 Format: <io>,0x79 (?) 293 Format: <io>,0x79 (?)
290 294
@@ -348,9 +352,9 @@ running once the system is up.
348 352
349 clock= [BUGS=IA-32, HW] gettimeofday clocksource override. 353 clock= [BUGS=IA-32, HW] gettimeofday clocksource override.
350 [Deprecated] 354 [Deprecated]
351 Forces specified clocksource (if avaliable) to be used 355 Forces specified clocksource (if available) to be used
352 when calculating gettimeofday(). If specified 356 when calculating gettimeofday(). If specified
353 clocksource is not avalible, it defaults to PIT. 357 clocksource is not available, it defaults to PIT.
354 Format: { pit | tsc | cyclone | pmtmr } 358 Format: { pit | tsc | cyclone | pmtmr }
355 359
356 disable_8254_timer 360 disable_8254_timer
@@ -529,10 +533,6 @@ running once the system is up.
529 Default value is 0. 533 Default value is 0.
530 Value can be changed at runtime via /selinux/enforce. 534 Value can be changed at runtime via /selinux/enforce.
531 535
532 es1370= [HW,OSS]
533 Format: <lineout>[,<micbias>]
534 See also header of sound/oss/es1370.c.
535
536 es1371= [HW,OSS] 536 es1371= [HW,OSS]
537 Format: <spdif>,[<nomix>,[<amplifier>]] 537 Format: <spdif>,[<nomix>,[<amplifier>]]
538 See also header of sound/oss/es1371.c. 538 See also header of sound/oss/es1371.c.
@@ -573,11 +573,6 @@ running once the system is up.
573 gscd= [HW,CD] 573 gscd= [HW,CD]
574 Format: <io> 574 Format: <io>
575 575
576 gt96100eth= [NET] MIPS GT96100 Advanced Communication Controller
577
578 gus= [HW,OSS]
579 Format: <io>,<irq>,<dma>,<dma16>
580
581 gvp11= [HW,SCSI] 576 gvp11= [HW,SCSI]
582 577
583 hashdist= [KNL,NUMA] Large hashes allocated during boot 578 hashdist= [KNL,NUMA] Large hashes allocated during boot
@@ -606,8 +601,8 @@ running once the system is up.
606 noirqbalance [IA-32,SMP,KNL] Disable kernel irq balancing 601 noirqbalance [IA-32,SMP,KNL] Disable kernel irq balancing
607 602
608 i8042.direct [HW] Put keyboard port into non-translated mode 603 i8042.direct [HW] Put keyboard port into non-translated mode
609 i8042.dumbkbd [HW] Pretend that controlled can only read data from 604 i8042.dumbkbd [HW] Pretend that controller can only read data from
610 keyboard and can not control its state 605 keyboard and cannot control its state
611 (Don't attempt to blink the leds) 606 (Don't attempt to blink the leds)
612 i8042.noaux [HW] Don't check for auxiliary (== mouse) port 607 i8042.noaux [HW] Don't check for auxiliary (== mouse) port
613 i8042.nokbd [HW] Don't check/create keyboard port 608 i8042.nokbd [HW] Don't check/create keyboard port
@@ -836,12 +831,6 @@ running once the system is up.
836 (machvec) in a generic kernel. 831 (machvec) in a generic kernel.
837 Example: machvec=hpzx1_swiotlb 832 Example: machvec=hpzx1_swiotlb
838 833
839 mad16= [HW,OSS] Format:
840 <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick>
841
842 maui= [HW,OSS]
843 Format: <io>,<irq>
844
845 max_loop= [LOOP] Maximum number of loopback devices that can 834 max_loop= [LOOP] Maximum number of loopback devices that can
846 be mounted 835 be mounted
847 Format: <1-256> 836 Format: <1-256>
@@ -1109,9 +1098,6 @@ running once the system is up.
1109 opl3= [HW,OSS] 1098 opl3= [HW,OSS]
1110 Format: <io> 1099 Format: <io>
1111 1100
1112 opl3sa= [HW,OSS]
1113 Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq>
1114
1115 opl3sa2= [HW,OSS] Format: 1101 opl3sa2= [HW,OSS] Format:
1116 <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] 1102 <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple]
1117 1103
@@ -1240,7 +1226,11 @@ running once the system is up.
1240 bootloader. This is currently used on 1226 bootloader. This is currently used on
1241 IXP2000 systems where the bus has to be 1227 IXP2000 systems where the bus has to be
1242 configured a certain way for adjunct CPUs. 1228 configured a certain way for adjunct CPUs.
1243 1229 noearly [X86] Don't do any early type 1 scanning.
1230 This might help on some broken boards which
1231 machine check when some devices' config space
1232 is read. But various workarounds are disabled
1233 and some IOMMU drivers will not work.
1244 pcmv= [HW,PCMCIA] BadgePAD 4 1234 pcmv= [HW,PCMCIA] BadgePAD 4
1245 1235
1246 pd. [PARIDE] 1236 pd. [PARIDE]
@@ -1322,7 +1312,7 @@ running once the system is up.
1322 pt. [PARIDE] 1312 pt. [PARIDE]
1323 See Documentation/paride.txt. 1313 See Documentation/paride.txt.
1324 1314
1325 quiet= [KNL] Disable log messages 1315 quiet [KNL] Disable most log messages
1326 1316
1327 r128= [HW,DRM] 1317 r128= [HW,DRM]
1328 1318
@@ -1348,10 +1338,6 @@ running once the system is up.
1348 rcu.qlowmark= [KNL,BOOT] Set threshold of queued 1338 rcu.qlowmark= [KNL,BOOT] Set threshold of queued
1349 RCU callbacks below which batch limiting is re-enabled. 1339 RCU callbacks below which batch limiting is re-enabled.
1350 1340
1351 rcu.rsinterval= [KNL,BOOT,SMP] Set the number of additional
1352 RCU callbacks to queued before forcing reschedule
1353 on all cpus.
1354
1355 rdinit= [KNL] 1341 rdinit= [KNL]
1356 Format: <full_path> 1342 Format: <full_path>
1357 Run specified binary instead of /init from the ramdisk, 1343 Run specified binary instead of /init from the ramdisk,
@@ -1359,7 +1345,7 @@ running once the system is up.
1359 1345
1360 reboot= [BUGS=IA-32,BUGS=ARM,BUGS=IA-64] Rebooting mode 1346 reboot= [BUGS=IA-32,BUGS=ARM,BUGS=IA-64] Rebooting mode
1361 Format: <reboot_mode>[,<reboot_mode2>[,...]] 1347 Format: <reboot_mode>[,<reboot_mode2>[,...]]
1362 See arch/*/kernel/reboot.c. 1348 See arch/*/kernel/reboot.c or arch/*/kernel/process.c
1363 1349
1364 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area 1350 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
1365 1351
@@ -1368,6 +1354,9 @@ running once the system is up.
1368 Reserves a hole at the top of the kernel virtual 1354 Reserves a hole at the top of the kernel virtual
1369 address space. 1355 address space.
1370 1356
1357 reset_devices [KNL] Force drivers to reset the underlying device
1358 during initialization.
1359
1371 resume= [SWSUSP] 1360 resume= [SWSUSP]
1372 Specify the partition device for software suspend 1361 Specify the partition device for software suspend
1373 1362
@@ -1443,9 +1432,6 @@ running once the system is up.
1443 1432
1444 sg_def_reserved_size= [SCSI] 1433 sg_def_reserved_size= [SCSI]
1445 1434
1446 sgalaxy= [HW,OSS]
1447 Format: <io>,<irq>,<dma>,<dma2>,<sgbase>
1448
1449 shapers= [NET] 1435 shapers= [NET]
1450 Maximal number of shapers. 1436 Maximal number of shapers.
1451 1437
@@ -1586,9 +1572,6 @@ running once the system is up.
1586 1572
1587 snd-ymfpci= [HW,ALSA] 1573 snd-ymfpci= [HW,ALSA]
1588 1574
1589 sonicvibes= [HW,OSS]
1590 Format: <reverb>
1591
1592 sonycd535= [HW,CD] 1575 sonycd535= [HW,CD]
1593 Format: <io>[,<irq>] 1576 Format: <io>[,<irq>]
1594 1577
diff --git a/Documentation/keys.txt b/Documentation/keys.txt
index e373f0212843..3da586bc7859 100644
--- a/Documentation/keys.txt
+++ b/Documentation/keys.txt
@@ -671,7 +671,7 @@ The keyctl syscall functions are:
671 671
672 Note that this setting is inherited across fork/exec. 672 Note that this setting is inherited across fork/exec.
673 673
674 [1] The default default is: the thread keyring if there is one, otherwise 674 [1] The default is: the thread keyring if there is one, otherwise
675 the process keyring if there is one, otherwise the session keyring if 675 the process keyring if there is one, otherwise the session keyring if
676 there is one, otherwise the user default session keyring. 676 there is one, otherwise the user default session keyring.
677 677
@@ -708,14 +708,14 @@ The keyctl syscall functions are:
708 708
709 If the specified key is 0, then any assumed authority will be divested. 709 If the specified key is 0, then any assumed authority will be divested.
710 710
711 The assumed authorititive key is inherited across fork and exec. 711 The assumed authoritative key is inherited across fork and exec.
712 712
713 713
714=============== 714===============
715KERNEL SERVICES 715KERNEL SERVICES
716=============== 716===============
717 717
718The kernel services for key managment are fairly simple to deal with. They can 718The kernel services for key management are fairly simple to deal with. They can
719be broken down into two areas: keys and key types. 719be broken down into two areas: keys and key types.
720 720
721Dealing with keys is fairly straightforward. Firstly, the kernel service 721Dealing with keys is fairly straightforward. Firstly, the kernel service
diff --git a/Documentation/kobject.txt b/Documentation/kobject.txt
index 949f7b5a2053..e44855513b3d 100644
--- a/Documentation/kobject.txt
+++ b/Documentation/kobject.txt
@@ -51,7 +51,7 @@ more complex object types. It provides a set of basic fields that
51almost all complex data types share. kobjects are intended to be 51almost all complex data types share. kobjects are intended to be
52embedded in larger data structures and replace fields they duplicate. 52embedded in larger data structures and replace fields they duplicate.
53 53
541.2 Defintion 541.2 Definition
55 55
56struct kobject { 56struct kobject {
57 char name[KOBJ_NAME_LEN]; 57 char name[KOBJ_NAME_LEN];
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt
index 2c3b1eae4280..ba26201d5023 100644
--- a/Documentation/kprobes.txt
+++ b/Documentation/kprobes.txt
@@ -151,9 +151,9 @@ So that you can load and unload Kprobes-based instrumentation modules,
151make sure "Loadable module support" (CONFIG_MODULES) and "Module 151make sure "Loadable module support" (CONFIG_MODULES) and "Module
152unloading" (CONFIG_MODULE_UNLOAD) are set to "y". 152unloading" (CONFIG_MODULE_UNLOAD) are set to "y".
153 153
154You may also want to ensure that CONFIG_KALLSYMS and perhaps even 154Also make sure that CONFIG_KALLSYMS and perhaps even CONFIG_KALLSYMS_ALL
155CONFIG_KALLSYMS_ALL are set to "y", since kallsyms_lookup_name() 155are set to "y", since kallsyms_lookup_name() is used by the in-kernel
156is a handy, version-independent way to find a function's address. 156kprobe address resolution code.
157 157
158If you need to insert a probe in the middle of a function, you may find 158If you need to insert a probe in the middle of a function, you may find
159it useful to "Compile the kernel with debug info" (CONFIG_DEBUG_INFO), 159it useful to "Compile the kernel with debug info" (CONFIG_DEBUG_INFO),
@@ -179,6 +179,27 @@ occurs during execution of kp->pre_handler or kp->post_handler,
179or during single-stepping of the probed instruction, Kprobes calls 179or during single-stepping of the probed instruction, Kprobes calls
180kp->fault_handler. Any or all handlers can be NULL. 180kp->fault_handler. Any or all handlers can be NULL.
181 181
182NOTE:
1831. With the introduction of the "symbol_name" field to struct kprobe,
184the probepoint address resolution will now be taken care of by the kernel.
185The following will now work:
186
187 kp.symbol_name = "symbol_name";
188
189(64-bit powerpc intricacies such as function descriptors are handled
190transparently)
191
1922. Use the "offset" field of struct kprobe if the offset into the symbol
193to install a probepoint is known. This field is used to calculate the
194probepoint.
195
1963. Specify either the kprobe "symbol_name" OR the "addr". If both are
197specified, kprobe registration will fail with -EINVAL.
198
1994. With CISC architectures (such as i386 and x86_64), the kprobes code
200does not validate if the kprobe.addr is at an instruction boundary.
201Use "offset" with caution.
202
182register_kprobe() returns 0 on success, or a negative errno otherwise. 203register_kprobe() returns 0 on success, or a negative errno otherwise.
183 204
184User's pre-handler (kp->pre_handler): 205User's pre-handler (kp->pre_handler):
@@ -225,6 +246,12 @@ control to Kprobes.) If the probed function is declared asmlinkage,
225fastcall, or anything else that affects how args are passed, the 246fastcall, or anything else that affects how args are passed, the
226handler's declaration must match. 247handler's declaration must match.
227 248
249NOTE: A macro JPROBE_ENTRY is provided to handle architecture-specific
250aliasing of jp->entry. In the interest of portability, it is advised
251to use:
252
253 jp->entry = JPROBE_ENTRY(handler);
254
228register_jprobe() returns 0 on success, or a negative errno otherwise. 255register_jprobe() returns 0 on success, or a negative errno otherwise.
229 256
2304.3 register_kretprobe 2574.3 register_kretprobe
@@ -251,6 +278,11 @@ of interest:
251- ret_addr: the return address 278- ret_addr: the return address
252- rp: points to the corresponding kretprobe object 279- rp: points to the corresponding kretprobe object
253- task: points to the corresponding task struct 280- task: points to the corresponding task struct
281
282The regs_return_value(regs) macro provides a simple abstraction to
283extract the return value from the appropriate register as defined by
284the architecture's ABI.
285
254The handler's return value is currently ignored. 286The handler's return value is currently ignored.
255 287
2564.4 unregister_*probe 2884.4 unregister_*probe
@@ -369,7 +401,6 @@ stack trace and selected i386 registers when do_fork() is called.
369#include <linux/kernel.h> 401#include <linux/kernel.h>
370#include <linux/module.h> 402#include <linux/module.h>
371#include <linux/kprobes.h> 403#include <linux/kprobes.h>
372#include <linux/kallsyms.h>
373#include <linux/sched.h> 404#include <linux/sched.h>
374 405
375/*For each probe you need to allocate a kprobe structure*/ 406/*For each probe you need to allocate a kprobe structure*/
@@ -403,18 +434,14 @@ int handler_fault(struct kprobe *p, struct pt_regs *regs, int trapnr)
403 return 0; 434 return 0;
404} 435}
405 436
406int init_module(void) 437static int __init kprobe_init(void)
407{ 438{
408 int ret; 439 int ret;
409 kp.pre_handler = handler_pre; 440 kp.pre_handler = handler_pre;
410 kp.post_handler = handler_post; 441 kp.post_handler = handler_post;
411 kp.fault_handler = handler_fault; 442 kp.fault_handler = handler_fault;
412 kp.addr = (kprobe_opcode_t*) kallsyms_lookup_name("do_fork"); 443 kp.symbol_name = "do_fork";
413 /* register the kprobe now */ 444
414 if (!kp.addr) {
415 printk("Couldn't find %s to plant kprobe\n", "do_fork");
416 return -1;
417 }
418 if ((ret = register_kprobe(&kp) < 0)) { 445 if ((ret = register_kprobe(&kp) < 0)) {
419 printk("register_kprobe failed, returned %d\n", ret); 446 printk("register_kprobe failed, returned %d\n", ret);
420 return -1; 447 return -1;
@@ -423,12 +450,14 @@ int init_module(void)
423 return 0; 450 return 0;
424} 451}
425 452
426void cleanup_module(void) 453static void __exit kprobe_exit(void)
427{ 454{
428 unregister_kprobe(&kp); 455 unregister_kprobe(&kp);
429 printk("kprobe unregistered\n"); 456 printk("kprobe unregistered\n");
430} 457}
431 458
459module_init(kprobe_init)
460module_exit(kprobe_exit)
432MODULE_LICENSE("GPL"); 461MODULE_LICENSE("GPL");
433----- cut here ----- 462----- cut here -----
434 463
@@ -463,7 +492,6 @@ the arguments of do_fork().
463#include <linux/fs.h> 492#include <linux/fs.h>
464#include <linux/uio.h> 493#include <linux/uio.h>
465#include <linux/kprobes.h> 494#include <linux/kprobes.h>
466#include <linux/kallsyms.h>
467 495
468/* 496/*
469 * Jumper probe for do_fork. 497 * Jumper probe for do_fork.
@@ -485,17 +513,13 @@ long jdo_fork(unsigned long clone_flags, unsigned long stack_start,
485} 513}
486 514
487static struct jprobe my_jprobe = { 515static struct jprobe my_jprobe = {
488 .entry = (kprobe_opcode_t *) jdo_fork 516 .entry = JPROBE_ENTRY(jdo_fork)
489}; 517};
490 518
491int init_module(void) 519static int __init jprobe_init(void)
492{ 520{
493 int ret; 521 int ret;
494 my_jprobe.kp.addr = (kprobe_opcode_t *) kallsyms_lookup_name("do_fork"); 522 my_jprobe.kp.symbol_name = "do_fork";
495 if (!my_jprobe.kp.addr) {
496 printk("Couldn't find %s to plant jprobe\n", "do_fork");
497 return -1;
498 }
499 523
500 if ((ret = register_jprobe(&my_jprobe)) <0) { 524 if ((ret = register_jprobe(&my_jprobe)) <0) {
501 printk("register_jprobe failed, returned %d\n", ret); 525 printk("register_jprobe failed, returned %d\n", ret);
@@ -506,12 +530,14 @@ int init_module(void)
506 return 0; 530 return 0;
507} 531}
508 532
509void cleanup_module(void) 533static void __exit jprobe_exit(void)
510{ 534{
511 unregister_jprobe(&my_jprobe); 535 unregister_jprobe(&my_jprobe);
512 printk("jprobe unregistered\n"); 536 printk("jprobe unregistered\n");
513} 537}
514 538
539module_init(jprobe_init)
540module_exit(jprobe_exit)
515MODULE_LICENSE("GPL"); 541MODULE_LICENSE("GPL");
516----- cut here ----- 542----- cut here -----
517 543
@@ -530,16 +556,13 @@ report failed calls to sys_open().
530#include <linux/kernel.h> 556#include <linux/kernel.h>
531#include <linux/module.h> 557#include <linux/module.h>
532#include <linux/kprobes.h> 558#include <linux/kprobes.h>
533#include <linux/kallsyms.h>
534 559
535static const char *probed_func = "sys_open"; 560static const char *probed_func = "sys_open";
536 561
537/* Return-probe handler: If the probed function fails, log the return value. */ 562/* Return-probe handler: If the probed function fails, log the return value. */
538static int ret_handler(struct kretprobe_instance *ri, struct pt_regs *regs) 563static int ret_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
539{ 564{
540 // Substitute the appropriate register name for your architecture -- 565 int retval = regs_return_value(regs);
541 // e.g., regs->rax for x86_64, regs->gpr[3] for ppc64.
542 int retval = (int) regs->eax;
543 if (retval < 0) { 566 if (retval < 0) {
544 printk("%s returns %d\n", probed_func, retval); 567 printk("%s returns %d\n", probed_func, retval);
545 } 568 }
@@ -552,15 +575,11 @@ static struct kretprobe my_kretprobe = {
552 .maxactive = 20 575 .maxactive = 20
553}; 576};
554 577
555int init_module(void) 578static int __init kretprobe_init(void)
556{ 579{
557 int ret; 580 int ret;
558 my_kretprobe.kp.addr = 581 my_kretprobe.kp.symbol_name = (char *)probed_func;
559 (kprobe_opcode_t *) kallsyms_lookup_name(probed_func); 582
560 if (!my_kretprobe.kp.addr) {
561 printk("Couldn't find %s to plant return probe\n", probed_func);
562 return -1;
563 }
564 if ((ret = register_kretprobe(&my_kretprobe)) < 0) { 583 if ((ret = register_kretprobe(&my_kretprobe)) < 0) {
565 printk("register_kretprobe failed, returned %d\n", ret); 584 printk("register_kretprobe failed, returned %d\n", ret);
566 return -1; 585 return -1;
@@ -569,7 +588,7 @@ int init_module(void)
569 return 0; 588 return 0;
570} 589}
571 590
572void cleanup_module(void) 591static void __exit kretprobe_exit(void)
573{ 592{
574 unregister_kretprobe(&my_kretprobe); 593 unregister_kretprobe(&my_kretprobe);
575 printk("kretprobe unregistered\n"); 594 printk("kretprobe unregistered\n");
@@ -578,6 +597,8 @@ void cleanup_module(void)
578 my_kretprobe.nmissed, probed_func); 597 my_kretprobe.nmissed, probed_func);
579} 598}
580 599
600module_init(kretprobe_init)
601module_exit(kretprobe_exit)
581MODULE_LICENSE("GPL"); 602MODULE_LICENSE("GPL");
582----- cut here ----- 603----- cut here -----
583 604
@@ -590,3 +611,5 @@ messages.)
590For additional information on Kprobes, refer to the following URLs: 611For additional information on Kprobes, refer to the following URLs:
591http://www-106.ibm.com/developerworks/library/l-kprobes.html?ca=dgr-lnxw42Kprobe 612http://www-106.ibm.com/developerworks/library/l-kprobes.html?ca=dgr-lnxw42Kprobe
592http://www.redhat.com/magazine/005mar05/features/kprobes/ 613http://www.redhat.com/magazine/005mar05/features/kprobes/
614http://www-users.cs.umn.edu/~boutcher/kprobes/
615http://www.linuxsymposium.org/2006/linuxsymposium_procv2.pdf (pages 101-115)
diff --git a/Documentation/laptop-mode.txt b/Documentation/laptop-mode.txt
index 5696e879449b..c487186eb2b9 100644
--- a/Documentation/laptop-mode.txt
+++ b/Documentation/laptop-mode.txt
@@ -152,7 +152,7 @@ loaded on demand while the application executes) and sequentially accessed data
152DO_REMOUNTS: 152DO_REMOUNTS:
153 153
154The control script automatically remounts any mounted journaled filesystems 154The control script automatically remounts any mounted journaled filesystems
155with approriate commit interval options. When this option is set to 0, this 155with appropriate commit interval options. When this option is set to 0, this
156feature is disabled. 156feature is disabled.
157 157
158DO_REMOUNT_NOATIME: 158DO_REMOUNT_NOATIME:
diff --git a/Documentation/lockdep-design.txt b/Documentation/lockdep-design.txt
index 00d93605bfd3..dab123db5a4f 100644
--- a/Documentation/lockdep-design.txt
+++ b/Documentation/lockdep-design.txt
@@ -36,6 +36,28 @@ The validator tracks lock-class usage history into 5 separate state bits:
36 36
37- 'ever used' [ == !unused ] 37- 'ever used' [ == !unused ]
38 38
39When locking rules are violated, these 4 state bits are presented in the
40locking error messages, inside curlies. A contrived example:
41
42 modprobe/2287 is trying to acquire lock:
43 (&sio_locks[i].lock){--..}, at: [<c02867fd>] mutex_lock+0x21/0x24
44
45 but task is already holding lock:
46 (&sio_locks[i].lock){--..}, at: [<c02867fd>] mutex_lock+0x21/0x24
47
48
49The bit position indicates hardirq, softirq, hardirq-read,
50softirq-read respectively, and the character displayed in each
51indicates:
52
53 '.' acquired while irqs enabled
54 '+' acquired in irq context
55 '-' acquired in process context with irqs disabled
56 '?' read-acquired both with irqs enabled and in irq context
57
58Unused mutexes cannot be part of the cause of an error.
59
60
39Single-lock state rules: 61Single-lock state rules:
40------------------------ 62------------------------
41 63
@@ -111,7 +133,7 @@ cases there is an inherent "natural" ordering between the two objects
111(defined by the properties of the hierarchy), and the kernel grabs the 133(defined by the properties of the hierarchy), and the kernel grabs the
112locks in this fixed order on each of the objects. 134locks in this fixed order on each of the objects.
113 135
114An example of such an object hieararchy that results in "nested locking" 136An example of such an object hierarchy that results in "nested locking"
115is that of a "whole disk" block-dev object and a "partition" block-dev 137is that of a "whole disk" block-dev object and a "partition" block-dev
116object; the partition is "part of" the whole device and as long as one 138object; the partition is "part of" the whole device and as long as one
117always takes the whole disk lock as a higher lock than the partition 139always takes the whole disk lock as a higher lock than the partition
@@ -136,11 +158,11 @@ enum bdev_bd_mutex_lock_class
136In this case the locking is done on a bdev object that is known to be a 158In this case the locking is done on a bdev object that is known to be a
137partition. 159partition.
138 160
139The validator treats a lock that is taken in such a nested fasion as a 161The validator treats a lock that is taken in such a nested fashion as a
140separate (sub)class for the purposes of validation. 162separate (sub)class for the purposes of validation.
141 163
142Note: When changing code to use the _nested() primitives, be careful and 164Note: When changing code to use the _nested() primitives, be careful and
143check really thoroughly that the hiearchy is correctly mapped; otherwise 165check really thoroughly that the hierarchy is correctly mapped; otherwise
144you can get false positives or false negatives. 166you can get false positives or false negatives.
145 167
146Proof of 100% correctness: 168Proof of 100% correctness:
@@ -148,7 +170,7 @@ Proof of 100% correctness:
148 170
149The validator achieves perfect, mathematical 'closure' (proof of locking 171The validator achieves perfect, mathematical 'closure' (proof of locking
150correctness) in the sense that for every simple, standalone single-task 172correctness) in the sense that for every simple, standalone single-task
151locking sequence that occured at least once during the lifetime of the 173locking sequence that occurred at least once during the lifetime of the
152kernel, the validator proves it with a 100% certainty that no 174kernel, the validator proves it with a 100% certainty that no
153combination and timing of these locking sequences can cause any class of 175combination and timing of these locking sequences can cause any class of
154lock related deadlock. [*] 176lock related deadlock. [*]
diff --git a/Documentation/m68k/kernel-options.txt b/Documentation/m68k/kernel-options.txt
index d5d3f064f552..1c41db21d3c1 100644
--- a/Documentation/m68k/kernel-options.txt
+++ b/Documentation/m68k/kernel-options.txt
@@ -415,7 +415,7 @@ switch to another mode once Linux has started.
415 415
416 The first 3 parameters of this sub-option should be obvious: <xres>, 416 The first 3 parameters of this sub-option should be obvious: <xres>,
417<yres> and <depth> give the dimensions of the screen and the number of 417<yres> and <depth> give the dimensions of the screen and the number of
418planes (depth). The depth is is the logarithm to base 2 of the number 418planes (depth). The depth is the logarithm to base 2 of the number
419of colors possible. (Or, the other way round: The number of colors is 419of colors possible. (Or, the other way round: The number of colors is
4202^depth). 4202^depth).
421 421
diff --git a/Documentation/mca.txt b/Documentation/mca.txt
index 60913354cb7d..aabce4ad90f9 100644
--- a/Documentation/mca.txt
+++ b/Documentation/mca.txt
@@ -177,7 +177,7 @@ Currently, there are a number of MCA-specific device drivers.
177 with clones that have a different adapter id than the original 177 with clones that have a different adapter id than the original
178 NE/2. 178 NE/2.
179 179
1806) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Aapter/A and 1806) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
181 Reply Sound Blaster/SCSI (SCSI part) 181 Reply Sound Blaster/SCSI (SCSI part)
182 Better support for these cards than the driver for ISA. 182 Better support for these cards than the driver for ISA.
183 Supports multiple cards with IRQ sharing. 183 Supports multiple cards with IRQ sharing.
diff --git a/Documentation/md.txt b/Documentation/md.txt
index 0668f9dc9d29..2202f5dc8ac2 100644
--- a/Documentation/md.txt
+++ b/Documentation/md.txt
@@ -62,7 +62,7 @@ be reconstructed (due to no parity).
62 62
63For this reason, md will normally refuse to start such an array. This 63For this reason, md will normally refuse to start such an array. This
64requires the sysadmin to take action to explicitly start the array 64requires the sysadmin to take action to explicitly start the array
65desipite possible corruption. This is normally done with 65despite possible corruption. This is normally done with
66 mdadm --assemble --force .... 66 mdadm --assemble --force ....
67 67
68This option is not really available if the array has the root 68This option is not really available if the array has the root
@@ -154,11 +154,12 @@ contains further md-specific information about the device.
154 154
155All md devices contain: 155All md devices contain:
156 level 156 level
157 a text file indicating the 'raid level'. This may be a standard 157 a text file indicating the 'raid level'. e.g. raid0, raid1,
158 numerical level prefixed by "RAID-" - e.g. "RAID-5", or some 158 raid5, linear, multipath, faulty.
159 other name such as "linear" or "multipath".
160 If no raid level has been set yet (array is still being 159 If no raid level has been set yet (array is still being
161 assembled), this file will be empty. 160 assembled), the value will reflect whatever has been written
161 to it, which may be a name like the above, or may be a number
162 such as '0', '5', etc.
162 163
163 raid_disks 164 raid_disks
164 a text file with a simple number indicating the number of devices 165 a text file with a simple number indicating the number of devices
@@ -174,7 +175,7 @@ All md devices contain:
174 raid levels that involve striping (1,4,5,6,10). The address space 175 raid levels that involve striping (1,4,5,6,10). The address space
175 of the array is conceptually divided into chunks and consecutive 176 of the array is conceptually divided into chunks and consecutive
176 chunks are striped onto neighbouring devices. 177 chunks are striped onto neighbouring devices.
177 The size should be atleast PAGE_SIZE (4k) and should be a power 178 The size should be at least PAGE_SIZE (4k) and should be a power
178 of 2. This can only be set while assembling an array 179 of 2. This can only be set while assembling an array
179 180
180 component_size 181 component_size
@@ -192,14 +193,6 @@ All md devices contain:
192 1.2 (newer format in varying locations) or "none" indicating that 193 1.2 (newer format in varying locations) or "none" indicating that
193 the kernel isn't managing metadata at all. 194 the kernel isn't managing metadata at all.
194 195
195 level
196 The raid 'level' for this array. The name will often (but not
197 always) be the same as the name of the module that implements the
198 level. To be auto-loaded the module must have an alias
199 md-$LEVEL e.g. md-raid5
200 This can be written only while the array is being assembled, not
201 after it is started.
202
203 layout 196 layout
204 The "layout" for the array for the particular level. This is 197 The "layout" for the array for the particular level. This is
205 simply a number that is interpretted differently by different 198 simply a number that is interpretted differently by different
@@ -221,8 +214,8 @@ All md devices contain:
221 safe_mode_delay 214 safe_mode_delay
222 When an md array has seen no write requests for a certain period 215 When an md array has seen no write requests for a certain period
223 of time, it will be marked as 'clean'. When another write 216 of time, it will be marked as 'clean'. When another write
224 request arrive, the array is marked as 'dirty' before the write 217 request arrives, the array is marked as 'dirty' before the write
225 commenses. This is known as 'safe_mode'. 218 commences. This is known as 'safe_mode'.
226 The 'certain period' is controlled by this file which stores the 219 The 'certain period' is controlled by this file which stores the
227 period as a number of seconds. The default is 200msec (0.200). 220 period as a number of seconds. The default is 200msec (0.200).
228 Writing a value of 0 disables safemode. 221 Writing a value of 0 disables safemode.
@@ -314,8 +307,8 @@ Each directory contains:
314 This applies only to raid1 arrays. 307 This applies only to raid1 arrays.
315 spare - device is working, but not a full member. 308 spare - device is working, but not a full member.
316 This includes spares that are in the process 309 This includes spares that are in the process
317 of being recoverred to 310 of being recovered to
318 This list make grow in future. 311 This list may grow in future.
319 This can be written to. 312 This can be written to.
320 Writing "faulty" simulates a failure on the device. 313 Writing "faulty" simulates a failure on the device.
321 Writing "remove" removes the device from the array. 314 Writing "remove" removes the device from the array.
@@ -337,7 +330,7 @@ Each directory contains:
337 This gives the role that the device has in the array. It will 330 This gives the role that the device has in the array. It will
338 either be 'none' if the device is not active in the array 331 either be 'none' if the device is not active in the array
339 (i.e. is a spare or has failed) or an integer less than the 332 (i.e. is a spare or has failed) or an integer less than the
340 'raid_disks' number for the array indicating which possition 333 'raid_disks' number for the array indicating which position
341 it currently fills. This can only be set while assembling an 334 it currently fills. This can only be set while assembling an
342 array. A device for which this is set is assumed to be working. 335 array. A device for which this is set is assumed to be working.
343 336
@@ -360,7 +353,7 @@ in the array. These are named
360 353
361 rdNN 354 rdNN
362 355
363where 'NN' is the possition in the array, starting from 0. 356where 'NN' is the position in the array, starting from 0.
364So for a 3 drive array there will be rd0, rd1, rd2. 357So for a 3 drive array there will be rd0, rd1, rd2.
365These are symbolic links to the appropriate 'dev-XXX' entry. 358These are symbolic links to the appropriate 'dev-XXX' entry.
366Thus, for example, 359Thus, for example,
@@ -410,6 +403,15 @@ also have
410 than sectors, this my be larger than the number of actual errors 403 than sectors, this my be larger than the number of actual errors
411 by a factor of the number of sectors in a page. 404 by a factor of the number of sectors in a page.
412 405
406 bitmap_set_bits
407 If the array has a write-intent bitmap, then writing to this
408 attribute can set bits in the bitmap, indicating that a resync
409 would need to check the corresponding blocks. Either individual
410 numbers or start-end pairs can be written. Multiple numbers
411 can be separated by a space.
412 Note that the numbers are 'bit' numbers, not 'block' numbers.
413 They should be scaled by the bitmap_chunksize.
414
413Each active md device may also have attributes specific to the 415Each active md device may also have attributes specific to the
414personality module that manages it. 416personality module that manages it.
415These are specific to the implementation of the module and could 417These are specific to the implementation of the module and could
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 46b9b389df35..994355b0cd19 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -670,7 +670,7 @@ effectively random order, despite the write barrier issued by CPU 1:
670 670
671 671
672In the above example, CPU 2 perceives that B is 7, despite the load of *C 672In the above example, CPU 2 perceives that B is 7, despite the load of *C
673(which would be B) coming after the the LOAD of C. 673(which would be B) coming after the LOAD of C.
674 674
675If, however, a data dependency barrier were to be placed between the load of C 675If, however, a data dependency barrier were to be placed between the load of C
676and the load of *C (ie: B) on CPU 2: 676and the load of *C (ie: B) on CPU 2:
@@ -1915,7 +1915,7 @@ Whilst most CPUs do imply a data dependency barrier on the read when a memory
1915access depends on a read, not all do, so it may not be relied on. 1915access depends on a read, not all do, so it may not be relied on.
1916 1916
1917Other CPUs may also have split caches, but must coordinate between the various 1917Other CPUs may also have split caches, but must coordinate between the various
1918cachelets for normal memory accesss. The semantics of the Alpha removes the 1918cachelets for normal memory accesses. The semantics of the Alpha removes the
1919need for coordination in absence of memory barriers. 1919need for coordination in absence of memory barriers.
1920 1920
1921 1921
diff --git a/Documentation/mono.txt b/Documentation/mono.txt
index 807a0c7b4737..e8e1758e87da 100644
--- a/Documentation/mono.txt
+++ b/Documentation/mono.txt
@@ -26,7 +26,7 @@ other program after you have done the following:
26 the kernel (CONFIG_BINFMT_MISC) and set it up properly. 26 the kernel (CONFIG_BINFMT_MISC) and set it up properly.
27 If you choose to compile it as a module, you will have 27 If you choose to compile it as a module, you will have
28 to insert it manually with modprobe/insmod, as kmod 28 to insert it manually with modprobe/insmod, as kmod
29 can not be easily supported with binfmt_misc. 29 cannot be easily supported with binfmt_misc.
30 Read the file 'binfmt_misc.txt' in this directory to know 30 Read the file 'binfmt_misc.txt' in this directory to know
31 more about the configuration process. 31 more about the configuration process.
32 32
diff --git a/Documentation/networking/3c509.txt b/Documentation/networking/3c509.txt
index 867a99f88c68..0643e3b7168c 100644
--- a/Documentation/networking/3c509.txt
+++ b/Documentation/networking/3c509.txt
@@ -126,7 +126,7 @@ packets faster than they can be removed from the card. This should be rare
126or impossible in normal operation. Possible causes of this error report are: 126or impossible in normal operation. Possible causes of this error report are:
127 127
128 - a "green" mode enabled that slows the processor down when there is no 128 - a "green" mode enabled that slows the processor down when there is no
129 keyboard activitiy. 129 keyboard activity.
130 130
131 - some other device or device driver hogging the bus or disabling interrupts. 131 - some other device or device driver hogging the bus or disabling interrupts.
132 Check /proc/interrupts for excessive interrupt counts. The timer tick 132 Check /proc/interrupts for excessive interrupt counts. The timer tick
diff --git a/Documentation/networking/NAPI_HOWTO.txt b/Documentation/networking/NAPI_HOWTO.txt
index 54376e8249c1..93af3e87c65b 100644
--- a/Documentation/networking/NAPI_HOWTO.txt
+++ b/Documentation/networking/NAPI_HOWTO.txt
@@ -35,7 +35,7 @@ Legend:
35packets out of the rx ring. Note from this that the lower the 35packets out of the rx ring. Note from this that the lower the
36load the more we could clean up the rxring 36load the more we could clean up the rxring
37"Ndone" == is the converse of "Done". Note again, that the higher 37"Ndone" == is the converse of "Done". Note again, that the higher
38the load the more times we couldnt clean up the rxring. 38the load the more times we couldn't clean up the rxring.
39 39
40Observe that: 40Observe that:
41when the NIC receives 890Kpackets/sec only 17 rx interrupts are generated. 41when the NIC receives 890Kpackets/sec only 17 rx interrupts are generated.
diff --git a/Documentation/networking/arcnet-hardware.txt b/Documentation/networking/arcnet-hardware.txt
index 30a5f01403d3..731de411513c 100644
--- a/Documentation/networking/arcnet-hardware.txt
+++ b/Documentation/networking/arcnet-hardware.txt
@@ -139,7 +139,7 @@ And now to the cabling. What you can connect together:
139 139
1405. An active hub to passive hub. 1405. An active hub to passive hub.
141 141
142Remember, that you can not connect two passive hubs together. The power loss 142Remember that you cannot connect two passive hubs together. The power loss
143implied by such a connection is too high for the net to operate reliably. 143implied by such a connection is too high for the net to operate reliably.
144 144
145An example of a typical ARCnet network: 145An example of a typical ARCnet network:
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index afac780445cd..de809e58092f 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -192,6 +192,17 @@ or, for backwards compatibility, the option value. E.g.,
192arp_interval 192arp_interval
193 193
194 Specifies the ARP link monitoring frequency in milliseconds. 194 Specifies the ARP link monitoring frequency in milliseconds.
195
196 The ARP monitor works by periodically checking the slave
197 devices to determine whether they have sent or received
198 traffic recently (the precise criteria depends upon the
199 bonding mode, and the state of the slave). Regular traffic is
200 generated via ARP probes issued for the addresses specified by
201 the arp_ip_target option.
202
203 This behavior can be modified by the arp_validate option,
204 below.
205
195 If ARP monitoring is used in an etherchannel compatible mode 206 If ARP monitoring is used in an etherchannel compatible mode
196 (modes 0 and 2), the switch should be configured in a mode 207 (modes 0 and 2), the switch should be configured in a mode
197 that evenly distributes packets across all links. If the 208 that evenly distributes packets across all links. If the
@@ -213,6 +224,54 @@ arp_ip_target
213 maximum number of targets that can be specified is 16. The 224 maximum number of targets that can be specified is 16. The
214 default value is no IP addresses. 225 default value is no IP addresses.
215 226
227arp_validate
228
229 Specifies whether or not ARP probes and replies should be
230 validated in the active-backup mode. This causes the ARP
231 monitor to examine the incoming ARP requests and replies, and
232 only consider a slave to be up if it is receiving the
233 appropriate ARP traffic.
234
235 Possible values are:
236
237 none or 0
238
239 No validation is performed. This is the default.
240
241 active or 1
242
243 Validation is performed only for the active slave.
244
245 backup or 2
246
247 Validation is performed only for backup slaves.
248
249 all or 3
250
251 Validation is performed for all slaves.
252
253 For the active slave, the validation checks ARP replies to
254 confirm that they were generated by an arp_ip_target. Since
255 backup slaves do not typically receive these replies, the
256 validation performed for backup slaves is on the ARP request
257 sent out via the active slave. It is possible that some
258 switch or network configurations may result in situations
259 wherein the backup slaves do not receive the ARP requests; in
260 such a situation, validation of backup slaves must be
261 disabled.
262
263 This option is useful in network configurations in which
264 multiple bonding hosts are concurrently issuing ARPs to one or
265 more targets beyond a common switch. Should the link between
266 the switch and target fail (but not the switch itself), the
267 probe traffic generated by the multiple bonding instances will
268 fool the standard ARP monitor into considering the links as
269 still up. Use of the arp_validate option can resolve this, as
270 the ARP monitor will only consider ARP requests and replies
271 associated with its own instance of bonding.
272
273 This option was added in bonding version 3.1.0.
274
216downdelay 275downdelay
217 276
218 Specifies the time, in milliseconds, to wait before disabling 277 Specifies the time, in milliseconds, to wait before disabling
@@ -964,7 +1023,7 @@ Changing a Bond's Configuration
964files located in /sys/class/net/<bond name>/bonding 1023files located in /sys/class/net/<bond name>/bonding
965 1024
966 The names of these files correspond directly with the command- 1025 The names of these files correspond directly with the command-
967line parameters described elsewhere in in this file, and, with the 1026line parameters described elsewhere in this file, and, with the
968exception of arp_ip_target, they accept the same values. To see the 1027exception of arp_ip_target, they accept the same values. To see the
969current setting, simply cat the appropriate file. 1028current setting, simply cat the appropriate file.
970 1029
diff --git a/Documentation/networking/cs89x0.txt b/Documentation/networking/cs89x0.txt
index 188beb7d6a17..64896470e279 100644
--- a/Documentation/networking/cs89x0.txt
+++ b/Documentation/networking/cs89x0.txt
@@ -227,7 +227,7 @@ configuration options are available on the command line:
227* media=rj45 - specify media type 227* media=rj45 - specify media type
228 or media=bnc 228 or media=bnc
229 or media=aui 229 or media=aui
230 or medai=auto 230 or media=auto
231* duplex=full - specify forced half/full/autonegotiate duplex 231* duplex=full - specify forced half/full/autonegotiate duplex
232 or duplex=half 232 or duplex=half
233 or duplex=auto 233 or duplex=auto
@@ -584,7 +584,7 @@ of four ways after installing and or configuring the CS8900/20-based adapter:
584 584
585 1.) The system does not boot properly (or at all). 585 1.) The system does not boot properly (or at all).
586 586
587 2.) The driver can not communicate with the adapter, reporting an "Adapter 587 2.) The driver cannot communicate with the adapter, reporting an "Adapter
588 not found" error message. 588 not found" error message.
589 589
590 3.) You cannot connect to the network or the driver will not load. 590 3.) You cannot connect to the network or the driver will not load.
@@ -684,7 +684,7 @@ ethernet@crystal.cirrus.com) and request that you be registered for automatic
684software-update notification. 684software-update notification.
685 685
686Cirrus Logic maintains a web page at http://www.cirrus.com with the 686Cirrus Logic maintains a web page at http://www.cirrus.com with the
687the latest drivers and technical publications. 687latest drivers and technical publications.
688 688
689 689
6906.4 Current maintainer 6906.4 Current maintainer
diff --git a/Documentation/networking/cxgb.txt b/Documentation/networking/cxgb.txt
index 76324638626b..20a887615c4a 100644
--- a/Documentation/networking/cxgb.txt
+++ b/Documentation/networking/cxgb.txt
@@ -56,7 +56,7 @@ FEATURES
56 56
57 ethtool -C eth0 rx-usecs 100 57 ethtool -C eth0 rx-usecs 100
58 58
59 You may also provide a timer latency value while disabling adpative-rx: 59 You may also provide a timer latency value while disabling adaptive-rx:
60 60
61 ethtool -C <interface> adaptive-rx off rx-usecs <microseconds> 61 ethtool -C <interface> adaptive-rx off rx-usecs <microseconds>
62 62
@@ -172,7 +172,7 @@ PERFORMANCE
172 smaller window prevents congestion and facilitates better pacing, 172 smaller window prevents congestion and facilitates better pacing,
173 especially if/when MAC level flow control does not work well or when it is 173 especially if/when MAC level flow control does not work well or when it is
174 not supported on the machine. Experimentation may be necessary to attain 174 not supported on the machine. Experimentation may be necessary to attain
175 the correct value. This method is provided as a starting point fot the 175 the correct value. This method is provided as a starting point for the
176 correct receive buffer size. 176 correct receive buffer size.
177 Setting the min, max, and default receive buffer (RX_WINDOW) size is 177 Setting the min, max, and default receive buffer (RX_WINDOW) size is
178 performed in the same manner as single connection. 178 performed in the same manner as single connection.
diff --git a/Documentation/networking/decnet.txt b/Documentation/networking/decnet.txt
index e6c39c5831f5..badb7480ea62 100644
--- a/Documentation/networking/decnet.txt
+++ b/Documentation/networking/decnet.txt
@@ -82,7 +82,7 @@ ethernet address of your ethernet card has to be set according to the DECnet
82address of the node in order for it to be autoconfigured (and then appear in 82address of the node in order for it to be autoconfigured (and then appear in
83/proc/net/decnet_dev). There is a utility available at the above 83/proc/net/decnet_dev). There is a utility available at the above
84FTP sites called dn2ethaddr which can compute the correct ethernet 84FTP sites called dn2ethaddr which can compute the correct ethernet
85address to use. The address can be set by ifconfig either before at 85address to use. The address can be set by ifconfig either before or
86at the time the device is brought up. If you are using RedHat you can 86at the time the device is brought up. If you are using RedHat you can
87add the line: 87add the line:
88 88
diff --git a/Documentation/networking/dl2k.txt b/Documentation/networking/dl2k.txt
index d460492037ef..10e8490fa406 100644
--- a/Documentation/networking/dl2k.txt
+++ b/Documentation/networking/dl2k.txt
@@ -173,7 +173,7 @@ Installing the Driver
173 173
174Parameter Description 174Parameter Description
175===================== 175=====================
176You can install this driver without any addtional parameter. However, if you 176You can install this driver without any additional parameter. However, if you
177are going to have extensive functions then it is necessary to set extra 177are going to have extensive functions then it is necessary to set extra
178parameter. Below is a list of the command line parameters supported by the 178parameter. Below is a list of the command line parameters supported by the
179Linux device 179Linux device
@@ -222,7 +222,7 @@ rx_timeout=n - Rx DMA wait time for an interrupt.
222 reach timeout of n * 640 nano seconds. 222 reach timeout of n * 640 nano seconds.
223 Set proper rx_coalesce and rx_timeout can 223 Set proper rx_coalesce and rx_timeout can
224 reduce congestion collapse and overload which 224 reduce congestion collapse and overload which
225 has been a bottlenect for high speed network. 225 has been a bottleneck for high speed network.
226 226
227 For example, rx_coalesce=10 rx_timeout=800. 227 For example, rx_coalesce=10 rx_timeout=800.
228 that is, hardware assert only 1 interrupt 228 that is, hardware assert only 1 interrupt
diff --git a/Documentation/networking/dmfe.txt b/Documentation/networking/dmfe.txt
index 046363552d09..b1b7499dd9d3 100644
--- a/Documentation/networking/dmfe.txt
+++ b/Documentation/networking/dmfe.txt
@@ -34,7 +34,7 @@ Next you should configure your network interface with a command similar to :
34 34
35 ifconfig eth0 172.22.3.18 35 ifconfig eth0 172.22.3.18
36 ^^^^^^^^^^^ 36 ^^^^^^^^^^^
37 Your IP Adress 37 Your IP Address
38 38
39Then you may have to modify the default routing table with command : 39Then you may have to modify the default routing table with command :
40 40
diff --git a/Documentation/networking/driver.txt b/Documentation/networking/driver.txt
index a9ad58b49cc5..4f7da5a2bf4f 100644
--- a/Documentation/networking/driver.txt
+++ b/Documentation/networking/driver.txt
@@ -37,7 +37,7 @@ Transmit path guidelines:
37 ... 37 ...
38 } 38 }
39 39
40 And then at the end of your TX reclaimation event handling: 40 And then at the end of your TX reclamation event handling:
41 41
42 if (netif_queue_stopped(dp->dev) && 42 if (netif_queue_stopped(dp->dev) &&
43 TX_BUFFS_AVAIL(dp) > (MAX_SKB_FRAGS + 1)) 43 TX_BUFFS_AVAIL(dp) > (MAX_SKB_FRAGS + 1))
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt
index 71fe15af356c..5c0a5cc03998 100644
--- a/Documentation/networking/e1000.txt
+++ b/Documentation/networking/e1000.txt
@@ -350,7 +350,7 @@ Additional Configurations
350 350
351 As an example, if you install the e1000 driver for two PRO/1000 adapters 351 As an example, if you install the e1000 driver for two PRO/1000 adapters
352 (eth0 and eth1) and set the speed and duplex to 10full and 100half, add 352 (eth0 and eth1) and set the speed and duplex to 10full and 100half, add
353 the following to modules.conf or or modprobe.conf: 353 the following to modules.conf or modprobe.conf:
354 354
355 alias eth0 e1000 355 alias eth0 e1000
356 alias eth1 e1000 356 alias eth1 e1000
diff --git a/Documentation/networking/fib_trie.txt b/Documentation/networking/fib_trie.txt
index f50d0c673c57..0723db7f8495 100644
--- a/Documentation/networking/fib_trie.txt
+++ b/Documentation/networking/fib_trie.txt
@@ -79,7 +79,7 @@ trie_rebalance()
79 79
80resize() 80resize()
81 Analyzes a tnode and optimizes the child array size by either inflating 81 Analyzes a tnode and optimizes the child array size by either inflating
82 or shrinking it repeatedly until it fullfills the criteria for optimal 82 or shrinking it repeatedly until it fulfills the criteria for optimal
83 level compression. This part follows the original paper pretty closely 83 level compression. This part follows the original paper pretty closely
84 and there may be some room for experimentation here. 84 and there may be some room for experimentation here.
85 85
diff --git a/Documentation/networking/gen_stats.txt b/Documentation/networking/gen_stats.txt
index c3297f79c137..70e6275b757a 100644
--- a/Documentation/networking/gen_stats.txt
+++ b/Documentation/networking/gen_stats.txt
@@ -79,8 +79,8 @@ Rate Estimator:
79 79
800) Prepare an estimator attribute. Most likely this would be in user 800) Prepare an estimator attribute. Most likely this would be in user
81 space. The value of this TLV should contain a tc_estimator structure. 81 space. The value of this TLV should contain a tc_estimator structure.
82 As usual, such a TLV nees to be 32 bit aligned and therefore the 82 As usual, such a TLV needs to be 32 bit aligned and therefore the
83 length needs to be appropriately set etc. The estimator interval 83 length needs to be appropriately set, etc. The estimator interval
84 and ewma log need to be converted to the appropriate values. 84 and ewma log need to be converted to the appropriate values.
85 tc_estimator.c::tc_setup_estimator() is advisable to be used as the 85 tc_estimator.c::tc_setup_estimator() is advisable to be used as the
86 conversion routine. It does a few clever things. It takes a time 86 conversion routine. It does a few clever things. It takes a time
@@ -103,8 +103,8 @@ In the kernel when setting up:
103 else 103 else
104 failed 104 failed
105 105
106From now on, everytime you dump my_rate_est_stats it will contain 106From now on, every time you dump my_rate_est_stats it will contain
107uptodate info. 107up-to-date info.
108 108
109Once you are done, call gen_kill_estimator(my_basicstats, 109Once you are done, call gen_kill_estimator(my_basicstats,
110my_rate_est_stats) Make sure that my_basicstats and my_rate_est_stats 110my_rate_est_stats) Make sure that my_basicstats and my_rate_est_stats
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 935e298f674a..fd3c0c012351 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -495,7 +495,7 @@ icmp_errors_use_inbound_ifaddr - BOOLEAN
495 495
496 Note that if no primary address exists for the interface selected, 496 Note that if no primary address exists for the interface selected,
497 then the primary address of the first non-loopback interface that 497 then the primary address of the first non-loopback interface that
498 has one will be used regarldess of this setting. 498 has one will be used regardless of this setting.
499 499
500 Default: 0 500 Default: 0
501 501
@@ -787,7 +787,7 @@ accept_ra_defrtr - BOOLEAN
787 disabled if accept_ra is disabled. 787 disabled if accept_ra is disabled.
788 788
789accept_ra_pinfo - BOOLEAN 789accept_ra_pinfo - BOOLEAN
790 Learn Prefix Inforamtion in Router Advertisement. 790 Learn Prefix Information in Router Advertisement.
791 791
792 Functional default: enabled if accept_ra is enabled. 792 Functional default: enabled if accept_ra is enabled.
793 disabled if accept_ra is disabled. 793 disabled if accept_ra is disabled.
diff --git a/Documentation/networking/netconsole.txt b/Documentation/networking/netconsole.txt
index 53618fb1a717..1caa6c734691 100644
--- a/Documentation/networking/netconsole.txt
+++ b/Documentation/networking/netconsole.txt
@@ -52,6 +52,6 @@ messages is high, but should have no other impact.
52Netconsole was designed to be as instantaneous as possible, to 52Netconsole was designed to be as instantaneous as possible, to
53enable the logging of even the most critical kernel bugs. It works 53enable the logging of even the most critical kernel bugs. It works
54from IRQ contexts as well, and does not enable interrupts while 54from IRQ contexts as well, and does not enable interrupts while
55sending packets. Due to these unique needs, configuration can not 55sending packets. Due to these unique needs, configuration cannot
56be more automatic, and some fundamental limitations will remain: 56be more automatic, and some fundamental limitations will remain:
57only IP networks, UDP packets and ethernet devices are supported. 57only IP networks, UDP packets and ethernet devices are supported.
diff --git a/Documentation/networking/netif-msg.txt b/Documentation/networking/netif-msg.txt
index 18ad4cea6259..c967ddb90d0b 100644
--- a/Documentation/networking/netif-msg.txt
+++ b/Documentation/networking/netif-msg.txt
@@ -40,7 +40,7 @@ History
40 Per-interface rather than per-driver message level setting. 40 Per-interface rather than per-driver message level setting.
41 More selective control over the type of messages emitted. 41 More selective control over the type of messages emitted.
42 42
43 The netif_msg recommandation adds these features with only a minor 43 The netif_msg recommendation adds these features with only a minor
44 complexity and code size increase. 44 complexity and code size increase.
45 45
46 The recommendation is the following points 46 The recommendation is the following points
diff --git a/Documentation/networking/operstates.txt b/Documentation/networking/operstates.txt
index 4a21d9bb836b..c9074f9b78bb 100644
--- a/Documentation/networking/operstates.txt
+++ b/Documentation/networking/operstates.txt
@@ -2,7 +2,7 @@
21. Introduction 21. Introduction
3 3
4Linux distinguishes between administrative and operational state of an 4Linux distinguishes between administrative and operational state of an
5interface. Admininstrative state is the result of "ip link set dev 5interface. Administrative state is the result of "ip link set dev
6<dev> up or down" and reflects whether the administrator wants to use 6<dev> up or down" and reflects whether the administrator wants to use
7the device for traffic. 7the device for traffic.
8 8
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt
index aaf99d5f0dad..12a008a5c221 100644
--- a/Documentation/networking/packet_mmap.txt
+++ b/Documentation/networking/packet_mmap.txt
@@ -66,7 +66,7 @@ the following process:
66 66
67[setup] socket() -------> creation of the capture socket 67[setup] socket() -------> creation of the capture socket
68 setsockopt() ---> allocation of the circular buffer (ring) 68 setsockopt() ---> allocation of the circular buffer (ring)
69 mmap() ---------> maping of the allocated buffer to the 69 mmap() ---------> mapping of the allocated buffer to the
70 user process 70 user process
71 71
72[capture] poll() ---------> to wait for incoming packets 72[capture] poll() ---------> to wait for incoming packets
@@ -93,7 +93,7 @@ The destruction of the socket and all associated resources
93is done by a simple call to close(fd). 93is done by a simple call to close(fd).
94 94
95Next I will describe PACKET_MMAP settings and it's constraints, 95Next I will describe PACKET_MMAP settings and it's constraints,
96also the maping of the circular buffer in the user process and 96also the mapping of the circular buffer in the user process and
97the use of this buffer. 97the use of this buffer.
98 98
99-------------------------------------------------------------------------------- 99--------------------------------------------------------------------------------
@@ -153,8 +153,8 @@ we will get the following buffer structure:
153 153
154A frame can be of any size with the only condition it can fit in a block. A block 154A frame can be of any size with the only condition it can fit in a block. A block
155can only hold an integer number of frames, or in other words, a frame cannot 155can only hold an integer number of frames, or in other words, a frame cannot
156be spawn accross two blocks so there are some datails you have to take into 156be spawned accross two blocks, so there are some details you have to take into
157account when choosing the frame_size. See "Maping and use of the circular 157account when choosing the frame_size. See "Mapping and use of the circular
158buffer (ring)". 158buffer (ring)".
159 159
160 160
@@ -215,8 +215,8 @@ called pg_vec, its size limits the number of blocks that can be allocated.
215 block #1 215 block #1
216 216
217 217
218kmalloc allocates any number of bytes of phisically contiguous memory from 218kmalloc allocates any number of bytes of physically contiguous memory from
219a pool of pre-determined sizes. This pool of memory is mantained by the slab 219a pool of pre-determined sizes. This pool of memory is maintained by the slab
220allocator which is at the end the responsible for doing the allocation and 220allocator which is at the end the responsible for doing the allocation and
221hence which imposes the maximum memory that kmalloc can allocate. 221hence which imposes the maximum memory that kmalloc can allocate.
222 222
@@ -262,7 +262,7 @@ i386 architecture:
262 <pagesize> = 4096 bytes 262 <pagesize> = 4096 bytes
263 <max-order> = 11 263 <max-order> = 11
264 264
265and a value for <frame size> of 2048 byteas. These parameters will yield 265and a value for <frame size> of 2048 bytes. These parameters will yield
266 266
267 <block number> = 131072/4 = 32768 blocks 267 <block number> = 131072/4 = 32768 blocks
268 <block size> = 4096 << 11 = 8 MiB. 268 <block size> = 4096 << 11 = 8 MiB.
@@ -278,7 +278,7 @@ an i386 kernel's memory size is limited to 1GiB.
278All memory allocations are not freed until the socket is closed. The memory 278All memory allocations are not freed until the socket is closed. The memory
279allocations are done with GFP_KERNEL priority, this basically means that 279allocations are done with GFP_KERNEL priority, this basically means that
280the allocation can wait and swap other process' memory in order to allocate 280the allocation can wait and swap other process' memory in order to allocate
281the nececessary memory, so normally limits can be reached. 281the necessary memory, so normally limits can be reached.
282 282
283 Other constraints 283 Other constraints
284------------------- 284-------------------
@@ -296,7 +296,7 @@ the following (from include/linux/if_packet.h):
296 - struct tpacket_hdr 296 - struct tpacket_hdr
297 - pad to TPACKET_ALIGNMENT=16 297 - pad to TPACKET_ALIGNMENT=16
298 - struct sockaddr_ll 298 - struct sockaddr_ll
299 - Gap, chosen so that packet data (Start+tp_net) alignes to 299 - Gap, chosen so that packet data (Start+tp_net) aligns to
300 TPACKET_ALIGNMENT=16 300 TPACKET_ALIGNMENT=16
301 - Start+tp_mac: [ Optional MAC header ] 301 - Start+tp_mac: [ Optional MAC header ]
302 - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16. 302 - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
@@ -311,14 +311,14 @@ the following (from include/linux/if_packet.h):
311 tp_frame_size must be a multiple of TPACKET_ALIGNMENT 311 tp_frame_size must be a multiple of TPACKET_ALIGNMENT
312 tp_frame_nr must be exactly frames_per_block*tp_block_nr 312 tp_frame_nr must be exactly frames_per_block*tp_block_nr
313 313
314Note that tp_block_size should be choosed to be a power of two or there will 314Note that tp_block_size should be chosen to be a power of two or there will
315be a waste of memory. 315be a waste of memory.
316 316
317-------------------------------------------------------------------------------- 317--------------------------------------------------------------------------------
318+ Maping and use of the circular buffer (ring) 318+ Mapping and use of the circular buffer (ring)
319-------------------------------------------------------------------------------- 319--------------------------------------------------------------------------------
320 320
321The maping of the buffer in the user process is done with the conventional 321The mapping of the buffer in the user process is done with the conventional
322mmap function. Even the circular buffer is compound of several physically 322mmap function. Even the circular buffer is compound of several physically
323discontiguous blocks of memory, they are contiguous to the user space, hence 323discontiguous blocks of memory, they are contiguous to the user space, hence
324just one call to mmap is needed: 324just one call to mmap is needed:
diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt
index 44f2f769e865..c8eee23be8c0 100644
--- a/Documentation/networking/pktgen.txt
+++ b/Documentation/networking/pktgen.txt
@@ -7,7 +7,7 @@ Date: 041221
7 7
8Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in kernel 8Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in kernel
9or as module. Module is preferred. insmod pktgen if needed. Once running 9or as module. Module is preferred. insmod pktgen if needed. Once running
10pktgen creates a thread on each CPU where each thread has affinty it's CPU. 10pktgen creates a thread on each CPU where each thread has affinity to its CPU.
11Monitoring and controlling is done via /proc. Easiest to select a suitable 11Monitoring and controlling is done via /proc. Easiest to select a suitable
12a sample script and configure. 12a sample script and configure.
13 13
@@ -18,7 +18,7 @@ root 129 0.3 0.0 0 0 ? SW 2003 523:20 [pktgen/0]
18root 130 0.3 0.0 0 0 ? SW 2003 509:50 [pktgen/1] 18root 130 0.3 0.0 0 0 ? SW 2003 509:50 [pktgen/1]
19 19
20 20
21For montoring and control pktgen creates: 21For monitoring and control pktgen creates:
22 /proc/net/pktgen/pgctrl 22 /proc/net/pktgen/pgctrl
23 /proc/net/pktgen/kpktgend_X 23 /proc/net/pktgen/kpktgend_X
24 /proc/net/pktgen/ethX 24 /proc/net/pktgen/ethX
@@ -32,7 +32,7 @@ Running:
32Stopped: eth1 32Stopped: eth1
33Result: OK: max_before_softirq=10000 33Result: OK: max_before_softirq=10000
34 34
35Most important the devices assigend to thread. Note! A device can only belong 35Most important the devices assigned to thread. Note! A device can only belong
36to one thread. 36to one thread.
37 37
38 38
@@ -100,6 +100,7 @@ Examples:
100 are: IPSRC_RND #IP Source is random (between min/max), 100 are: IPSRC_RND #IP Source is random (between min/max),
101 IPDST_RND, UDPSRC_RND, 101 IPDST_RND, UDPSRC_RND,
102 UDPDST_RND, MACSRC_RND, MACDST_RND 102 UDPDST_RND, MACSRC_RND, MACDST_RND
103 MPLS_RND, VID_RND, SVID_RND
103 104
104 pgset "udp_src_min 9" set UDP source port min, If < udp_src_max, then 105 pgset "udp_src_min 9" set UDP source port min, If < udp_src_max, then
105 cycle through the port range. 106 cycle through the port range.
@@ -125,13 +126,28 @@ Examples:
125 126
126 pgset "mpls 0" turn off mpls (or any invalid argument works too!) 127 pgset "mpls 0" turn off mpls (or any invalid argument works too!)
127 128
129 pgset "vlan_id 77" set VLAN ID 0-4095
130 pgset "vlan_p 3" set priority bit 0-7 (default 0)
131 pgset "vlan_cfi 0" set canonical format identifier 0-1 (default 0)
132
133 pgset "svlan_id 22" set SVLAN ID 0-4095
134 pgset "svlan_p 3" set priority bit 0-7 (default 0)
135 pgset "svlan_cfi 0" set canonical format identifier 0-1 (default 0)
136
137 pgset "vlan_id 9999" > 4095 remove vlan and svlan tags
138 pgset "svlan 9999" > 4095 remove svlan tag
139
140
141 pgset "tos XX" set former IPv4 TOS field (e.g. "tos 28" for AF11 no ECN, default 00)
142 pgset "traffic_class XX" set former IPv6 TRAFFIC CLASS (e.g. "traffic_class B8" for EF no ECN, default 00)
143
128 pgset stop aborts injection. Also, ^C aborts generator. 144 pgset stop aborts injection. Also, ^C aborts generator.
129 145
130 146
131Example scripts 147Example scripts
132=============== 148===============
133 149
134A collection of small tutorial scripts for pktgen is in expamples dir. 150A collection of small tutorial scripts for pktgen is in examples dir.
135 151
136pktgen.conf-1-1 # 1 CPU 1 dev 152pktgen.conf-1-1 # 1 CPU 1 dev
137pktgen.conf-1-2 # 1 CPU 2 dev 153pktgen.conf-1-2 # 1 CPU 2 dev
diff --git a/Documentation/networking/s2io.txt b/Documentation/networking/s2io.txt
index bd528ffbeb4b..4bde53e85f3f 100644
--- a/Documentation/networking/s2io.txt
+++ b/Documentation/networking/s2io.txt
@@ -126,7 +126,7 @@ However, you may want to set PCI latency timer to 248.
126#setpci -d 17d5:* LATENCY_TIMER=f8 126#setpci -d 17d5:* LATENCY_TIMER=f8
127For detailed description of the PCI registers, please see Xframe User Guide. 127For detailed description of the PCI registers, please see Xframe User Guide.
128b. Use 2-buffer mode. This results in large performance boost on 128b. Use 2-buffer mode. This results in large performance boost on
129on certain platforms(eg. SGI Altix, IBM xSeries). 129certain platforms(eg. SGI Altix, IBM xSeries).
130c. Ensure Receive Checksum offload is enabled. Use "ethtool -K ethX" command to 130c. Ensure Receive Checksum offload is enabled. Use "ethtool -K ethX" command to
131set/verify this option. 131set/verify this option.
132d. Enable NAPI feature(in kernel configuration Device Drivers ---> Network 132d. Enable NAPI feature(in kernel configuration Device Drivers ---> Network
diff --git a/Documentation/networking/sk98lin.txt b/Documentation/networking/sk98lin.txt
index 7837c53fd5fe..4e1cc745ec63 100644
--- a/Documentation/networking/sk98lin.txt
+++ b/Documentation/networking/sk98lin.txt
@@ -180,7 +180,7 @@ To set the driver parameters in this file, proceed as follows:
1801. Insert a line of the form : 1801. Insert a line of the form :
181 options sk98lin ... 181 options sk98lin ...
182 For "...", the same syntax is required as described for the command 182 For "...", the same syntax is required as described for the command
183 line paramaters of modprobe below. 183 line parameters of modprobe below.
1842. To activate the new parameters, either reboot your computer 1842. To activate the new parameters, either reboot your computer
185 or 185 or
186 unload and reload the driver. 186 unload and reload the driver.
@@ -320,7 +320,7 @@ Parameter: Moderation
320Values: None, Static, Dynamic 320Values: None, Static, Dynamic
321Default: None 321Default: None
322 322
323Interrupt moderation is employed to limit the maxmimum number of interrupts 323Interrupt moderation is employed to limit the maximum number of interrupts
324the driver has to serve. That is, one or more interrupts (which indicate any 324the driver has to serve. That is, one or more interrupts (which indicate any
325transmit or receive packet to be processed) are queued until the driver 325transmit or receive packet to be processed) are queued until the driver
326processes them. When queued interrupts are to be served, is determined by the 326processes them. When queued interrupts are to be served, is determined by the
@@ -364,9 +364,9 @@ Parameter: IntsPerSec
364Values: 30...40000 (interrupts per second) 364Values: 30...40000 (interrupts per second)
365Default: 2000 365Default: 2000
366 366
367This parameter is only used, if either static or dynamic interrupt moderation 367This parameter is only used if either static or dynamic interrupt moderation
368is used on a network adapter card. Using this paramter if no moderation is 368is used on a network adapter card. Using this parameter if no moderation is
369applied, will lead to no action performed. 369applied will lead to no action performed.
370 370
371This parameter determines the length of any interrupt moderation interval. 371This parameter determines the length of any interrupt moderation interval.
372Assuming that static interrupt moderation is to be used, an 'IntsPerSec' 372Assuming that static interrupt moderation is to be used, an 'IntsPerSec'
@@ -484,7 +484,7 @@ If any problems occur during the installation process, check the
484following list: 484following list:
485 485
486 486
487Problem: The SK-98xx adapter can not be found by the driver. 487Problem: The SK-98xx adapter cannot be found by the driver.
488Solution: In /proc/pci search for the following entry: 488Solution: In /proc/pci search for the following entry:
489 'Ethernet controller: SysKonnect SK-98xx ...' 489 'Ethernet controller: SysKonnect SK-98xx ...'
490 If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has 490 If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has
@@ -497,12 +497,12 @@ Solution: In /proc/pci search for the following entry:
497 www.syskonnect.com 497 www.syskonnect.com
498 498
499 Some COMPAQ machines have problems dealing with PCI under Linux. 499 Some COMPAQ machines have problems dealing with PCI under Linux.
500 Linux. This problem is described in the 'PCI howto' document 500 This problem is described in the 'PCI howto' document
501 (included in some distributions or available from the 501 (included in some distributions or available from the
502 web, e.g. at 'www.linux.org'). 502 web, e.g. at 'www.linux.org').
503 503
504 504
505Problem: Programs such as 'ifconfig' or 'route' can not be found or the 505Problem: Programs such as 'ifconfig' or 'route' cannot be found or the
506 error message 'Operation not permitted' is displayed. 506 error message 'Operation not permitted' is displayed.
507Reason: You are not logged in as user 'root'. 507Reason: You are not logged in as user 'root'.
508Solution: Logout and login as 'root' or change to 'root' via 'su'. 508Solution: Logout and login as 'root' or change to 'root' via 'su'.
diff --git a/Documentation/networking/skfp.txt b/Documentation/networking/skfp.txt
index 3a419ed42f81..abfddf81e34a 100644
--- a/Documentation/networking/skfp.txt
+++ b/Documentation/networking/skfp.txt
@@ -81,7 +81,7 @@ Makes my life much easier :-)
81 81
82If you run into problems during installation, check those items: 82If you run into problems during installation, check those items:
83 83
84Problem: The FDDI adapter can not be found by the driver. 84Problem: The FDDI adapter cannot be found by the driver.
85Reason: Look in /proc/pci for the following entry: 85Reason: Look in /proc/pci for the following entry:
86 'FDDI network controller: SysKonnect SK-FDDI-PCI ...' 86 'FDDI network controller: SysKonnect SK-FDDI-PCI ...'
87 If this entry exists, then the FDDI adapter has been 87 If this entry exists, then the FDDI adapter has been
@@ -99,7 +99,7 @@ Reason: Look in /proc/pci for the following entry:
99 99
100Problem: You want to use your computer as a router between 100Problem: You want to use your computer as a router between
101 multiple IP subnetworks (using multiple adapters), but 101 multiple IP subnetworks (using multiple adapters), but
102 you can not reach computers in other subnetworks. 102 you cannot reach computers in other subnetworks.
103Reason: Either the router's kernel is not configured for IP 103Reason: Either the router's kernel is not configured for IP
104 forwarding or there is a problem with the routing table 104 forwarding or there is a problem with the routing table
105 and gateway configuration in at least one of the 105 and gateway configuration in at least one of the
diff --git a/Documentation/networking/slicecom.txt b/Documentation/networking/slicecom.txt
index 59cfd95121fb..2f04c9267f89 100644
--- a/Documentation/networking/slicecom.txt
+++ b/Documentation/networking/slicecom.txt
@@ -89,7 +89,7 @@ red: green: meaning:
89 89
90- - no frame-sync, no signal received, or signal SNAFU. 90- - no frame-sync, no signal received, or signal SNAFU.
91- on "Everything is OK" 91- on "Everything is OK"
92on on Recepion is ok, but the remote end sends Remote Alarm 92on on Reception is ok, but the remote end sends Remote Alarm
93on - The interface is unconfigured 93on - The interface is unconfigured
94 94
95----------------------------------------------------------------- 95-----------------------------------------------------------------
@@ -257,12 +257,12 @@ which begin with '//' are the comments.
257// No alarms - Everything OK 257// No alarms - Everything OK
258// 258//
259// LOS - Loss Of Signal - No signal sensed on the input 259// LOS - Loss Of Signal - No signal sensed on the input
260// AIS - Alarm Indication Signal - The remot side sends '11111111'-s, 260// AIS - Alarm Indication Signal - The remote side sends '11111111'-s,
261// it tells, that there's an error condition, or it's not 261// it tells, that there's an error condition, or it's not
262// initialised. 262// initialised.
263// AUXP - Auxiliary Pattern Indication - 01010101.. received. 263// AUXP - Auxiliary Pattern Indication - 01010101.. received.
264// LFA - Loss of Frame Alignment - no frame sync received. 264// LFA - Loss of Frame Alignment - no frame sync received.
265// RRA - Receive Remote Alarm - the remote end's OK, but singnals error cond. 265// RRA - Receive Remote Alarm - the remote end's OK, but signals error cond.
266// LMFA - Loss of CRC4 Multiframe Alignment - no CRC4 multiframe sync. 266// LMFA - Loss of CRC4 Multiframe Alignment - no CRC4 multiframe sync.
267// NMF - No Multiframe alignment Found after 400 msec - no such alarm using 267// NMF - No Multiframe alignment Found after 400 msec - no such alarm using
268// no-crc4 or crc4 framing, see below. 268// no-crc4 or crc4 framing, see below.
@@ -364,6 +364,6 @@ Treat them very carefully, these can cause much trouble!
364 364
365 # echo >lbireg 0x1d 0x21 365 # echo >lbireg 0x1d 0x21
366 366
367 - Swithing the loop off: 367 - Switching the loop off:
368 368
369 # echo >lbireg 0x1d 0x00 369 # echo >lbireg 0x1d 0x00
diff --git a/Documentation/networking/smctr.txt b/Documentation/networking/smctr.txt
index 4c866f5a0ee4..9af25b810c1f 100644
--- a/Documentation/networking/smctr.txt
+++ b/Documentation/networking/smctr.txt
@@ -11,7 +11,7 @@ This driver is rather simple to use. Select Y to Token Ring adapter support
11in the kernel configuration. A choice for SMC Token Ring adapters will 11in the kernel configuration. A choice for SMC Token Ring adapters will
12appear. This drives supports all SMC ISA/MCA adapters. Choose this 12appear. This drives supports all SMC ISA/MCA adapters. Choose this
13option. I personally recommend compiling the driver as a module (M), but if you 13option. I personally recommend compiling the driver as a module (M), but if you
14you would like to compile it staticly answer Y instead. 14you would like to compile it statically answer Y instead.
15 15
16This driver supports multiple adapters without the need to load multiple copies 16This driver supports multiple adapters without the need to load multiple copies
17of the driver. You should be able to load up to 7 adapters without any kernel 17of the driver. You should be able to load up to 7 adapters without any kernel
diff --git a/Documentation/networking/tcp.txt b/Documentation/networking/tcp.txt
index 0fa300425575..0121edc3ba06 100644
--- a/Documentation/networking/tcp.txt
+++ b/Documentation/networking/tcp.txt
@@ -62,7 +62,7 @@ if needed and you will get the expected protocol. If you ask for an
62unknown congestion method, then the sysctl attempt will fail. 62unknown congestion method, then the sysctl attempt will fail.
63 63
64If you remove a tcp congestion control module, then you will get the next 64If you remove a tcp congestion control module, then you will get the next
65available one. Since reno can not be built as a module, and can not be 65available one. Since reno cannot be built as a module, and cannot be
66deleted, it will always be available. 66deleted, it will always be available.
67 67
68How the new TCP output machine [nyi] works. 68How the new TCP output machine [nyi] works.
diff --git a/Documentation/networking/tms380tr.txt b/Documentation/networking/tms380tr.txt
index 179e527b9da1..c169a57bc925 100644
--- a/Documentation/networking/tms380tr.txt
+++ b/Documentation/networking/tms380tr.txt
@@ -24,7 +24,7 @@ This driver is rather simple to use. Select Y to Token Ring adapter support
24in the kernel configuration. A choice for SysKonnect Token Ring adapters will 24in the kernel configuration. A choice for SysKonnect Token Ring adapters will
25appear. This drives supports all SysKonnect ISA and PCI adapters. Choose this 25appear. This drives supports all SysKonnect ISA and PCI adapters. Choose this
26option. I personally recommend compiling the driver as a module (M), but if you 26option. I personally recommend compiling the driver as a module (M), but if you
27you would like to compile it staticly answer Y instead. 27you would like to compile it statically answer Y instead.
28 28
29This driver supports multiple adapters without the need to load multiple copies 29This driver supports multiple adapters without the need to load multiple copies
30of the driver. You should be able to load up to 7 adapters without any kernel 30of the driver. You should be able to load up to 7 adapters without any kernel
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt
index 6091e5f6794f..6356d3faed36 100644
--- a/Documentation/networking/vortex.txt
+++ b/Documentation/networking/vortex.txt
@@ -359,13 +359,13 @@ steps you should take:
359 359
360 Eliminate some variables: try different cards, different 360 Eliminate some variables: try different cards, different
361 computers, different cables, different ports on the switch/hub, 361 computers, different cables, different ports on the switch/hub,
362 different versions of the kernel or ofthe driver, etc. 362 different versions of the kernel or of the driver, etc.
363 363
364- OK, it's a driver problem. 364- OK, it's a driver problem.
365 365
366 You need to generate a report. Typically this is an email to the 366 You need to generate a report. Typically this is an email to the
367 maintainer and/or linux-net@vger.kernel.org. The maintainer's 367 maintainer and/or linux-net@vger.kernel.org. The maintainer's
368 email address will be inthe driver source or in the MAINTAINERS file. 368 email address will be in the driver source or in the MAINTAINERS file.
369 369
370- The contents of your report will vary a lot depending upon the 370- The contents of your report will vary a lot depending upon the
371 problem. If it's a kernel crash then you should refer to the 371 problem. If it's a kernel crash then you should refer to the
diff --git a/Documentation/networking/wan-router.txt b/Documentation/networking/wan-router.txt
index c96897aa08b6..0cf654147634 100644
--- a/Documentation/networking/wan-router.txt
+++ b/Documentation/networking/wan-router.txt
@@ -148,7 +148,7 @@ NEW IN THIS RELEASE
148 for async connections. 148 for async connections.
149 149
150 o Added the PPPCONFIG utility 150 o Added the PPPCONFIG utility
151 Used to configure the PPPD dameon for the 151 Used to configure the PPPD daemon for the
152 WANPIPE Async PPP and standard serial port. 152 WANPIPE Async PPP and standard serial port.
153 The wancfg calls the pppconfig to configure 153 The wancfg calls the pppconfig to configure
154 the pppd. 154 the pppd.
@@ -214,7 +214,7 @@ PRODUCT COMPONENTS AND RELATED FILES
214/usr/local/wanrouter/patches/kdrivers: 214/usr/local/wanrouter/patches/kdrivers:
215 Sources of the latest WANPIPE device drivers. 215 Sources of the latest WANPIPE device drivers.
216 These are used to UPGRADE the linux kernel to the newest 216 These are used to UPGRADE the linux kernel to the newest
217 version if the kernel source has already been pathced with 217 version if the kernel source has already been patched with
218 WANPIPE drivers. 218 WANPIPE drivers.
219 219
220/usr/local/wanrouter/samples: 220/usr/local/wanrouter/samples:
@@ -350,7 +350,7 @@ REVISION HISTORY
350 Available as a patch. 350 Available as a patch.
351 351
3522.0.6 Aug 17, 1999 Increased debugging in statup scripts 3522.0.6 Aug 17, 1999 Increased debugging in statup scripts
353 Fixed insallation bugs from 2.0.5 353 Fixed installation bugs from 2.0.5
354 Kernel patch works for both 2.2.10 and 2.2.11 kernels. 354 Kernel patch works for both 2.2.10 and 2.2.11 kernels.
355 There is no functional difference between the two packages 355 There is no functional difference between the two packages
356 356
@@ -434,11 +434,11 @@ beta3-2.1.4 Jul 2000 o X25 M_BIT Problem fix.
434 change. 434 change.
435 435
436beta1-2.1.5 Nov 15 2000 436beta1-2.1.5 Nov 15 2000
437 o Fixed the MulitPort PPP Support for kernels 2.2.16 and above. 437 o Fixed the MultiPort PPP Support for kernels 2.2.16 and above.
438 2.2.X kernels only 438 2.2.X kernels only
439 439
440 o Secured the driver UDP debugging calls 440 o Secured the driver UDP debugging calls
441 - All illegal netowrk debugging calls are reported to 441 - All illegal network debugging calls are reported to
442 the log. 442 the log.
443 - Defined a set of allowed commands, all other denied. 443 - Defined a set of allowed commands, all other denied.
444 444
@@ -451,7 +451,7 @@ beta1-2.1.5 Nov 15 2000
451 451
452 o Keyboard Led Monitor/Debugger 452 o Keyboard Led Monitor/Debugger
453 - A new utilty /usr/sbin/wpkbdmon uses keyboard leds 453 - A new utilty /usr/sbin/wpkbdmon uses keyboard leds
454 to convey operatinal statistic information of the 454 to convey operational statistic information of the
455 Sangoma WANPIPE cards. 455 Sangoma WANPIPE cards.
456 NUM_LOCK = Line State (On=connected, Off=disconnected) 456 NUM_LOCK = Line State (On=connected, Off=disconnected)
457 CAPS_LOCK = Tx data (On=transmitting, Off=no tx data) 457 CAPS_LOCK = Tx data (On=transmitting, Off=no tx data)
@@ -470,7 +470,7 @@ beta1-2.1.5 Nov 15 2000
470 o Fixed the Frame Relay and Chdlc network interfaces so they are 470 o Fixed the Frame Relay and Chdlc network interfaces so they are
471 compatible with libpcap libraries. Meaning, tcpdump, snort, 471 compatible with libpcap libraries. Meaning, tcpdump, snort,
472 ethereal, and all other packet sniffers and debuggers work on 472 ethereal, and all other packet sniffers and debuggers work on
473 all WANPIPE netowrk interfaces. 473 all WANPIPE network interfaces.
474 - Set the network interface encoding type to ARPHRD_PPP. 474 - Set the network interface encoding type to ARPHRD_PPP.
475 This tell the sniffers that data obtained from the 475 This tell the sniffers that data obtained from the
476 network interface is in pure IP format. 476 network interface is in pure IP format.
@@ -570,7 +570,7 @@ bata1-2.2.1 Feb 09 2001
570 570
571 Option to COMPILE WANPIPE modules against the currently 571 Option to COMPILE WANPIPE modules against the currently
572 running kernel, thus no need for manual kernel and module 572 running kernel, thus no need for manual kernel and module
573 re-compilatin. 573 re-compilation.
574 574
575 o Updates and Bug Fixes to wancfg utility. 575 o Updates and Bug Fixes to wancfg utility.
576 576
diff --git a/Documentation/nfsroot.txt b/Documentation/nfsroot.txt
index 3cc953cb288f..719f9a9d60c0 100644
--- a/Documentation/nfsroot.txt
+++ b/Documentation/nfsroot.txt
@@ -11,7 +11,7 @@ Updated 2006 by Horms <horms@verge.net.au>
11In order to use a diskless system, such as an X-terminal or printer server 11In order to use a diskless system, such as an X-terminal or printer server
12for example, it is necessary for the root filesystem to be present on a 12for example, it is necessary for the root filesystem to be present on a
13non-disk device. This may be an initramfs (see Documentation/filesystems/ 13non-disk device. This may be an initramfs (see Documentation/filesystems/
14ramfs-rootfs-initramfs.txt), a ramdisk (see Documenation/initrd.txt) or a 14ramfs-rootfs-initramfs.txt), a ramdisk (see Documentation/initrd.txt) or a
15filesystem mounted via NFS. The following text describes on how to use NFS 15filesystem mounted via NFS. The following text describes on how to use NFS
16for the root filesystem. For the rest of this text 'client' means the 16for the root filesystem. For the rest of this text 'client' means the
17diskless system, and 'server' means the NFS server. 17diskless system, and 'server' means the NFS server.
diff --git a/Documentation/nommu-mmap.txt b/Documentation/nommu-mmap.txt
index b88ebe4d808c..7714f57caad5 100644
--- a/Documentation/nommu-mmap.txt
+++ b/Documentation/nommu-mmap.txt
@@ -116,6 +116,9 @@ FURTHER NOTES ON NO-MMU MMAP
116 (*) A list of all the mappings on the system is visible through /proc/maps in 116 (*) A list of all the mappings on the system is visible through /proc/maps in
117 no-MMU mode. 117 no-MMU mode.
118 118
119 (*) A list of all the mappings in use by a process is visible through
120 /proc/<pid>/maps in no-MMU mode.
121
119 (*) Supplying MAP_FIXED or a requesting a particular mapping address will 122 (*) Supplying MAP_FIXED or a requesting a particular mapping address will
120 result in an error. 123 result in an error.
121 124
@@ -125,6 +128,49 @@ FURTHER NOTES ON NO-MMU MMAP
125 error will result if they don't. This is most likely to be encountered 128 error will result if they don't. This is most likely to be encountered
126 with character device files, pipes, fifos and sockets. 129 with character device files, pipes, fifos and sockets.
127 130
131
132==========================
133INTERPROCESS SHARED MEMORY
134==========================
135
136Both SYSV IPC SHM shared memory and POSIX shared memory is supported in NOMMU
137mode. The former through the usual mechanism, the latter through files created
138on ramfs or tmpfs mounts.
139
140
141=======
142FUTEXES
143=======
144
145Futexes are supported in NOMMU mode if the arch supports them. An error will
146be given if an address passed to the futex system call lies outside the
147mappings made by a process or if the mapping in which the address lies does not
148support futexes (such as an I/O chardev mapping).
149
150
151=============
152NO-MMU MREMAP
153=============
154
155The mremap() function is partially supported. It may change the size of a
156mapping, and may move it[*] if MREMAP_MAYMOVE is specified and if the new size
157of the mapping exceeds the size of the slab object currently occupied by the
158memory to which the mapping refers, or if a smaller slab object could be used.
159
160MREMAP_FIXED is not supported, though it is ignored if there's no change of
161address and the object does not need to be moved.
162
163Shared mappings may not be moved. Shareable mappings may not be moved either,
164even if they are not currently shared.
165
166The mremap() function must be given an exact match for base address and size of
167a previously mapped object. It may not be used to create holes in existing
168mappings, move parts of existing mappings or resize parts of mappings. It must
169act on a complete mapping.
170
171[*] Not currently supported.
172
173
128============================================ 174============================================
129PROVIDING SHAREABLE CHARACTER DEVICE SUPPORT 175PROVIDING SHAREABLE CHARACTER DEVICE SUPPORT
130============================================ 176============================================
diff --git a/Documentation/pci-error-recovery.txt b/Documentation/pci-error-recovery.txt
index 634d3e5b5756..6650af432523 100644
--- a/Documentation/pci-error-recovery.txt
+++ b/Documentation/pci-error-recovery.txt
@@ -172,7 +172,7 @@ is STEP 6 (Permanent Failure).
172>>> a value of 0xff on read, and writes will be dropped. If the device 172>>> a value of 0xff on read, and writes will be dropped. If the device
173>>> driver attempts more than 10K I/O's to a frozen adapter, it will 173>>> driver attempts more than 10K I/O's to a frozen adapter, it will
174>>> assume that the device driver has gone into an infinite loop, and 174>>> assume that the device driver has gone into an infinite loop, and
175>>> it will panic the the kernel. There doesn't seem to be any other 175>>> it will panic the kernel. There doesn't seem to be any other
176>>> way of stopping a device driver that insists on spinning on I/O. 176>>> way of stopping a device driver that insists on spinning on I/O.
177 177
178STEP 2: MMIO Enabled 178STEP 2: MMIO Enabled
diff --git a/Documentation/pcieaer-howto.txt b/Documentation/pcieaer-howto.txt
new file mode 100644
index 000000000000..16c251230c82
--- /dev/null
+++ b/Documentation/pcieaer-howto.txt
@@ -0,0 +1,253 @@
1 The PCI Express Advanced Error Reporting Driver Guide HOWTO
2 T. Long Nguyen <tom.l.nguyen@intel.com>
3 Yanmin Zhang <yanmin.zhang@intel.com>
4 07/29/2006
5
6
71. Overview
8
91.1 About this guide
10
11This guide describes the basics of the PCI Express Advanced Error
12Reporting (AER) driver and provides information on how to use it, as
13well as how to enable the drivers of endpoint devices to conform with
14PCI Express AER driver.
15
161.2 Copyright © Intel Corporation 2006.
17
181.3 What is the PCI Express AER Driver?
19
20PCI Express error signaling can occur on the PCI Express link itself
21or on behalf of transactions initiated on the link. PCI Express
22defines two error reporting paradigms: the baseline capability and
23the Advanced Error Reporting capability. The baseline capability is
24required of all PCI Express components providing a minimum defined
25set of error reporting requirements. Advanced Error Reporting
26capability is implemented with a PCI Express advanced error reporting
27extended capability structure providing more robust error reporting.
28
29The PCI Express AER driver provides the infrastructure to support PCI
30Express Advanced Error Reporting capability. The PCI Express AER
31driver provides three basic functions:
32
33- Gathers the comprehensive error information if errors occurred.
34- Reports error to the users.
35- Performs error recovery actions.
36
37AER driver only attaches root ports which support PCI-Express AER
38capability.
39
40
412. User Guide
42
432.1 Include the PCI Express AER Root Driver into the Linux Kernel
44
45The PCI Express AER Root driver is a Root Port service driver attached
46to the PCI Express Port Bus driver. If a user wants to use it, the driver
47has to be compiled. Option CONFIG_PCIEAER supports this capability. It
48depends on CONFIG_PCIEPORTBUS, so pls. set CONFIG_PCIEPORTBUS=y and
49CONFIG_PCIEAER = y.
50
512.2 Load PCI Express AER Root Driver
52There is a case where a system has AER support in BIOS. Enabling the AER
53Root driver and having AER support in BIOS may result unpredictable
54behavior. To avoid this conflict, a successful load of the AER Root driver
55requires ACPI _OSC support in the BIOS to allow the AER Root driver to
56request for native control of AER. See the PCI FW 3.0 Specification for
57details regarding OSC usage. Currently, lots of firmwares don't provide
58_OSC support while they use PCI Express. To support such firmwares,
59forceload, a parameter of type bool, could enable AER to continue to
60be initiated although firmwares have no _OSC support. To enable the
61walkaround, pls. add aerdriver.forceload=y to kernel boot parameter line
62when booting kernel. Note that forceload=n by default.
63
642.3 AER error output
65When a PCI-E AER error is captured, an error message will be outputed to
66console. If it's a correctable error, it is outputed as a warning.
67Otherwise, it is printed as an error. So users could choose different
68log level to filter out correctable error messages.
69
70Below shows an example.
71+------ PCI-Express Device Error -----+
72Error Severity : Uncorrected (Fatal)
73PCIE Bus Error type : Transaction Layer
74Unsupported Request : First
75Requester ID : 0500
76VendorID=8086h, DeviceID=0329h, Bus=05h, Device=00h, Function=00h
77TLB Header:
7804000001 00200a03 05010000 00050100
79
80In the example, 'Requester ID' means the ID of the device who sends
81the error message to root port. Pls. refer to pci express specs for
82other fields.
83
84
853. Developer Guide
86
87To enable AER aware support requires a software driver to configure
88the AER capability structure within its device and to provide callbacks.
89
90To support AER better, developers need understand how AER does work
91firstly.
92
93PCI Express errors are classified into two types: correctable errors
94and uncorrectable errors. This classification is based on the impacts
95of those errors, which may result in degraded performance or function
96failure.
97
98Correctable errors pose no impacts on the functionality of the
99interface. The PCI Express protocol can recover without any software
100intervention or any loss of data. These errors are detected and
101corrected by hardware. Unlike correctable errors, uncorrectable
102errors impact functionality of the interface. Uncorrectable errors
103can cause a particular transaction or a particular PCI Express link
104to be unreliable. Depending on those error conditions, uncorrectable
105errors are further classified into non-fatal errors and fatal errors.
106Non-fatal errors cause the particular transaction to be unreliable,
107but the PCI Express link itself is fully functional. Fatal errors, on
108the other hand, cause the link to be unreliable.
109
110When AER is enabled, a PCI Express device will automatically send an
111error message to the PCIE root port above it when the device captures
112an error. The Root Port, upon receiving an error reporting message,
113internally processes and logs the error message in its PCI Express
114capability structure. Error information being logged includes storing
115the error reporting agent's requestor ID into the Error Source
116Identification Registers and setting the error bits of the Root Error
117Status Register accordingly. If AER error reporting is enabled in Root
118Error Command Register, the Root Port generates an interrupt if an
119error is detected.
120
121Note that the errors as described above are related to the PCI Express
122hierarchy and links. These errors do not include any device specific
123errors because device specific errors will still get sent directly to
124the device driver.
125
1263.1 Configure the AER capability structure
127
128AER aware drivers of PCI Express component need change the device
129control registers to enable AER. They also could change AER registers,
130including mask and severity registers. Helper function
131pci_enable_pcie_error_reporting could be used to enable AER. See
132section 3.3.
133
1343.2. Provide callbacks
135
1363.2.1 callback reset_link to reset pci express link
137
138This callback is used to reset the pci express physical link when a
139fatal error happens. The root port aer service driver provides a
140default reset_link function, but different upstream ports might
141have different specifications to reset pci express link, so all
142upstream ports should provide their own reset_link functions.
143
144In struct pcie_port_service_driver, a new pointer, reset_link, is
145added.
146
147pci_ers_result_t (*reset_link) (struct pci_dev *dev);
148
149Section 3.2.2.2 provides more detailed info on when to call
150reset_link.
151
1523.2.2 PCI error-recovery callbacks
153
154The PCI Express AER Root driver uses error callbacks to coordinate
155with downstream device drivers associated with a hierarchy in question
156when performing error recovery actions.
157
158Data struct pci_driver has a pointer, err_handler, to point to
159pci_error_handlers who consists of a couple of callback function
160pointers. AER driver follows the rules defined in
161pci-error-recovery.txt except pci express specific parts (e.g.
162reset_link). Pls. refer to pci-error-recovery.txt for detailed
163definitions of the callbacks.
164
165Below sections specify when to call the error callback functions.
166
1673.2.2.1 Correctable errors
168
169Correctable errors pose no impacts on the functionality of
170the interface. The PCI Express protocol can recover without any
171software intervention or any loss of data. These errors do not
172require any recovery actions. The AER driver clears the device's
173correctable error status register accordingly and logs these errors.
174
1753.2.2.2 Non-correctable (non-fatal and fatal) errors
176
177If an error message indicates a non-fatal error, performing link reset
178at upstream is not required. The AER driver calls error_detected(dev,
179pci_channel_io_normal) to all drivers associated within a hierarchy in
180question. for example,
181EndPoint<==>DownstreamPort B<==>UpstreamPort A<==>RootPort.
182If Upstream port A captures an AER error, the hierarchy consists of
183Downstream port B and EndPoint.
184
185A driver may return PCI_ERS_RESULT_CAN_RECOVER,
186PCI_ERS_RESULT_DISCONNECT, or PCI_ERS_RESULT_NEED_RESET, depending on
187whether it can recover or the AER driver calls mmio_enabled as next.
188
189If an error message indicates a fatal error, kernel will broadcast
190error_detected(dev, pci_channel_io_frozen) to all drivers within
191a hierarchy in question. Then, performing link reset at upstream is
192necessary. As different kinds of devices might use different approaches
193to reset link, AER port service driver is required to provide the
194function to reset link. Firstly, kernel looks for if the upstream
195component has an aer driver. If it has, kernel uses the reset_link
196callback of the aer driver. If the upstream component has no aer driver
197and the port is downstream port, we will use the aer driver of the
198root port who reports the AER error. As for upstream ports,
199they should provide their own aer service drivers with reset_link
200function. If error_detected returns PCI_ERS_RESULT_CAN_RECOVER and
201reset_link returns PCI_ERS_RESULT_RECOVERED, the error handling goes
202to mmio_enabled.
203
2043.3 helper functions
205
2063.3.1 int pci_find_aer_capability(struct pci_dev *dev);
207pci_find_aer_capability locates the PCI Express AER capability
208in the device configuration space. If the device doesn't support
209PCI-Express AER, the function returns 0.
210
2113.3.2 int pci_enable_pcie_error_reporting(struct pci_dev *dev);
212pci_enable_pcie_error_reporting enables the device to send error
213messages to root port when an error is detected. Note that devices
214don't enable the error reporting by default, so device drivers need
215call this function to enable it.
216
2173.3.3 int pci_disable_pcie_error_reporting(struct pci_dev *dev);
218pci_disable_pcie_error_reporting disables the device to send error
219messages to root port when an error is detected.
220
2213.3.4 int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev);
222pci_cleanup_aer_uncorrect_error_status cleanups the uncorrectable
223error status register.
224
2253.4 Frequent Asked Questions
226
227Q: What happens if a PCI Express device driver does not provide an
228error recovery handler (pci_driver->err_handler is equal to NULL)?
229
230A: The devices attached with the driver won't be recovered. If the
231error is fatal, kernel will print out warning messages. Please refer
232to section 3 for more information.
233
234Q: What happens if an upstream port service driver does not provide
235callback reset_link?
236
237A: Fatal error recovery will fail if the errors are reported by the
238upstream ports who are attached by the service driver.
239
240Q: How does this infrastructure deal with driver that is not PCI
241Express aware?
242
243A: This infrastructure calls the error callback functions of the
244driver when an error happens. But if the driver is not aware of
245PCI Express, the device might not report its own errors to root
246port.
247
248Q: What modifications will that driver need to make it compatible
249with the PCI Express AER Root driver?
250
251A: It could call the helper functions to enable AER in devices and
252cleanup uncorrectable status register. Pls. refer to section 3.3.
253
diff --git a/Documentation/pi-futex.txt b/Documentation/pi-futex.txt
index 5d61dacd21f6..9a5bc8651c29 100644
--- a/Documentation/pi-futex.txt
+++ b/Documentation/pi-futex.txt
@@ -118,4 +118,4 @@ properties of futexes, and all four combinations are possible: futex,
118robust-futex, PI-futex, robust+PI-futex. 118robust-futex, PI-futex, robust+PI-futex.
119 119
120More details about priority inheritance can be found in 120More details about priority inheritance can be found in
121Documentation/rtmutex.txt. 121Documentation/rt-mutex.txt.
diff --git a/Documentation/pm.txt b/Documentation/pm.txt
index 79c0f32a760e..da8589a0e07d 100644
--- a/Documentation/pm.txt
+++ b/Documentation/pm.txt
@@ -18,10 +18,10 @@ enabled by default). If a working ACPI implementation is found, the
18ACPI driver will override and disable APM, otherwise the APM driver 18ACPI driver will override and disable APM, otherwise the APM driver
19will be used. 19will be used.
20 20
21No sorry, you can not have both ACPI and APM enabled and running at 21No, sorry, you cannot have both ACPI and APM enabled and running at
22once. Some people with broken ACPI or broken APM implementations 22once. Some people with broken ACPI or broken APM implementations
23would like to use both to get a full set of working features, but you 23would like to use both to get a full set of working features, but you
24simply can not mix and match the two. Only one power management 24simply cannot mix and match the two. Only one power management
25interface can be in control of the machine at once. Think about it.. 25interface can be in control of the machine at once. Think about it..
26 26
27User-space Daemons 27User-space Daemons
@@ -106,7 +106,7 @@ void pm_unregister_all(pm_callback cback);
106 * 106 *
107 * Returns: 0 if the request is successful 107 * Returns: 0 if the request is successful
108 * EINVAL if the request is not supported 108 * EINVAL if the request is not supported
109 * EBUSY if the device is now busy and can not handle the request 109 * EBUSY if the device is now busy and cannot handle the request
110 * ENOMEM if the device was unable to handle the request due to memory 110 * ENOMEM if the device was unable to handle the request due to memory
111 * 111 *
112 * Details: The device request callback will be called before the 112 * Details: The device request callback will be called before the
diff --git a/Documentation/pnp.txt b/Documentation/pnp.txt
index 9529c9c9fd59..9ff966bf76e6 100644
--- a/Documentation/pnp.txt
+++ b/Documentation/pnp.txt
@@ -222,7 +222,7 @@ static struct pnp_driver serial_pnp_driver = {
222 .remove = serial_pnp_remove, 222 .remove = serial_pnp_remove,
223}; 223};
224 224
225* name and id_table can not be NULL. 225* name and id_table cannot be NULL.
226 226
2274.) register the driver 2274.) register the driver
228ex: 228ex:
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt
index fba1e05c47c7..d0e79d5820a5 100644
--- a/Documentation/power/devices.txt
+++ b/Documentation/power/devices.txt
@@ -1,208 +1,553 @@
1Most of the code in Linux is device drivers, so most of the Linux power
2management code is also driver-specific. Most drivers will do very little;
3others, especially for platforms with small batteries (like cell phones),
4will do a lot.
5
6This writeup gives an overview of how drivers interact with system-wide
7power management goals, emphasizing the models and interfaces that are
8shared by everything that hooks up to the driver model core. Read it as
9background for the domain-specific work you'd do with any specific driver.
10
11
12Two Models for Device Power Management
13======================================
14Drivers will use one or both of these models to put devices into low-power
15states:
16
17 System Sleep model:
18 Drivers can enter low power states as part of entering system-wide
19 low-power states like "suspend-to-ram", or (mostly for systems with
20 disks) "hibernate" (suspend-to-disk).
21
22 This is something that device, bus, and class drivers collaborate on
23 by implementing various role-specific suspend and resume methods to
24 cleanly power down hardware and software subsystems, then reactivate
25 them without loss of data.
26
27 Some drivers can manage hardware wakeup events, which make the system
28 leave that low-power state. This feature may be disabled using the
29 relevant /sys/devices/.../power/wakeup file; enabling it may cost some
30 power usage, but let the whole system enter low power states more often.
31
32 Runtime Power Management model:
33 Drivers may also enter low power states while the system is running,
34 independently of other power management activity. Upstream drivers
35 will normally not know (or care) if the device is in some low power
36 state when issuing requests; the driver will auto-resume anything
37 that's needed when it gets a request.
38
39 This doesn't have, or need much infrastructure; it's just something you
40 should do when writing your drivers. For example, clk_disable() unused
41 clocks as part of minimizing power drain for currently-unused hardware.
42 Of course, sometimes clusters of drivers will collaborate with each
43 other, which could involve task-specific power management.
44
45There's not a lot to be said about those low power states except that they
46are very system-specific, and often device-specific. Also, that if enough
47drivers put themselves into low power states (at "runtime"), the effect may be
48the same as entering some system-wide low-power state (system sleep) ... and
49that synergies exist, so that several drivers using runtime pm might put the
50system into a state where even deeper power saving options are available.
51
52Most suspended devices will have quiesced all I/O: no more DMA or irqs, no
53more data read or written, and requests from upstream drivers are no longer
54accepted. A given bus or platform may have different requirements though.
55
56Examples of hardware wakeup events include an alarm from a real time clock,
57network wake-on-LAN packets, keyboard or mouse activity, and media insertion
58or removal (for PCMCIA, MMC/SD, USB, and so on).
59
60
61Interfaces for Entering System Sleep States
62===========================================
63Most of the programming interfaces a device driver needs to know about
64relate to that first model: entering a system-wide low power state,
65rather than just minimizing power consumption by one device.
66
67
68Bus Driver Methods
69------------------
70The core methods to suspend and resume devices reside in struct bus_type.
71These are mostly of interest to people writing infrastructure for busses
72like PCI or USB, or because they define the primitives that device drivers
73may need to apply in domain-specific ways to their devices:
1 74
2Device Power Management 75struct bus_type {
76 ...
77 int (*suspend)(struct device *dev, pm_message_t state);
78 int (*suspend_late)(struct device *dev, pm_message_t state);
3 79
80 int (*resume_early)(struct device *dev);
81 int (*resume)(struct device *dev);
82};
4 83
5Device power management encompasses two areas - the ability to save 84Bus drivers implement those methods as appropriate for the hardware and
6state and transition a device to a low-power state when the system is 85the drivers using it; PCI works differently from USB, and so on. Not many
7entering a low-power state; and the ability to transition a device to 86people write bus drivers; most driver code is a "device driver" that
8a low-power state while the system is running (and independently of 87builds on top of bus-specific framework code.
9any other power management activity). 88
89For more information on these driver calls, see the description later;
90they are called in phases for every device, respecting the parent-child
91sequencing in the driver model tree. Note that as this is being written,
92only the suspend() and resume() are widely available; not many bus drivers
93leverage all of those phases, or pass them down to lower driver levels.
94
95
96/sys/devices/.../power/wakeup files
97-----------------------------------
98All devices in the driver model have two flags to control handling of
99wakeup events, which are hardware signals that can force the device and/or
100system out of a low power state. These are initialized by bus or device
101driver code using device_init_wakeup(dev,can_wakeup).
102
103The "can_wakeup" flag just records whether the device (and its driver) can
104physically support wakeup events. When that flag is clear, the sysfs
105"wakeup" file is empty, and device_may_wakeup() returns false.
106
107For devices that can issue wakeup events, a separate flag controls whether
108that device should try to use its wakeup mechanism. The initial value of
109device_may_wakeup() will be true, so that the device's "wakeup" file holds
110the value "enabled". Userspace can change that to "disabled" so that
111device_may_wakeup() returns false; or change it back to "enabled" (so that
112it returns true again).
113
114
115EXAMPLE: PCI Device Driver Methods
116-----------------------------------
117PCI framework software calls these methods when the PCI device driver bound
118to a device device has provided them:
119
120struct pci_driver {
121 ...
122 int (*suspend)(struct pci_device *pdev, pm_message_t state);
123 int (*suspend_late)(struct pci_device *pdev, pm_message_t state);
124
125 int (*resume_early)(struct pci_device *pdev);
126 int (*resume)(struct pci_device *pdev);
127};
10 128
129Drivers will implement those methods, and call PCI-specific procedures
130like pci_set_power_state(), pci_enable_wake(), pci_save_state(), and
131pci_restore_state() to manage PCI-specific mechanisms. (PCI config space
132could be saved during driver probe, if it weren't for the fact that some
133systems rely on userspace tweaking using setpci.) Devices are suspended
134before their bridges enter low power states, and likewise bridges resume
135before their devices.
136
137
138Upper Layers of Driver Stacks
139-----------------------------
140Device drivers generally have at least two interfaces, and the methods
141sketched above are the ones which apply to the lower level (nearer PCI, USB,
142or other bus hardware). The network and block layers are examples of upper
143level interfaces, as is a character device talking to userspace.
144
145Power management requests normally need to flow through those upper levels,
146which often use domain-oriented requests like "blank that screen". In
147some cases those upper levels will have power management intelligence that
148relates to end-user activity, or other devices that work in cooperation.
149
150When those interfaces are structured using class interfaces, there is a
151standard way to have the upper layer stop issuing requests to a given
152class device (and restart later):
153
154struct class {
155 ...
156 int (*suspend)(struct device *dev, pm_message_t state);
157 int (*resume)(struct device *dev);
158};
11 159
12Methods 160Those calls are issued in specific phases of the process by which the
161system enters a low power "suspend" state, or resumes from it.
162
163
164Calling Drivers to Enter System Sleep States
165============================================
166When the system enters a low power state, each device's driver is asked
167to suspend the device by putting it into state compatible with the target
168system state. That's usually some version of "off", but the details are
169system-specific. Also, wakeup-enabled devices will usually stay partly
170functional in order to wake the system.
171
172When the system leaves that low power state, the device's driver is asked
173to resume it. The suspend and resume operations always go together, and
174both are multi-phase operations.
175
176For simple drivers, suspend might quiesce the device using the class code
177and then turn its hardware as "off" as possible with late_suspend. The
178matching resume calls would then completely reinitialize the hardware
179before reactivating its class I/O queues.
180
181More power-aware drivers drivers will use more than one device low power
182state, either at runtime or during system sleep states, and might trigger
183system wakeup events.
184
185
186Call Sequence Guarantees
187------------------------
188To ensure that bridges and similar links needed to talk to a device are
189available when the device is suspended or resumed, the device tree is
190walked in a bottom-up order to suspend devices. A top-down order is
191used to resume those devices.
192
193The ordering of the device tree is defined by the order in which devices
194get registered: a child can never be registered, probed or resumed before
195its parent; and can't be removed or suspended after that parent.
196
197The policy is that the device tree should match hardware bus topology.
198(Or at least the control bus, for devices which use multiple busses.)
199
200
201Suspending Devices
202------------------
203Suspending a given device is done in several phases. Suspending the
204system always includes every phase, executing calls for every device
205before the next phase begins. Not all busses or classes support all
206these callbacks; and not all drivers use all the callbacks.
207
208The phases are seen by driver notifications issued in this order:
209
210 1 class.suspend(dev, message) is called after tasks are frozen, for
211 devices associated with a class that has such a method. This
212 method may sleep.
213
214 Since I/O activity usually comes from such higher layers, this is
215 a good place to quiesce all drivers of a given type (and keep such
216 code out of those drivers).
217
218 2 bus.suspend(dev, message) is called next. This method may sleep,
219 and is often morphed into a device driver call with bus-specific
220 parameters and/or rules.
221
222 This call should handle parts of device suspend logic that require
223 sleeping. It probably does work to quiesce the device which hasn't
224 been abstracted into class.suspend() or bus.suspend_late().
225
226 3 bus.suspend_late(dev, message) is called with IRQs disabled, and
227 with only one CPU active. Until the bus.resume_early() phase
228 completes (see later), IRQs are not enabled again. This method
229 won't be exposed by all busses; for message based busses like USB,
230 I2C, or SPI, device interactions normally require IRQs. This bus
231 call may be morphed into a driver call with bus-specific parameters.
232
233 This call might save low level hardware state that might otherwise
234 be lost in the upcoming low power state, and actually put the
235 device into a low power state ... so that in some cases the device
236 may stay partly usable until this late. This "late" call may also
237 help when coping with hardware that behaves badly.
238
239The pm_message_t parameter is currently used to refine those semantics
240(described later).
241
242At the end of those phases, drivers should normally have stopped all I/O
243transactions (DMA, IRQs), saved enough state that they can re-initialize
244or restore previous state (as needed by the hardware), and placed the
245device into a low-power state. On many platforms they will also use
246clk_disable() to gate off one or more clock sources; sometimes they will
247also switch off power supplies, or reduce voltages. Drivers which have
248runtime PM support may already have performed some or all of the steps
249needed to prepare for the upcoming system sleep state.
250
251When any driver sees that its device_can_wakeup(dev), it should make sure
252to use the relevant hardware signals to trigger a system wakeup event.
253For example, enable_irq_wake() might identify GPIO signals hooked up to
254a switch or other external hardware, and pci_enable_wake() does something
255similar for PCI's PME# signal.
256
257If a driver (or bus, or class) fails it suspend method, the system won't
258enter the desired low power state; it will resume all the devices it's
259suspended so far.
260
261Note that drivers may need to perform different actions based on the target
262system lowpower/sleep state. At this writing, there are only platform
263specific APIs through which drivers could determine those target states.
264
265
266Device Low Power (suspend) States
267---------------------------------
268Device low-power states aren't very standard. One device might only handle
269"on" and "off, while another might support a dozen different versions of
270"on" (how many engines are active?), plus a state that gets back to "on"
271faster than from a full "off".
272
273Some busses define rules about what different suspend states mean. PCI
274gives one example: after the suspend sequence completes, a non-legacy
275PCI device may not perform DMA or issue IRQs, and any wakeup events it
276issues would be issued through the PME# bus signal. Plus, there are
277several PCI-standard device states, some of which are optional.
278
279In contrast, integrated system-on-chip processors often use irqs as the
280wakeup event sources (so drivers would call enable_irq_wake) and might
281be able to treat DMA completion as a wakeup event (sometimes DMA can stay
282active too, it'd only be the CPU and some peripherals that sleep).
283
284Some details here may be platform-specific. Systems may have devices that
285can be fully active in certain sleep states, such as an LCD display that's
286refreshed using DMA while most of the system is sleeping lightly ... and
287its frame buffer might even be updated by a DSP or other non-Linux CPU while
288the Linux control processor stays idle.
289
290Moreover, the specific actions taken may depend on the target system state.
291One target system state might allow a given device to be very operational;
292another might require a hard shut down with re-initialization on resume.
293And two different target systems might use the same device in different
294ways; the aforementioned LCD might be active in one product's "standby",
295but a different product using the same SOC might work differently.
296
297
298Meaning of pm_message_t.event
299-----------------------------
300Parameters to suspend calls include the device affected and a message of
301type pm_message_t, which has one field: the event. If driver does not
302recognize the event code, suspend calls may abort the request and return
303a negative errno. However, most drivers will be fine if they implement
304PM_EVENT_SUSPEND semantics for all messages.
305
306The event codes are used to refine the goal of suspending the device, and
307mostly matter when creating or resuming system memory image snapshots, as
308used with suspend-to-disk:
309
310 PM_EVENT_SUSPEND -- quiesce the driver and put hardware into a low-power
311 state. When used with system sleep states like "suspend-to-RAM" or
312 "standby", the upcoming resume() call will often be able to rely on
313 state kept in hardware, or issue system wakeup events. When used
314 instead with suspend-to-disk, few devices support this capability;
315 most are completely powered off.
316
317 PM_EVENT_FREEZE -- quiesce the driver, but don't necessarily change into
318 any low power mode. A system snapshot is about to be taken, often
319 followed by a call to the driver's resume() method. Neither wakeup
320 events nor DMA are allowed.
321
322 PM_EVENT_PRETHAW -- quiesce the driver, knowing that the upcoming resume()
323 will restore a suspend-to-disk snapshot from a different kernel image.
324 Drivers that are smart enough to look at their hardware state during
325 resume() processing need that state to be correct ... a PRETHAW could
326 be used to invalidate that state (by resetting the device), like a
327 shutdown() invocation would before a kexec() or system halt. Other
328 drivers might handle this the same way as PM_EVENT_FREEZE. Neither
329 wakeup events nor DMA are allowed.
330
331To enter "standby" (ACPI S1) or "Suspend to RAM" (STR, ACPI S3) states, or
332the similarly named APM states, only PM_EVENT_SUSPEND is used; for "Suspend
333to Disk" (STD, hibernate, ACPI S4), all of those event codes are used.
334
335There's also PM_EVENT_ON, a value which never appears as a suspend event
336but is sometimes used to record the "not suspended" device state.
337
338
339Resuming Devices
340----------------
341Resuming is done in multiple phases, much like suspending, with all
342devices processing each phase's calls before the next phase begins.
343
344The phases are seen by driver notifications issued in this order:
345
346 1 bus.resume_early(dev) is called with IRQs disabled, and with
347 only one CPU active. As with bus.suspend_late(), this method
348 won't be supported on busses that require IRQs in order to
349 interact with devices.
350
351 This reverses the effects of bus.suspend_late().
352
353 2 bus.resume(dev) is called next. This may be morphed into a device
354 driver call with bus-specific parameters; implementations may sleep.
355
356 This reverses the effects of bus.suspend().
357
358 3 class.resume(dev) is called for devices associated with a class
359 that has such a method. Implementations may sleep.
360
361 This reverses the effects of class.suspend(), and would usually
362 reactivate the device's I/O queue.
363
364At the end of those phases, drivers should normally be as functional as
365they were before suspending: I/O can be performed using DMA and IRQs, and
366the relevant clocks are gated on. The device need not be "fully on"; it
367might be in a runtime lowpower/suspend state that acts as if it were.
368
369However, the details here may again be platform-specific. For example,
370some systems support multiple "run" states, and the mode in effect at
371the end of resume() might not be the one which preceded suspension.
372That means availability of certain clocks or power supplies changed,
373which could easily affect how a driver works.
374
375
376Drivers need to be able to handle hardware which has been reset since the
377suspend methods were called, for example by complete reinitialization.
378This may be the hardest part, and the one most protected by NDA'd documents
379and chip errata. It's simplest if the hardware state hasn't changed since
380the suspend() was called, but that can't always be guaranteed.
381
382Drivers must also be prepared to notice that the device has been removed
383while the system was powered off, whenever that's physically possible.
384PCMCIA, MMC, USB, Firewire, SCSI, and even IDE are common examples of busses
385where common Linux platforms will see such removal. Details of how drivers
386will notice and handle such removals are currently bus-specific, and often
387involve a separate thread.
13 388
14The methods to suspend and resume devices reside in struct bus_type:
15 389
16struct bus_type { 390Note that the bus-specific runtime PM wakeup mechanism can exist, and might
17 ... 391be defined to share some of the same driver code as for system wakeup. For
18 int (*suspend)(struct device * dev, pm_message_t state); 392example, a bus-specific device driver's resume() method might be used there,
19 int (*resume)(struct device * dev); 393so it wouldn't only be called from bus.resume() during system-wide wakeup.
20}; 394See bus-specific information about how runtime wakeup events are handled.
21 395
22Each bus driver is responsible implementing these methods, translating
23the call into a bus-specific request and forwarding the call to the
24bus-specific drivers. For example, PCI drivers implement suspend() and
25resume() methods in struct pci_driver. The PCI core is simply
26responsible for translating the pointers to PCI-specific ones and
27calling the low-level driver.
28
29This is done to a) ease transition to the new power management methods
30and leverage the existing PM code in various bus drivers; b) allow
31buses to implement generic and default PM routines for devices, and c)
32make the flow of execution obvious to the reader.
33
34
35System Power Management
36
37When the system enters a low-power state, the device tree is walked in
38a depth-first fashion to transition each device into a low-power
39state. The ordering of the device tree is guaranteed by the order in
40which devices get registered - children are never registered before
41their ancestors, and devices are placed at the back of the list when
42registered. By walking the list in reverse order, we are guaranteed to
43suspend devices in the proper order.
44
45Devices are suspended once with interrupts enabled. Drivers are
46expected to stop I/O transactions, save device state, and place the
47device into a low-power state. Drivers may sleep, allocate memory,
48etc. at will.
49
50Some devices are broken and will inevitably have problems powering
51down or disabling themselves with interrupts enabled. For these
52special cases, they may return -EAGAIN. This will put the device on a
53list to be taken care of later. When interrupts are disabled, before
54we enter the low-power state, their drivers are called again to put
55their device to sleep.
56
57On resume, the devices that returned -EAGAIN will be called to power
58themselves back on with interrupts disabled. Once interrupts have been
59re-enabled, the rest of the drivers will be called to resume their
60devices. On resume, a driver is responsible for powering back on each
61device, restoring state, and re-enabling I/O transactions for that
62device.
63 396
397System Devices
398--------------
64System devices follow a slightly different API, which can be found in 399System devices follow a slightly different API, which can be found in
65 400
66 include/linux/sysdev.h 401 include/linux/sysdev.h
67 drivers/base/sys.c 402 drivers/base/sys.c
68 403
69System devices will only be suspended with interrupts disabled, and 404System devices will only be suspended with interrupts disabled, and after
70after all other devices have been suspended. On resume, they will be 405all other devices have been suspended. On resume, they will be resumed
71resumed before any other devices, and also with interrupts disabled. 406before any other devices, and also with interrupts disabled.
72 407
408That is, IRQs are disabled, the suspend_late() phase begins, then the
409sysdev_driver.suspend() phase, and the system enters a sleep state. Then
410the sysdev_driver.resume() phase begins, followed by the resume_early()
411phase, after which IRQs are enabled.
73 412
74Runtime Power Management 413Code to actually enter and exit the system-wide low power state sometimes
75 414involves hardware details that are only known to the boot firmware, and
76Many devices are able to dynamically power down while the system is 415may leave a CPU running software (from SRAM or flash memory) that monitors
77still running. This feature is useful for devices that are not being 416the system and manages its wakeup sequence.
78used, and can offer significant power savings on a running system.
79
80In each device's directory, there is a 'power' directory, which
81contains at least a 'state' file. Reading from this file displays what
82power state the device is currently in. Writing to this file initiates
83a transition to the specified power state, which must be a decimal in
84the range 1-3, inclusive; or 0 for 'On'.
85 417
86The PM core will call the ->suspend() method in the bus_type object
87that the device belongs to if the specified state is not 0, or
88->resume() if it is.
89 418
90Nothing will happen if the specified state is the same state the 419Runtime Power Management
91device is currently in. 420========================
92 421Many devices are able to dynamically power down while the system is still
93If the device is already in a low-power state, and the specified state 422running. This feature is useful for devices that are not being used, and
94is another, but different, low-power state, the ->resume() method will 423can offer significant power savings on a running system. These devices
95first be called to power the device back on, then ->suspend() will be 424often support a range of runtime power states, which might use names such
96called again with the new state. 425as "off", "sleep", "idle", "active", and so on. Those states will in some
97 426cases (like PCI) be partially constrained by a bus the device uses, and will
98The driver is responsible for saving the working state of the device 427usually include hardware states that are also used in system sleep states.
99and putting it into the low-power state specified. If this was 428
100successful, it returns 0, and the device's power_state field is 429However, note that if a driver puts a device into a runtime low power state
101updated. 430and the system then goes into a system-wide sleep state, it normally ought
102 431to resume into that runtime low power state rather than "full on". Such
103The driver must take care to know whether or not it is able to 432distinctions would be part of the driver-internal state machine for that
104properly resume the device, including all step of reinitialization 433hardware; the whole point of runtime power management is to be sure that
105necessary. (This is the hardest part, and the one most protected by 434drivers are decoupled in that way from the state machine governing phases
106NDA'd documents). 435of the system-wide power/sleep state transitions.
107 436
108The driver must also take care not to suspend a device that is 437
109currently in use. It is their responsibility to provide their own 438Power Saving Techniques
110exclusion mechanisms. 439-----------------------
111 440Normally runtime power management is handled by the drivers without specific
112The runtime power transition happens with interrupts enabled. If a 441userspace or kernel intervention, by device-aware use of techniques like:
113device cannot support being powered down with interrupts, it may 442
114return -EAGAIN (as it would during a system power management 443 Using information provided by other system layers
115transition), but it will _not_ be called again, and the transaction 444 - stay deeply "off" except between open() and close()
116will fail. 445 - if transceiver/PHY indicates "nobody connected", stay "off"
117 446 - application protocols may include power commands or hints
118There is currently no way to know what states a device or driver 447
119supports a priori. This will change in the future. 448 Using fewer CPU cycles
120 449 - using DMA instead of PIO
121pm_message_t meaning 450 - removing timers, or making them lower frequency
122 451 - shortening "hot" code paths
123pm_message_t has two fields. event ("major"), and flags. If driver 452 - eliminating cache misses
124does not know event code, it aborts the request, returning error. Some 453 - (sometimes) offloading work to device firmware
125drivers may need to deal with special cases based on the actual type 454
126of suspend operation being done at the system level. This is why 455 Reducing other resource costs
127there are flags. 456 - gating off unused clocks in software (or hardware)
128 457 - switching off unused power supplies
129Event codes are: 458 - eliminating (or delaying/merging) IRQs
130 459 - tuning DMA to use word and/or burst modes
131ON -- no need to do anything except special cases like broken 460
132HW. 461 Using device-specific low power states
133 462 - using lower voltages
134# NOTIFICATION -- pretty much same as ON? 463 - avoiding needless DMA transfers
135 464
136FREEZE -- stop DMA and interrupts, and be prepared to reinit HW from 465Read your hardware documentation carefully to see the opportunities that
137scratch. That probably means stop accepting upstream requests, the 466may be available. If you can, measure the actual power usage and check
138actual policy of what to do with them being specific to a given 467it against the budget established for your project.
139driver. It's acceptable for a network driver to just drop packets 468
140while a block driver is expected to block the queue so no request is 469
141lost. (Use IDE as an example on how to do that). FREEZE requires no 470Examples: USB hosts, system timer, system CPU
142power state change, and it's expected for drivers to be able to 471----------------------------------------------
143quickly transition back to operating state. 472USB host controllers make interesting, if complex, examples. In many cases
144 473these have no work to do: no USB devices are connected, or all of them are
145SUSPEND -- like FREEZE, but also put hardware into low-power state. If 474in the USB "suspend" state. Linux host controller drivers can then disable
146there's need to distinguish several levels of sleep, additional flag 475periodic DMA transfers that would otherwise be a constant power drain on the
147is probably best way to do that. 476memory subsystem, and enter a suspend state. In power-aware controllers,
148 477entering that suspend state may disable the clock used with USB signaling,
149Transitions are only from a resumed state to a suspended state, never 478saving a certain amount of power.
150between 2 suspended states. (ON -> FREEZE or ON -> SUSPEND can happen, 479
151FREEZE -> SUSPEND or SUSPEND -> FREEZE can not). 480The controller will be woken from that state (with an IRQ) by changes to the
152 481signal state on the data lines of a given port, for example by an existing
153All events are: 482peripheral requesting "remote wakeup" or by plugging a new peripheral. The
154 483same wakeup mechanism usually works from "standby" sleep states, and on some
155[NOTE NOTE NOTE: If you are driver author, you should not care; you 484systems also from "suspend to RAM" (or even "suspend to disk") states.
156should only look at event, and ignore flags.] 485(Except that ACPI may be involved instead of normal IRQs, on some hardware.)
157 486
158#Prepare for suspend -- userland is still running but we are going to 487System devices like timers and CPUs may have special roles in the platform
159#enter suspend state. This gives drivers chance to load firmware from 488power management scheme. For example, system timers using a "dynamic tick"
160#disk and store it in memory, or do other activities taht require 489approach don't just save CPU cycles (by eliminating needless timer IRQs),
161#operating userland, ability to kmalloc GFP_KERNEL, etc... All of these 490but they may also open the door to using lower power CPU "idle" states that
162#are forbiden once the suspend dance is started.. event = ON, flags = 491cost more than a jiffie to enter and exit. On x86 systems these are states
163#PREPARE_TO_SUSPEND 492like "C3"; note that periodic DMA transfers from a USB host controller will
164 493also prevent entry to a C3 state, much like a periodic timer IRQ.
165Apm standby -- prepare for APM event. Quiesce devices to make life 494
166easier for APM BIOS. event = FREEZE, flags = APM_STANDBY 495That kind of runtime mechanism interaction is common. "System On Chip" (SOC)
167 496processors often have low power idle modes that can't be entered unless
168Apm suspend -- same as APM_STANDBY, but it we should probably avoid 497certain medium-speed clocks (often 12 or 48 MHz) are gated off. When the
169spinning down disks. event = FREEZE, flags = APM_SUSPEND 498drivers gate those clocks effectively, then the system idle task may be able
170 499to use the lower power idle modes and thereby increase battery life.
171System halt, reboot -- quiesce devices to make life easier for BIOS. event 500
172= FREEZE, flags = SYSTEM_HALT or SYSTEM_REBOOT 501If the CPU can have a "cpufreq" driver, there also may be opportunities
173 502to shift to lower voltage settings and reduce the power cost of executing
174System shutdown -- at least disks need to be spun down, or data may be 503a given number of instructions. (Without voltage adjustment, it's rare
175lost. Quiesce devices, just to make life easier for BIOS. event = 504for cpufreq to save much power; the cost-per-instruction must go down.)
176FREEZE, flags = SYSTEM_SHUTDOWN 505
177 506
178Kexec -- turn off DMAs and put hardware into some state where new 507/sys/devices/.../power/state files
179kernel can take over. event = FREEZE, flags = KEXEC 508==================================
180 509For now you can also test some of this functionality using sysfs.
181Powerdown at end of swsusp -- very similar to SYSTEM_SHUTDOWN, except wake 510
182may need to be enabled on some devices. This actually has at least 3 511 DEPRECATED: USE "power/state" ONLY FOR DRIVER TESTING, AND
183subtypes, system can reboot, enter S4 and enter S5 at the end of 512 AVOID USING dev->power.power_state IN DRIVERS.
184swsusp. event = FREEZE, flags = SWSUSP and one of SYSTEM_REBOOT, 513
185SYSTEM_SHUTDOWN, SYSTEM_S4 514 THESE WILL BE REMOVED. IF THE "power/state" FILE GETS REPLACED,
186 515 IT WILL BECOME SOMETHING COUPLED TO THE BUS OR DRIVER.
187Suspend to ram -- put devices into low power state. event = SUSPEND, 516
188flags = SUSPEND_TO_RAM 517In each device's directory, there is a 'power' directory, which contains
189 518at least a 'state' file. The value of this field is effectively boolean,
190Freeze for swsusp snapshot -- stop DMA and interrupts. No need to put 519PM_EVENT_ON or PM_EVENT_SUSPEND.
191devices into low power mode, but you must be able to reinitialize 520
192device from scratch in resume method. This has two flavors, its done 521 * Reading from this file displays a value corresponding to
193once on suspending kernel, once on resuming kernel. event = FREEZE, 522 the power.power_state.event field. All nonzero values are
194flags = DURING_SUSPEND or DURING_RESUME 523 displayed as "2", corresponding to a low power state; zero
195 524 is displayed as "0", corresponding to normal operation.
196Device detach requested from /sys -- deinitialize device; proably same as 525
197SYSTEM_SHUTDOWN, I do not understand this one too much. probably event 526 * Writing to this file initiates a transition using the
198= FREEZE, flags = DEV_DETACH. 527 specified event code number; only '0', '2', and '3' are
199 528 accepted (without a newline); '2' and '3' are both
200#These are not really events sent: 529 mapped to PM_EVENT_SUSPEND.
201# 530
202#System fully on -- device is working normally; this is probably never 531On writes, the PM core relies on that recorded event code and the device/bus
203#passed to suspend() method... event = ON, flags = 0 532capabilities to determine whether it uses a partial suspend() or resume()
204# 533sequence to change things so that the recorded event corresponds to the
205#Ready after resume -- userland is now running, again. Time to free any 534numeric parameter.
206#memory you ate during prepare to suspend... event = ON, flags = 535
207#READY_AFTER_RESUME 536 - If the bus requires the irqs-disabled suspend_late()/resume_early()
208# 537 phases, writes fail because those operations are not supported here.
538
539 - If the recorded value is the expected value, nothing is done.
540
541 - If the recorded value is nonzero, the device is partially resumed,
542 using the bus.resume() and/or class.resume() methods.
543
544 - If the target value is nonzero, the device is partially suspended,
545 using the class.suspend() and/or bus.suspend() methods and the
546 PM_EVENT_SUSPEND message.
547
548Drivers have no way to tell whether their suspend() and resume() calls
549have come through the sysfs power/state file or as part of entering a
550system sleep state, except that when accessed through sysfs the normal
551parent/child sequencing rules are ignored. Drivers (such as bus, bridge,
552or hub drivers) which expose child devices may need to enforce those rules
553on their own.
diff --git a/Documentation/power/pci.txt b/Documentation/power/pci.txt
index 73fc87e5dc38..24edf25b3bb7 100644
--- a/Documentation/power/pci.txt
+++ b/Documentation/power/pci.txt
@@ -326,7 +326,7 @@ A reference implementation
326 326
327This is a typical implementation. Drivers can slightly change the order 327This is a typical implementation. Drivers can slightly change the order
328of the operations in the implementation, ignore some operations or add 328of the operations in the implementation, ignore some operations or add
329more deriver specific operations in it, but drivers should do something like 329more driver specific operations in it, but drivers should do something like
330this on the whole. 330this on the whole.
331 331
3325. Resources 3325. Resources
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt
index 823b2cf6e3dc..9ea2208b43b5 100644
--- a/Documentation/power/swsusp.txt
+++ b/Documentation/power/swsusp.txt
@@ -156,7 +156,7 @@ instead set the PF_NOFREEZE process flag when creating the thread (and
156be very carefull). 156be very carefull).
157 157
158 158
159Q: What is the difference between between "platform", "shutdown" and 159Q: What is the difference between "platform", "shutdown" and
160"firmware" in /sys/power/disk? 160"firmware" in /sys/power/disk?
161 161
162A: 162A:
@@ -175,8 +175,8 @@ reliable.
175Q: I do not understand why you have such strong objections to idea of 175Q: I do not understand why you have such strong objections to idea of
176selective suspend. 176selective suspend.
177 177
178A: Do selective suspend during runtime power managment, that's okay. But 178A: Do selective suspend during runtime power management, that's okay. But
179its useless for suspend-to-disk. (And I do not see how you could use 179it's useless for suspend-to-disk. (And I do not see how you could use
180it for suspend-to-ram, I hope you do not want that). 180it for suspend-to-ram, I hope you do not want that).
181 181
182Lets see, so you suggest to 182Lets see, so you suggest to
@@ -211,7 +211,7 @@ slowness may not matter to you. It can always be fixed later.
211For devices like disk it does matter, you do not want to spindown for 211For devices like disk it does matter, you do not want to spindown for
212FREEZE. 212FREEZE.
213 213
214Q: After resuming, system is paging heavilly, leading to very bad interactivity. 214Q: After resuming, system is paging heavily, leading to very bad interactivity.
215 215
216A: Try running 216A: Try running
217 217
diff --git a/Documentation/power/tricks.txt b/Documentation/power/tricks.txt
index c6d58d3da133..3b26bb502a4a 100644
--- a/Documentation/power/tricks.txt
+++ b/Documentation/power/tricks.txt
@@ -9,7 +9,7 @@ If you want to trick swsusp/S3 into working, you might want to try:
9 9
10* turn off APIC and preempt 10* turn off APIC and preempt
11 11
12* use ext2. At least it has working fsck. [If something seemes to go 12* use ext2. At least it has working fsck. [If something seems to go
13 wrong, force fsck when you have a chance] 13 wrong, force fsck when you have a chance]
14 14
15* turn off modules 15* turn off modules
diff --git a/Documentation/power/userland-swsusp.txt b/Documentation/power/userland-swsusp.txt
index 94058220aaf0..64755e9285db 100644
--- a/Documentation/power/userland-swsusp.txt
+++ b/Documentation/power/userland-swsusp.txt
@@ -91,7 +91,7 @@ unfreeze user space processes frozen by SNAPSHOT_UNFREEZE if they are
91still frozen when the device is being closed). 91still frozen when the device is being closed).
92 92
93Currently it is assumed that the userland utilities reading/writing the 93Currently it is assumed that the userland utilities reading/writing the
94snapshot image from/to the kernel will use a swap parition, called the resume 94snapshot image from/to the kernel will use a swap partition, called the resume
95partition, as storage space. However, this is not really required, as they 95partition, as storage space. However, this is not really required, as they
96can use, for example, a special (blank) suspend partition or a file on a partition 96can use, for example, a special (blank) suspend partition or a file on a partition
97that is unmounted before SNAPSHOT_ATOMIC_SNAPSHOT and mounted afterwards. 97that is unmounted before SNAPSHOT_ATOMIC_SNAPSHOT and mounted afterwards.
diff --git a/Documentation/power/video.txt b/Documentation/power/video.txt
index d859faa3a463..2b358498d095 100644
--- a/Documentation/power/video.txt
+++ b/Documentation/power/video.txt
@@ -16,7 +16,7 @@ problem for S1 standby, because hardware should retain its state over
16that. 16that.
17 17
18We either have to run video BIOS during early resume, or interpret it 18We either have to run video BIOS during early resume, or interpret it
19using vbetool later, or maybe nothing is neccessary on particular 19using vbetool later, or maybe nothing is necessary on particular
20system because video state is preserved. Unfortunately different 20system because video state is preserved. Unfortunately different
21methods work on different systems, and no known method suits all of 21methods work on different systems, and no known method suits all of
22them. 22them.
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 5c0ba235f5a5..27b457c09729 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -145,7 +145,7 @@ it with special cases.
145 in case you are entering the kernel with MMU enabled 145 in case you are entering the kernel with MMU enabled
146 and a non-1:1 mapping. 146 and a non-1:1 mapping.
147 147
148 r5 : NULL (as to differenciate with method a) 148 r5 : NULL (as to differentiate with method a)
149 149
150 Note about SMP entry: Either your firmware puts your other 150 Note about SMP entry: Either your firmware puts your other
151 CPUs in some sleep loop or spin loop in ROM where you can get 151 CPUs in some sleep loop or spin loop in ROM where you can get
@@ -245,7 +245,7 @@ the block to RAM before passing it to the kernel.
245--------- 245---------
246 246
247 The kernel is entered with r3 pointing to an area of memory that is 247 The kernel is entered with r3 pointing to an area of memory that is
248 roughtly described in include/asm-powerpc/prom.h by the structure 248 roughly described in include/asm-powerpc/prom.h by the structure
249 boot_param_header: 249 boot_param_header:
250 250
251struct boot_param_header { 251struct boot_param_header {
@@ -335,7 +335,7 @@ struct boot_param_header {
335 "compact" format for the tree itself that is however not backward 335 "compact" format for the tree itself that is however not backward
336 compatible. You should always generate a structure of the highest 336 compatible. You should always generate a structure of the highest
337 version defined at the time of your implementation. Currently 337 version defined at the time of your implementation. Currently
338 that is version 16, unless you explicitely aim at being backward 338 that is version 16, unless you explicitly aim at being backward
339 compatible. 339 compatible.
340 340
341 - last_comp_version 341 - last_comp_version
@@ -418,9 +418,9 @@ zero terminated string and is mandatory for version 1 to 3 of the
418format definition (as it is in Open Firmware). Version 0x10 makes it 418format definition (as it is in Open Firmware). Version 0x10 makes it
419optional as it can generate it from the unit name defined below. 419optional as it can generate it from the unit name defined below.
420 420
421There is also a "unit name" that is used to differenciate nodes with 421There is also a "unit name" that is used to differentiate nodes with
422the same name at the same level, it is usually made of the node 422the same name at the same level, it is usually made of the node
423name's, the "@" sign, and a "unit address", which definition is 423names, the "@" sign, and a "unit address", which definition is
424specific to the bus type the node sits on. 424specific to the bus type the node sits on.
425 425
426The unit name doesn't exist as a property per-se but is included in 426The unit name doesn't exist as a property per-se but is included in
@@ -550,11 +550,11 @@ Here's the basic structure of a single node:
550 * [child nodes if any] 550 * [child nodes if any]
551 * token OF_DT_END_NODE (that is 0x00000002) 551 * token OF_DT_END_NODE (that is 0x00000002)
552 552
553So the node content can be summmarised as a start token, a full path, 553So the node content can be summarised as a start token, a full path,
554a list of properties, a list of child node and an end token. Every 554a list of properties, a list of child nodes, and an end token. Every
555child node is a full node structure itself as defined above. 555child node is a full node structure itself as defined above.
556 556
5574) Device tree 'strings" block 5574) Device tree "strings" block
558 558
559In order to save space, property names, which are generally redundant, 559In order to save space, property names, which are generally redundant,
560are stored separately in the "strings" block. This block is simply the 560are stored separately in the "strings" block. This block is simply the
@@ -573,7 +573,7 @@ implementation of Open Firmware or an implementation compatible with
573the Open Firmware client interface, those properties will be created 573the Open Firmware client interface, those properties will be created
574by the trampoline code in the kernel's prom_init() file. For example, 574by the trampoline code in the kernel's prom_init() file. For example,
575that's where you'll have to add code to detect your board model and 575that's where you'll have to add code to detect your board model and
576set the platform number. However, when using the flatenned device-tree 576set the platform number. However, when using the flattened device-tree
577entry point, there is no prom_init() pass, and thus you have to 577entry point, there is no prom_init() pass, and thus you have to
578provide those properties yourself. 578provide those properties yourself.
579 579
@@ -630,12 +630,11 @@ like address space bits, you'll have to add a bus translator to the
630prom_parse.c file of the recent kernels for your bus type. 630prom_parse.c file of the recent kernels for your bus type.
631 631
632The "reg" property only defines addresses and sizes (if #size-cells 632The "reg" property only defines addresses and sizes (if #size-cells
633is 633is non-0) within a given bus. In order to translate addresses upward
634non-0) within a given bus. In order to translate addresses upward
635(that is into parent bus addresses, and possibly into cpu physical 634(that is into parent bus addresses, and possibly into cpu physical
636addresses), all busses must contain a "ranges" property. If the 635addresses), all busses must contain a "ranges" property. If the
637"ranges" property is missing at a given level, it's assumed that 636"ranges" property is missing at a given level, it's assumed that
638translation isn't possible. The format of the "ranges" proprety for a 637translation isn't possible. The format of the "ranges" property for a
639bus is a list of: 638bus is a list of:
640 639
641 bus address, parent bus address, size 640 bus address, parent bus address, size
@@ -689,7 +688,7 @@ is present).
6894) Note about node and property names and character set 6884) Note about node and property names and character set
690------------------------------------------------------- 689-------------------------------------------------------
691 690
692While open firmware provides more flexibe usage of 8859-1, this 691While open firmware provides more flexible usage of 8859-1, this
693specification enforces more strict rules. Nodes and properties should 692specification enforces more strict rules. Nodes and properties should
694be comprised only of ASCII characters 'a' to 'z', '0' to 693be comprised only of ASCII characters 'a' to 'z', '0' to
695'9', ',', '.', '_', '+', '#', '?', and '-'. Node names additionally 694'9', ',', '.', '_', '+', '#', '?', and '-'. Node names additionally
@@ -732,12 +731,12 @@ address which can extend beyond that limit.
732 that typically get driven by the same platform code in the 731 that typically get driven by the same platform code in the
733 kernel, you would use a different "model" property but put a 732 kernel, you would use a different "model" property but put a
734 value in "compatible". The kernel doesn't directly use that 733 value in "compatible". The kernel doesn't directly use that
735 value (see /chosen/linux,platform for how the kernel choses a 734 value (see /chosen/linux,platform for how the kernel chooses a
736 platform type) but it is generally useful. 735 platform type) but it is generally useful.
737 736
738 The root node is also generally where you add additional properties 737 The root node is also generally where you add additional properties
739 specific to your board like the serial number if any, that sort of 738 specific to your board like the serial number if any, that sort of
740 thing. it is recommended that if you add any "custom" property whose 739 thing. It is recommended that if you add any "custom" property whose
741 name may clash with standard defined ones, you prefix them with your 740 name may clash with standard defined ones, you prefix them with your
742 vendor name and a comma. 741 vendor name and a comma.
743 742
@@ -817,7 +816,7 @@ address which can extend beyond that limit.
817 your board. It's a list of addresses/sizes concatenated 816 your board. It's a list of addresses/sizes concatenated
818 together, with the number of cells of each defined by the 817 together, with the number of cells of each defined by the
819 #address-cells and #size-cells of the root node. For example, 818 #address-cells and #size-cells of the root node. For example,
820 with both of these properties beeing 2 like in the example given 819 with both of these properties being 2 like in the example given
821 earlier, a 970 based machine with 6Gb of RAM could typically 820 earlier, a 970 based machine with 6Gb of RAM could typically
822 have a "reg" property here that looks like: 821 have a "reg" property here that looks like:
823 822
@@ -970,7 +969,7 @@ device-tree in another format. The currently supported formats are:
970 - "asm": assembly language file. This is a file that can be 969 - "asm": assembly language file. This is a file that can be
971 sourced by gas to generate a device-tree "blob". That file can 970 sourced by gas to generate a device-tree "blob". That file can
972 then simply be added to your Makefile. Additionally, the 971 then simply be added to your Makefile. Additionally, the
973 assembly file exports some symbols that can be use 972 assembly file exports some symbols that can be used.
974 973
975 974
976The syntax of the dtc tool is 975The syntax of the dtc tool is
@@ -984,10 +983,10 @@ generated. Supported versions are 1,2,3 and 16. The default is
984currently version 3 but that may change in the future to version 16. 983currently version 3 but that may change in the future to version 16.
985 984
986Additionally, dtc performs various sanity checks on the tree, like the 985Additionally, dtc performs various sanity checks on the tree, like the
987uniqueness of linux,phandle properties, validity of strings, etc... 986uniqueness of linux, phandle properties, validity of strings, etc...
988 987
989The format of the .dts "source" file is "C" like, supports C and C++ 988The format of the .dts "source" file is "C" like, supports C and C++
990style commments. 989style comments.
991 990
992/ { 991/ {
993} 992}
@@ -1069,13 +1068,13 @@ while all this has been defined and implemented.
1069 around. It contains no internal offsets or pointers for this 1068 around. It contains no internal offsets or pointers for this
1070 purpose. 1069 purpose.
1071 1070
1072 - An example of code for iterating nodes & retreiving properties 1071 - An example of code for iterating nodes & retrieving properties
1073 directly from the flattened tree format can be found in the kernel 1072 directly from the flattened tree format can be found in the kernel
1074 file arch/ppc64/kernel/prom.c, look at scan_flat_dt() function, 1073 file arch/ppc64/kernel/prom.c, look at scan_flat_dt() function,
1075 it's usage in early_init_devtree(), and the corresponding various 1074 its usage in early_init_devtree(), and the corresponding various
1076 early_init_dt_scan_*() callbacks. That code can be re-used in a 1075 early_init_dt_scan_*() callbacks. That code can be re-used in a
1077 GPL bootloader, and as the author of that code, I would be happy 1076 GPL bootloader, and as the author of that code, I would be happy
1078 do discuss possible free licencing to any vendor who wishes to 1077 to discuss possible free licencing to any vendor who wishes to
1079 integrate all or part of this code into a non-GPL bootloader. 1078 integrate all or part of this code into a non-GPL bootloader.
1080 1079
1081 1080
@@ -1441,6 +1440,258 @@ platforms are moved over to use the flattened-device-tree model.
1441 descriptor-types-mask = <012b0ebf>; 1440 descriptor-types-mask = <012b0ebf>;
1442 }; 1441 };
1443 1442
1443 h) Board Control and Status (BCSR)
1444
1445 Required properties:
1446
1447 - device_type : Should be "board-control"
1448 - reg : Offset and length of the register set for the device
1449
1450 Example:
1451
1452 bcsr@f8000000 {
1453 device_type = "board-control";
1454 reg = <f8000000 8000>;
1455 };
1456
1457 i) Freescale QUICC Engine module (QE)
1458 This represents qe module that is installed on PowerQUICC II Pro.
1459 Hopefully it will merge backward compatibility with CPM/CPM2.
1460 Basically, it is a bus of devices, that could act more or less
1461 as a complete entity (UCC, USB etc ). All of them should be siblings on
1462 the "root" qe node, using the common properties from there.
1463 The description below applies to the the qe of MPC8360 and
1464 more nodes and properties would be extended in the future.
1465
1466 i) Root QE device
1467
1468 Required properties:
1469 - device_type : should be "qe";
1470 - model : precise model of the QE, Can be "QE", "CPM", or "CPM2"
1471 - reg : offset and length of the device registers.
1472 - bus-frequency : the clock frequency for QUICC Engine.
1473
1474 Recommended properties
1475 - brg-frequency : the internal clock source frequency for baud-rate
1476 generators in Hz.
1477
1478 Example:
1479 qe@e0100000 {
1480 #address-cells = <1>;
1481 #size-cells = <1>;
1482 #interrupt-cells = <2>;
1483 device_type = "qe";
1484 model = "QE";
1485 ranges = <0 e0100000 00100000>;
1486 reg = <e0100000 480>;
1487 brg-frequency = <0>;
1488 bus-frequency = <179A7B00>;
1489 }
1490
1491
1492 ii) SPI (Serial Peripheral Interface)
1493
1494 Required properties:
1495 - device_type : should be "spi".
1496 - compatible : should be "fsl_spi".
1497 - mode : the spi operation mode, it can be "cpu" or "qe".
1498 - reg : Offset and length of the register set for the device
1499 - interrupts : <a b> where a is the interrupt number and b is a
1500 field that represents an encoding of the sense and level
1501 information for the interrupt. This should be encoded based on
1502 the information in section 2) depending on the type of interrupt
1503 controller you have.
1504 - interrupt-parent : the phandle for the interrupt controller that
1505 services interrupts for this device.
1506
1507 Example:
1508 spi@4c0 {
1509 device_type = "spi";
1510 compatible = "fsl_spi";
1511 reg = <4c0 40>;
1512 interrupts = <82 0>;
1513 interrupt-parent = <700>;
1514 mode = "cpu";
1515 };
1516
1517
1518 iii) USB (Universal Serial Bus Controller)
1519
1520 Required properties:
1521 - device_type : should be "usb".
1522 - compatible : could be "qe_udc" or "fhci-hcd".
1523 - mode : the could be "host" or "slave".
1524 - reg : Offset and length of the register set for the device
1525 - interrupts : <a b> where a is the interrupt number and b is a
1526 field that represents an encoding of the sense and level
1527 information for the interrupt. This should be encoded based on
1528 the information in section 2) depending on the type of interrupt
1529 controller you have.
1530 - interrupt-parent : the phandle for the interrupt controller that
1531 services interrupts for this device.
1532
1533 Example(slave):
1534 usb@6c0 {
1535 device_type = "usb";
1536 compatible = "qe_udc";
1537 reg = <6c0 40>;
1538 interrupts = <8b 0>;
1539 interrupt-parent = <700>;
1540 mode = "slave";
1541 };
1542
1543
1544 iv) UCC (Unified Communications Controllers)
1545
1546 Required properties:
1547 - device_type : should be "network", "hldc", "uart", "transparent"
1548 "bisync" or "atm".
1549 - compatible : could be "ucc_geth" or "fsl_atm" and so on.
1550 - model : should be "UCC".
1551 - device-id : the ucc number(1-8), corresponding to UCCx in UM.
1552 - reg : Offset and length of the register set for the device
1553 - interrupts : <a b> where a is the interrupt number and b is a
1554 field that represents an encoding of the sense and level
1555 information for the interrupt. This should be encoded based on
1556 the information in section 2) depending on the type of interrupt
1557 controller you have.
1558 - interrupt-parent : the phandle for the interrupt controller that
1559 services interrupts for this device.
1560 - pio-handle : The phandle for the Parallel I/O port configuration.
1561 - rx-clock : represents the UCC receive clock source.
1562 0x00 : clock source is disabled;
1563 0x1~0x10 : clock source is BRG1~BRG16 respectively;
1564 0x11~0x28: clock source is QE_CLK1~QE_CLK24 respectively.
1565 - tx-clock: represents the UCC transmit clock source;
1566 0x00 : clock source is disabled;
1567 0x1~0x10 : clock source is BRG1~BRG16 respectively;
1568 0x11~0x28: clock source is QE_CLK1~QE_CLK24 respectively.
1569
1570 Required properties for network device_type:
1571 - mac-address : list of bytes representing the ethernet address.
1572 - phy-handle : The phandle for the PHY connected to this controller.
1573
1574 Example:
1575 ucc@2000 {
1576 device_type = "network";
1577 compatible = "ucc_geth";
1578 model = "UCC";
1579 device-id = <1>;
1580 reg = <2000 200>;
1581 interrupts = <a0 0>;
1582 interrupt-parent = <700>;
1583 mac-address = [ 00 04 9f 00 23 23 ];
1584 rx-clock = "none";
1585 tx-clock = "clk9";
1586 phy-handle = <212000>;
1587 pio-handle = <140001>;
1588 };
1589
1590
1591 v) Parallel I/O Ports
1592
1593 This node configures Parallel I/O ports for CPUs with QE support.
1594 The node should reside in the "soc" node of the tree. For each
1595 device that using parallel I/O ports, a child node should be created.
1596 See the definition of the Pin configuration nodes below for more
1597 information.
1598
1599 Required properties:
1600 - device_type : should be "par_io".
1601 - reg : offset to the register set and its length.
1602 - num-ports : number of Parallel I/O ports
1603
1604 Example:
1605 par_io@1400 {
1606 reg = <1400 100>;
1607 #address-cells = <1>;
1608 #size-cells = <0>;
1609 device_type = "par_io";
1610 num-ports = <7>;
1611 ucc_pin@01 {
1612 ......
1613 };
1614
1615
1616 vi) Pin configuration nodes
1617
1618 Required properties:
1619 - linux,phandle : phandle of this node; likely referenced by a QE
1620 device.
1621 - pio-map : array of pin configurations. Each pin is defined by 6
1622 integers. The six numbers are respectively: port, pin, dir,
1623 open_drain, assignment, has_irq.
1624 - port : port number of the pin; 0-6 represent port A-G in UM.
1625 - pin : pin number in the port.
1626 - dir : direction of the pin, should encode as follows:
1627
1628 0 = The pin is disabled
1629 1 = The pin is an output
1630 2 = The pin is an input
1631 3 = The pin is I/O
1632
1633 - open_drain : indicates the pin is normal or wired-OR:
1634
1635 0 = The pin is actively driven as an output
1636 1 = The pin is an open-drain driver. As an output, the pin is
1637 driven active-low, otherwise it is three-stated.
1638
1639 - assignment : function number of the pin according to the Pin Assignment
1640 tables in User Manual. Each pin can have up to 4 possible functions in
1641 QE and two options for CPM.
1642 - has_irq : indicates if the pin is used as source of exteral
1643 interrupts.
1644
1645 Example:
1646 ucc_pin@01 {
1647 linux,phandle = <140001>;
1648 pio-map = <
1649 /* port pin dir open_drain assignment has_irq */
1650 0 3 1 0 1 0 /* TxD0 */
1651 0 4 1 0 1 0 /* TxD1 */
1652 0 5 1 0 1 0 /* TxD2 */
1653 0 6 1 0 1 0 /* TxD3 */
1654 1 6 1 0 3 0 /* TxD4 */
1655 1 7 1 0 1 0 /* TxD5 */
1656 1 9 1 0 2 0 /* TxD6 */
1657 1 a 1 0 2 0 /* TxD7 */
1658 0 9 2 0 1 0 /* RxD0 */
1659 0 a 2 0 1 0 /* RxD1 */
1660 0 b 2 0 1 0 /* RxD2 */
1661 0 c 2 0 1 0 /* RxD3 */
1662 0 d 2 0 1 0 /* RxD4 */
1663 1 1 2 0 2 0 /* RxD5 */
1664 1 0 2 0 2 0 /* RxD6 */
1665 1 4 2 0 2 0 /* RxD7 */
1666 0 7 1 0 1 0 /* TX_EN */
1667 0 8 1 0 1 0 /* TX_ER */
1668 0 f 2 0 1 0 /* RX_DV */
1669 0 10 2 0 1 0 /* RX_ER */
1670 0 0 2 0 1 0 /* RX_CLK */
1671 2 9 1 0 3 0 /* GTX_CLK - CLK10 */
1672 2 8 2 0 1 0>; /* GTX125 - CLK9 */
1673 };
1674
1675 vii) Multi-User RAM (MURAM)
1676
1677 Required properties:
1678 - device_type : should be "muram".
1679 - mode : the could be "host" or "slave".
1680 - ranges : Should be defined as specified in 1) to describe the
1681 translation of MURAM addresses.
1682 - data-only : sub-node which defines the address area under MURAM
1683 bus that can be allocated as data/parameter
1684
1685 Example:
1686
1687 muram@10000 {
1688 device_type = "muram";
1689 ranges = <0 00010000 0000c000>;
1690
1691 data-only@0{
1692 reg = <0 c000>;
1693 };
1694 };
1444 1695
1445 More devices will be defined as this spec matures. 1696 More devices will be defined as this spec matures.
1446 1697
diff --git a/Documentation/powerpc/eeh-pci-error-recovery.txt b/Documentation/powerpc/eeh-pci-error-recovery.txt
index 3764dd4b12cb..4530d1bf0286 100644
--- a/Documentation/powerpc/eeh-pci-error-recovery.txt
+++ b/Documentation/powerpc/eeh-pci-error-recovery.txt
@@ -90,7 +90,7 @@ EEH-isolated, there is a firmware call it can make to determine if
90this is the case. If so, then the device driver should put itself 90this is the case. If so, then the device driver should put itself
91into a consistent state (given that it won't be able to complete any 91into a consistent state (given that it won't be able to complete any
92pending work) and start recovery of the card. Recovery normally 92pending work) and start recovery of the card. Recovery normally
93would consist of reseting the PCI device (holding the PCI #RST 93would consist of resetting the PCI device (holding the PCI #RST
94line high for two seconds), followed by setting up the device 94line high for two seconds), followed by setting up the device
95config space (the base address registers (BAR's), latency timer, 95config space (the base address registers (BAR's), latency timer,
96cache line size, interrupt line, and so on). This is followed by a 96cache line size, interrupt line, and so on). This is followed by a
@@ -116,7 +116,7 @@ At this time, a generic EEH recovery mechanism has been implemented,
116so that individual device drivers do not need to be modified to support 116so that individual device drivers do not need to be modified to support
117EEH recovery. This generic mechanism piggy-backs on the PCI hotplug 117EEH recovery. This generic mechanism piggy-backs on the PCI hotplug
118infrastructure, and percolates events up through the userspace/udev 118infrastructure, and percolates events up through the userspace/udev
119infrastructure. Followiing is a detailed description of how this is 119infrastructure. Following is a detailed description of how this is
120accomplished. 120accomplished.
121 121
122EEH must be enabled in the PHB's very early during the boot process, 122EEH must be enabled in the PHB's very early during the boot process,
diff --git a/Documentation/powerpc/hvcs.txt b/Documentation/powerpc/hvcs.txt
index 1e38166f4e54..f93462c5db25 100644
--- a/Documentation/powerpc/hvcs.txt
+++ b/Documentation/powerpc/hvcs.txt
@@ -259,7 +259,7 @@ This index of '2' means that in order to connect to vty-server adapter
259 259
260It should be noted that due to the system hotplug I/O capabilities of a 260It should be noted that due to the system hotplug I/O capabilities of a
261system the /dev/hvcs* entry that interacts with a particular vty-server 261system the /dev/hvcs* entry that interacts with a particular vty-server
262adapter is not guarenteed to remain the same across system reboots. Look 262adapter is not guaranteed to remain the same across system reboots. Look
263in the Q & A section for more on this issue. 263in the Q & A section for more on this issue.
264 264
265--------------------------------------------------------------------------- 265---------------------------------------------------------------------------
diff --git a/Documentation/prio_tree.txt b/Documentation/prio_tree.txt
index 2fbb0c49bc5b..3aa68f9a117b 100644
--- a/Documentation/prio_tree.txt
+++ b/Documentation/prio_tree.txt
@@ -88,7 +88,7 @@ path which is not desirable. Hence, we do not optimize the height of the
88heap-and-size indexed overflow-sub-trees using prio_tree->index_bits. 88heap-and-size indexed overflow-sub-trees using prio_tree->index_bits.
89Instead the overflow sub-trees are indexed using full BITS_PER_LONG bits 89Instead the overflow sub-trees are indexed using full BITS_PER_LONG bits
90of size_index. This may lead to skewed sub-trees because most of the 90of size_index. This may lead to skewed sub-trees because most of the
91higher significant bits of the size_index are likely to be be 0 (zero). In 91higher significant bits of the size_index are likely to be 0 (zero). In
92the example above, all 3 overflow-sub-trees are skewed. This may marginally 92the example above, all 3 overflow-sub-trees are skewed. This may marginally
93affect the performance. However, processes rarely map many vmas with the 93affect the performance. However, processes rarely map many vmas with the
94same start_vm_pgoff but different end_vm_pgoffs. Therefore, we normally 94same start_vm_pgoff but different end_vm_pgoffs. Therefore, we normally
diff --git a/Documentation/rocket.txt b/Documentation/rocket.txt
index a10678004451..1d8582990435 100644
--- a/Documentation/rocket.txt
+++ b/Documentation/rocket.txt
@@ -97,7 +97,7 @@ a range of I/O addresses for it to use. The first RocketPort card
97requires a 68-byte contiguous block of I/O addresses, starting at one 97requires a 68-byte contiguous block of I/O addresses, starting at one
98of the following: 0x100h, 0x140h, 0x180h, 0x200h, 0x240h, 0x280h, 98of the following: 0x100h, 0x140h, 0x180h, 0x200h, 0x240h, 0x280h,
990x300h, 0x340h, 0x380h. This I/O address must be reflected in the DIP 990x300h, 0x340h, 0x380h. This I/O address must be reflected in the DIP
100switiches of *all* of the Rocketport cards. 100switches of *all* of the Rocketport cards.
101 101
102The second, third, and fourth RocketPort cards require a 64-byte 102The second, third, and fourth RocketPort cards require a 64-byte
103contiguous block of I/O addresses, starting at one of the following 103contiguous block of I/O addresses, starting at one of the following
@@ -107,7 +107,7 @@ second, third, and fourth Rocketport cards (if present) are set via
107software control. The DIP switch settings for the I/O address must be 107software control. The DIP switch settings for the I/O address must be
108set to the value of the first Rocketport cards. 108set to the value of the first Rocketport cards.
109 109
110In order to destinguish each of the card from the others, each card 110In order to distinguish each of the card from the others, each card
111must have a unique board ID set on the dip switches. The first 111must have a unique board ID set on the dip switches. The first
112Rocketport board must be set with the DIP switches corresponding to 112Rocketport board must be set with the DIP switches corresponding to
113the first board, the second board must be set with the DIP switches 113the first board, the second board must be set with the DIP switches
@@ -120,7 +120,7 @@ conflict with any other cards in the system, including other
120RocketPort cards. Below, you will find a list of commonly used I/O 120RocketPort cards. Below, you will find a list of commonly used I/O
121address ranges which may be in use by other devices in your system. 121address ranges which may be in use by other devices in your system.
122On a Linux system, "cat /proc/ioports" will also be helpful in 122On a Linux system, "cat /proc/ioports" will also be helpful in
123identifying what I/O addresses are being used by devics on your 123identifying what I/O addresses are being used by devices on your
124system. 124system.
125 125
126Remember, the FIRST RocketPort uses 68 I/O addresses. So, if you set it 126Remember, the FIRST RocketPort uses 68 I/O addresses. So, if you set it
diff --git a/Documentation/rpc-cache.txt b/Documentation/rpc-cache.txt
index 5f757c8cf979..8a382bea6808 100644
--- a/Documentation/rpc-cache.txt
+++ b/Documentation/rpc-cache.txt
@@ -24,7 +24,7 @@ The common code handles such things as:
24 - general cache lookup with correct locking 24 - general cache lookup with correct locking
25 - supporting 'NEGATIVE' as well as positive entries 25 - supporting 'NEGATIVE' as well as positive entries
26 - allowing an EXPIRED time on cache items, and removing 26 - allowing an EXPIRED time on cache items, and removing
27 items after they expire, and are no longe in-use. 27 items after they expire, and are no longer in-use.
28 - making requests to user-space to fill in cache entries 28 - making requests to user-space to fill in cache entries
29 - allowing user-space to directly set entries in the cache 29 - allowing user-space to directly set entries in the cache
30 - delaying RPC requests that depend on as-yet incomplete 30 - delaying RPC requests that depend on as-yet incomplete
@@ -53,7 +53,7 @@ Creating a Cache
53 structure 53 structure
54 void cache_put(struct kref *) 54 void cache_put(struct kref *)
55 This is called when the last reference to an item is 55 This is called when the last reference to an item is
56 is dropped. The pointer passed is to the 'ref' field 56 dropped. The pointer passed is to the 'ref' field
57 in the cache_head. cache_put should release any 57 in the cache_head. cache_put should release any
58 references create by 'cache_init' and, if CACHE_VALID 58 references create by 'cache_init' and, if CACHE_VALID
59 is set, any references created by cache_update. 59 is set, any references created by cache_update.
diff --git a/Documentation/rt-mutex-design.txt b/Documentation/rt-mutex-design.txt
index c472ffacc2f6..4b736d24da7a 100644
--- a/Documentation/rt-mutex-design.txt
+++ b/Documentation/rt-mutex-design.txt
@@ -333,11 +333,11 @@ cmpxchg is basically the following function performed atomically:
333 333
334unsigned long _cmpxchg(unsigned long *A, unsigned long *B, unsigned long *C) 334unsigned long _cmpxchg(unsigned long *A, unsigned long *B, unsigned long *C)
335{ 335{
336 unsigned long T = *A; 336 unsigned long T = *A;
337 if (*A == *B) { 337 if (*A == *B) {
338 *A = *C; 338 *A = *C;
339 } 339 }
340 return T; 340 return T;
341} 341}
342#define cmpxchg(a,b,c) _cmpxchg(&a,&b,&c) 342#define cmpxchg(a,b,c) _cmpxchg(&a,&b,&c)
343 343
@@ -582,7 +582,7 @@ contention).
582try_to_take_rt_mutex is used every time the task tries to grab a mutex in the 582try_to_take_rt_mutex is used every time the task tries to grab a mutex in the
583slow path. The first thing that is done here is an atomic setting of 583slow path. The first thing that is done here is an atomic setting of
584the "Has Waiters" flag of the mutex's owner field. Yes, this could really 584the "Has Waiters" flag of the mutex's owner field. Yes, this could really
585be false, because if the the mutex has no owner, there are no waiters and 585be false, because if the mutex has no owner, there are no waiters and
586the current task also won't have any waiters. But we don't have the lock 586the current task also won't have any waiters. But we don't have the lock
587yet, so we assume we are going to be a waiter. The reason for this is to 587yet, so we assume we are going to be a waiter. The reason for this is to
588play nice for those architectures that do have CMPXCHG. By setting this flag 588play nice for those architectures that do have CMPXCHG. By setting this flag
@@ -735,7 +735,7 @@ do have CMPXCHG, that check is done in the fast path, but it is still needed
735in the slow path too. If a waiter of a mutex woke up because of a signal 735in the slow path too. If a waiter of a mutex woke up because of a signal
736or timeout between the time the owner failed the fast path CMPXCHG check and 736or timeout between the time the owner failed the fast path CMPXCHG check and
737the grabbing of the wait_lock, the mutex may not have any waiters, thus the 737the grabbing of the wait_lock, the mutex may not have any waiters, thus the
738owner still needs to make this check. If there are no waiters than the mutex 738owner still needs to make this check. If there are no waiters then the mutex
739owner field is set to NULL, the wait_lock is released and nothing more is 739owner field is set to NULL, the wait_lock is released and nothing more is
740needed. 740needed.
741 741
diff --git a/Documentation/s390/3270.txt b/Documentation/s390/3270.txt
index 0a044e647d2d..7a5c73a7ed7f 100644
--- a/Documentation/s390/3270.txt
+++ b/Documentation/s390/3270.txt
@@ -111,9 +111,7 @@ Here are the installation steps in detail:
111 config3270.sh. Inspect the output script it produces, 111 config3270.sh. Inspect the output script it produces,
112 /tmp/mkdev3270, and then run that script. This will create the 112 /tmp/mkdev3270, and then run that script. This will create the
113 necessary character special device files and make the necessary 113 necessary character special device files and make the necessary
114 changes to /etc/inittab. If you have selected DEVFS, the driver 114 changes to /etc/inittab.
115 itself creates the device files, and /tmp/mkdev3270 only changes
116 /etc/inittab.
117 115
118 Then notify /sbin/init that /etc/inittab has changed, by issuing 116 Then notify /sbin/init that /etc/inittab has changed, by issuing
119 the telinit command with the q operand: 117 the telinit command with the q operand:
diff --git a/Documentation/s390/Debugging390.txt b/Documentation/s390/Debugging390.txt
index 844c03fe7921..4dd25ee549e9 100644
--- a/Documentation/s390/Debugging390.txt
+++ b/Documentation/s390/Debugging390.txt
@@ -8,8 +8,8 @@
8Overview of Document: 8Overview of Document:
9===================== 9=====================
10This document is intended to give an good overview of how to debug 10This document is intended to give an good overview of how to debug
11Linux for s/390 & z/Architecture it isn't intended as a complete reference & not a 11Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a
12tutorial on the fundamentals of C & assembly, it dosen't go into 12tutorial on the fundamentals of C & assembly. It doesn't go into
13390 IO in any detail. It is intended to complement the documents in the 13390 IO in any detail. It is intended to complement the documents in the
14reference section below & any other worthwhile references you get. 14reference section below & any other worthwhile references you get.
15 15
@@ -88,7 +88,7 @@ s/390 z/Architecture
880 0 Reserved ( must be 0 ) otherwise specification exception occurs. 880 0 Reserved ( must be 0 ) otherwise specification exception occurs.
89 89
901 1 Program Event Recording 1 PER enabled, 901 1 Program Event Recording 1 PER enabled,
91 PER is used to facilititate debugging e.g. single stepping. 91 PER is used to facilitate debugging e.g. single stepping.
92 92
932-4 2-4 Reserved ( must be 0 ). 932-4 2-4 Reserved ( must be 0 ).
94 94
@@ -163,7 +163,7 @@ s/390 z/Architecture
163 1 1 64 bit 163 1 1 64 bit
164 164
16532 1=31 bit addressing mode 0=24 bit addressing mode (for backward 16532 1=31 bit addressing mode 0=24 bit addressing mode (for backward
166 compatibility ), linux always runs with this bit set to 1 166 compatibility), linux always runs with this bit set to 1
167 167
16833-64 Instruction address. 16833-64 Instruction address.
169 33-63 Reserved must be 0 169 33-63 Reserved must be 0
@@ -188,7 +188,7 @@ Bytes 0-512 ( 200 hex ) on s/390 & 0-512,4096-4544,4604-5119 currently on z/Arch
188are used by the processor itself for holding such information as exception indications & 188are used by the processor itself for holding such information as exception indications &
189entry points for exceptions. 189entry points for exceptions.
190Bytes after 0xc00 hex are used by linux for per processor globals on s/390 & z/Architecture 190Bytes after 0xc00 hex are used by linux for per processor globals on s/390 & z/Architecture
191( there is a gap on z/Architecure too currently between 0xc00 & 1000 which linux uses ). 191( there is a gap on z/Architecture too currently between 0xc00 & 1000 which linux uses ).
192The closest thing to this on traditional architectures is the interrupt 192The closest thing to this on traditional architectures is the interrupt
193vector table. This is a good thing & does simplify some of the kernel coding 193vector table. This is a good thing & does simplify some of the kernel coding
194however it means that we now cannot catch stray NULL pointers in the 194however it means that we now cannot catch stray NULL pointers in the
@@ -239,7 +239,7 @@ they go to 64 Bit.
239 239
240On 390 our limitations & strengths make us slightly different. 240On 390 our limitations & strengths make us slightly different.
241For backward compatibility we are only allowed use 31 bits (2GB) 241For backward compatibility we are only allowed use 31 bits (2GB)
242of our 32 bit addresses,however, we use entirely separate address 242of our 32 bit addresses, however, we use entirely separate address
243spaces for the user & kernel. 243spaces for the user & kernel.
244 244
245This means we can support 2GB of non Extended RAM on s/390, & more 245This means we can support 2GB of non Extended RAM on s/390, & more
@@ -317,9 +317,9 @@ Each process/thread under Linux for S390 has its own kernel task_struct
317defined in linux/include/linux/sched.h 317defined in linux/include/linux/sched.h
318The S390 on initialisation & resuming of a process on a cpu sets 318The S390 on initialisation & resuming of a process on a cpu sets
319the __LC_KERNEL_STACK variable in the spare prefix area for this cpu 319the __LC_KERNEL_STACK variable in the spare prefix area for this cpu
320( which we use for per processor globals). 320(which we use for per-processor globals).
321 321
322The kernel stack pointer is intimately tied with the task stucture for 322The kernel stack pointer is intimately tied with the task structure for
323each processor as follows. 323each processor as follows.
324 324
325 s/390 325 s/390
@@ -354,7 +354,7 @@ static inline struct task_struct * get_current(void)
354} 354}
355 355
356i.e. just anding the current kernel stack pointer with the mask -8192. 356i.e. just anding the current kernel stack pointer with the mask -8192.
357Thankfully because Linux dosen't have support for nested IO interrupts 357Thankfully because Linux doesn't have support for nested IO interrupts
358& our devices have large buffers can survive interrupts being shut for 358& our devices have large buffers can survive interrupts being shut for
359short amounts of time we don't need a separate stack for interrupts. 359short amounts of time we don't need a separate stack for interrupts.
360 360
@@ -366,8 +366,8 @@ Register Usage & Stackframes on Linux for s/390 & z/Architecture
366Overview: 366Overview:
367--------- 367---------
368This is the code that gcc produces at the top & the bottom of 368This is the code that gcc produces at the top & the bottom of
369each function, it usually is fairly consistent & similar from 369each function. It usually is fairly consistent & similar from
370function to function & if you know its layout you can probalby 370function to function & if you know its layout you can probably
371make some headway in finding the ultimate cause of a problem 371make some headway in finding the ultimate cause of a problem
372after a crash without a source level debugger. 372after a crash without a source level debugger.
373 373
@@ -394,7 +394,7 @@ i.e they aren't in registers & they aren't static.
394back-chain: 394back-chain:
395This is a pointer to the stack pointer before entering a 395This is a pointer to the stack pointer before entering a
396framed functions ( see frameless function ) prologue got by 396framed functions ( see frameless function ) prologue got by
397deferencing the address of the current stack pointer, 397dereferencing the address of the current stack pointer,
398 i.e. got by accessing the 32 bit value at the stack pointers 398 i.e. got by accessing the 32 bit value at the stack pointers
399current location. 399current location.
400 400
@@ -724,7 +724,7 @@ This is useful for debugging because
7241) You can double check whether the files you expect to be included are the ones 7241) You can double check whether the files you expect to be included are the ones
725that are being included ( e.g. double check that you aren't going to the i386 asm directory ). 725that are being included ( e.g. double check that you aren't going to the i386 asm directory ).
7262) Check that macro definitions aren't clashing with typedefs, 7262) Check that macro definitions aren't clashing with typedefs,
7273) Check that definitons aren't being used before they are being included. 7273) Check that definitions aren't being used before they are being included.
7284) Helps put the line emitting the error under the microscope if it contains macros. 7284) Helps put the line emitting the error under the microscope if it contains macros.
729 729
730For convenience the Linux kernel's makefile will do preprocessing automatically for you 730For convenience the Linux kernel's makefile will do preprocessing automatically for you
@@ -840,12 +840,11 @@ using the strip command to make it a more reasonable size to boot it.
840 840
841A source/assembly mixed dump of the kernel can be done with the line 841A source/assembly mixed dump of the kernel can be done with the line
842objdump --source vmlinux > vmlinux.lst 842objdump --source vmlinux > vmlinux.lst
843Also if the file isn't compiled -g this will output as much debugging information 843Also, if the file isn't compiled -g, this will output as much debugging information
844as it can ( e.g. function names ), however, this is very slow as it spends lots 844as it can (e.g. function names). This is very slow as it spends lots
845of time searching for debugging info, the following self explanitory line should be used 845of time searching for debugging info. The following self explanatory line should be used
846instead if the code isn't compiled -g. 846instead if the code isn't compiled -g, as it is much faster:
847objdump --disassemble-all --syms vmlinux > vmlinux.lst 847objdump --disassemble-all --syms vmlinux > vmlinux.lst
848as it is much faster
849 848
850As hard drive space is valuble most of us use the following approach. 849As hard drive space is valuble most of us use the following approach.
8511) Look at the emitted psw on the console to find the crash address in the kernel. 8501) Look at the emitted psw on the console to find the crash address in the kernel.
@@ -861,7 +860,7 @@ Linux source tree.
8616) rm /arch/s390/kernel/signal.o 8606) rm /arch/s390/kernel/signal.o
8627) make /arch/s390/kernel/signal.o 8617) make /arch/s390/kernel/signal.o
8638) watch the gcc command line emitted 8628) watch the gcc command line emitted
8649) type it in again or alernatively cut & paste it on the console adding the -g option. 8639) type it in again or alternatively cut & paste it on the console adding the -g option.
86510) objdump --source arch/s390/kernel/signal.o > signal.lst 86410) objdump --source arch/s390/kernel/signal.o > signal.lst
866This will output the source & the assembly intermixed, as the snippet below shows 865This will output the source & the assembly intermixed, as the snippet below shows
867This will unfortunately output addresses which aren't the same 866This will unfortunately output addresses which aren't the same
@@ -913,8 +912,8 @@ If you wanted to know does ping work but didn't have the source
913strace ping -c 1 127.0.0.1 912strace ping -c 1 127.0.0.1
914& then look at the man pages for each of the syscalls below, 913& then look at the man pages for each of the syscalls below,
915( In fact this is sometimes easier than looking at some spagetti 914( In fact this is sometimes easier than looking at some spagetti
916source which conditionally compiles for several architectures ) 915source which conditionally compiles for several architectures ).
917Not everything that it throws out needs to make sense immeadiately 916Not everything that it throws out needs to make sense immediately.
918 917
919Just looking quickly you can see that it is making up a RAW socket 918Just looking quickly you can see that it is making up a RAW socket
920for the ICMP protocol. 919for the ICMP protocol.
@@ -974,8 +973,9 @@ through the pipe for each line containing the string open.
974 973
975Example 3 974Example 3
976--------- 975---------
977Getting sophistocated 976Getting sophisticated
978telnetd crashes on & I don't know why 977telnetd crashes & I don't know why
978
979Steps 979Steps
980----- 980-----
9811) Replace the following line in /etc/inetd.conf 9811) Replace the following line in /etc/inetd.conf
@@ -1085,8 +1085,7 @@ Notes
1085----- 1085-----
1086Addresses & values in the VM debugger are always hex never decimal 1086Addresses & values in the VM debugger are always hex never decimal
1087Address ranges are of the format <HexValue1>-<HexValue2> or <HexValue1>.<HexValue2> 1087Address ranges are of the format <HexValue1>-<HexValue2> or <HexValue1>.<HexValue2>
1088e.g. The address range 0x2000 to 0x3000 can be described described as 1088e.g. The address range 0x2000 to 0x3000 can be described as 2000-3000 or 2000.1000
10892000-3000 or 2000.1000
1090 1089
1091The VM Debugger is case insensitive. 1090The VM Debugger is case insensitive.
1092 1091
@@ -1311,7 +1310,7 @@ for finding out when a particular variable changes.
1311 1310
1312An alternative way of finding the STD of a currently running process 1311An alternative way of finding the STD of a currently running process
1313is to do the following, ( this method is more complex but 1312is to do the following, ( this method is more complex but
1314could be quite convient if you aren't updating the kernel much & 1313could be quite convenient if you aren't updating the kernel much &
1315so your kernel structures will stay constant for a reasonable period of 1314so your kernel structures will stay constant for a reasonable period of
1316time ). 1315time ).
1317 1316
@@ -1413,7 +1412,7 @@ SMP Specific commands
1413To find out how many cpus you have 1412To find out how many cpus you have
1414Q CPUS displays all the CPU's available to your virtual machine 1413Q CPUS displays all the CPU's available to your virtual machine
1415To find the cpu that the current cpu VM debugger commands are being directed at do 1414To find the cpu that the current cpu VM debugger commands are being directed at do
1416Q CPU to change the current cpu cpu VM debugger commands are being directed at do 1415Q CPU to change the current cpu VM debugger commands are being directed at do
1417CPU <desired cpu no> 1416CPU <desired cpu no>
1418 1417
1419On a SMP guest issue a command to all CPUs try prefixing the command with cpu all. 1418On a SMP guest issue a command to all CPUs try prefixing the command with cpu all.
@@ -1674,8 +1673,8 @@ channel is idle & the second for device end ( secondary status ) sometimes you g
1674concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each interrupt, 1673concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each interrupt,
1675from which you receive an Interruption response block (IRB). If you get channel & device end 1674from which you receive an Interruption response block (IRB). If you get channel & device end
1676status in the IRB without channel checks etc. your IO probably went okay. If you didn't you 1675status in the IRB without channel checks etc. your IO probably went okay. If you didn't you
1677probably need a doctorto examine the IRB & extended status word etc. 1676probably need a doctor to examine the IRB & extended status word etc.
1678If an error occurs more sophistocated control units have a facitity known as 1677If an error occurs, more sophistocated control units have a facitity known as
1679concurrent sense this means that if an error occurs Extended sense information will 1678concurrent sense this means that if an error occurs Extended sense information will
1680be presented in the Extended status word in the IRB if not you have to issue a 1679be presented in the Extended status word in the IRB if not you have to issue a
1681subsequent SENSE CCW command after the test subchannel. 1680subsequent SENSE CCW command after the test subchannel.
@@ -1704,7 +1703,7 @@ concentrate on data processing.
1704IOP's can use one or more links ( known as channel paths ) to talk to each 1703IOP's can use one or more links ( known as channel paths ) to talk to each
1705IO device. It first checks for path availability & chooses an available one, 1704IO device. It first checks for path availability & chooses an available one,
1706then starts ( & sometimes terminates IO ). 1705then starts ( & sometimes terminates IO ).
1707There are two types of channel path ESCON & the Paralell IO interface. 1706There are two types of channel path: ESCON & the Parallel IO interface.
1708 1707
1709IO devices are attached to control units, control units provide the 1708IO devices are attached to control units, control units provide the
1710logic to interface the channel paths & channel path IO protocols to 1709logic to interface the channel paths & channel path IO protocols to
@@ -1743,11 +1742,11 @@ controllers or a control unit which connects to 1000 3270 terminals ).
1743 1742
1744The 390 IO systems come in 2 flavours the current 390 machines support both 1743The 390 IO systems come in 2 flavours the current 390 machines support both
1745 1744
1746The Older 360 & 370 Interface,sometimes called the paralell I/O interface, 1745The Older 360 & 370 Interface,sometimes called the Parallel I/O interface,
1747sometimes called Bus-and Tag & sometimes Original Equipment Manufacturers 1746sometimes called Bus-and Tag & sometimes Original Equipment Manufacturers
1748Interface (OEMI). 1747Interface (OEMI).
1749 1748
1750This byte wide paralell channel path/bus has parity & data on the "Bus" cable 1749This byte wide Parallel channel path/bus has parity & data on the "Bus" cable
1751& control lines on the "Tag" cable. These can operate in byte multiplex mode for 1750& control lines on the "Tag" cable. These can operate in byte multiplex mode for
1752sharing between several slow devices or burst mode & monopolize the channel for the 1751sharing between several slow devices or burst mode & monopolize the channel for the
1753whole burst. Upto 256 devices can be addressed on one of these cables. These cables are 1752whole burst. Upto 256 devices can be addressed on one of these cables. These cables are
@@ -1777,7 +1776,7 @@ Consoles 3270 & 3215 ( a teletype emulated under linux for a line mode console )
1777DASD's direct access storage devices ( otherwise known as hard disks ). 1776DASD's direct access storage devices ( otherwise known as hard disks ).
1778Tape Drives. 1777Tape Drives.
1779CTC ( Channel to Channel Adapters ), 1778CTC ( Channel to Channel Adapters ),
1780ESCON or Paralell Cables used as a very high speed serial link 1779ESCON or Parallel Cables used as a very high speed serial link
1781between 2 machines. We use 2 cables under linux to do a bi-directional serial link. 1780between 2 machines. We use 2 cables under linux to do a bi-directional serial link.
1782 1781
1783 1782
@@ -1803,8 +1802,8 @@ OSA 7C09 ON OSA 7C09 SUBCHANNEL = 0001
1803OSA 7C14 ON OSA 7C14 SUBCHANNEL = 0002 1802OSA 7C14 ON OSA 7C14 SUBCHANNEL = 0002
1804OSA 7C15 ON OSA 7C15 SUBCHANNEL = 0003 1803OSA 7C15 ON OSA 7C15 SUBCHANNEL = 0003
1805 1804
1806If you have a guest with certain priviliges you may be able to see devices 1805If you have a guest with certain privileges you may be able to see devices
1807which don't belong to you to avoid this do add the option V. 1806which don't belong to you. To avoid this, add the option V.
1808e.g. 1807e.g.
1809Q V OSA 1808Q V OSA
1810 1809
@@ -1837,7 +1836,7 @@ RDRLIST
1837RECEIVE / LOG TXT A1 ( replace 1836RECEIVE / LOG TXT A1 ( replace
18388) 18378)
1839filel & press F11 to look at it 1838filel & press F11 to look at it
1840You should see someting like. 1839You should see something like:
1841 1840
184200020942' SSCH B2334000 0048813C CC 0 SCH 0000 DEV 7C08 184100020942' SSCH B2334000 0048813C CC 0 SCH 0000 DEV 7C08
1843 CPA 000FFDF0 PARM 00E2C9C4 KEY 0 FPI C0 LPM 80 1842 CPA 000FFDF0 PARM 00E2C9C4 KEY 0 FPI C0 LPM 80
@@ -1916,7 +1915,7 @@ Assembly
1916-------- 1915--------
1917info registers: displays registers other than floating point. 1916info registers: displays registers other than floating point.
1918info all-registers: displays floating points as well. 1917info all-registers: displays floating points as well.
1919disassemble: dissassembles 1918disassemble: disassembles
1920e.g. 1919e.g.
1921disassemble without parameters will disassemble the current function 1920disassemble without parameters will disassemble the current function
1922disassemble $pc $pc+10 1921disassemble $pc $pc+10
@@ -1935,7 +1934,7 @@ undisplay : undo's display's
1935 1934
1936info breakpoints: shows all current breakpoints 1935info breakpoints: shows all current breakpoints
1937 1936
1938info stack: shows stack back trace ( if this dosent work too well, I'll show you the 1937info stack: shows stack back trace ( if this doesn't work too well, I'll show you the
1939stacktrace by hand below ). 1938stacktrace by hand below ).
1940 1939
1941info locals: displays local variables. 1940info locals: displays local variables.
@@ -2045,13 +2044,13 @@ what gdb does when the victim receives certain signals.
2045list: 2044list:
2046e.g. 2045e.g.
2047list lists current function source 2046list lists current function source
2048list 1,10 list first 10 lines of curret file. 2047list 1,10 list first 10 lines of current file.
2049list test.c:1,10 2048list test.c:1,10
2050 2049
2051 2050
2052directory: 2051directory:
2053Adds directories to be searched for source if gdb cannot find the source. 2052Adds directories to be searched for source if gdb cannot find the source.
2054(note it is a bit sensititive about slashes ) 2053(note it is a bit sensititive about slashes)
2055e.g. To add the root of the filesystem to the searchpath do 2054e.g. To add the root of the filesystem to the searchpath do
2056directory // 2055directory //
2057 2056
@@ -2123,9 +2122,9 @@ p/x (*(**$sp+56))&0x7fffffff
2123 2122
2124Disassembling instructions without debug info 2123Disassembling instructions without debug info
2125--------------------------------------------- 2124---------------------------------------------
2126gdb typically compains if there is a lack of debugging 2125gdb typically complains if there is a lack of debugging
2127symbols in the disassemble command with 2126symbols in the disassemble command with
2128"No function contains specified address." to get around 2127"No function contains specified address." To get around
2129this do 2128this do
2130x/<number lines to disassemble>xi <address> 2129x/<number lines to disassemble>xi <address>
2131e.g. 2130e.g.
@@ -2184,7 +2183,7 @@ ps -aux | grep gdb
2184kill -SIGSEGV <gdb's pid> 2183kill -SIGSEGV <gdb's pid>
2185or alternatively use killall -SIGSEGV gdb if you have the killall command. 2184or alternatively use killall -SIGSEGV gdb if you have the killall command.
2186Now look at the core dump. 2185Now look at the core dump.
2187./gdb ./gdb core 2186./gdb core
2188Displays the following 2187Displays the following
2189GNU gdb 4.18 2188GNU gdb 4.18
2190Copyright 1998 Free Software Foundation, Inc. 2189Copyright 1998 Free Software Foundation, Inc.
@@ -2316,7 +2315,7 @@ Showing us the shared libraries init uses where they are in memory
2316/proc/1/mem is the current running processes memory which you 2315/proc/1/mem is the current running processes memory which you
2317can read & write to like a file. 2316can read & write to like a file.
2318strace uses this sometimes as it is a bit faster than the 2317strace uses this sometimes as it is a bit faster than the
2319rather inefficent ptrace interface for peeking at DATA. 2318rather inefficient ptrace interface for peeking at DATA.
2320 2319
2321 2320
2322cat status 2321cat status
@@ -2446,7 +2445,7 @@ displays the following lines as it executes them.
2446+ RELSTATUS=release 2445+ RELSTATUS=release
2447+ MACHTYPE=i586-pc-linux-gnu 2446+ MACHTYPE=i586-pc-linux-gnu
2448 2447
2449perl -d <scriptname> runs the perlscript in a fully intercative debugger 2448perl -d <scriptname> runs the perlscript in a fully interactive debugger
2450<like gdb>. 2449<like gdb>.
2451Type 'h' in the debugger for help. 2450Type 'h' in the debugger for help.
2452 2451
@@ -2477,7 +2476,7 @@ Lcrash is a perfectly normal program,however, it requires 2
2477additional files, Kerntypes which is built using a patch to the 2476additional files, Kerntypes which is built using a patch to the
2478linux kernel sources in the linux root directory & the System.map. 2477linux kernel sources in the linux root directory & the System.map.
2479 2478
2480Kerntypes is an an objectfile whose sole purpose in life 2479Kerntypes is an objectfile whose sole purpose in life
2481is to provide stabs debug info to lcrash, to do this 2480is to provide stabs debug info to lcrash, to do this
2482Kerntypes is built from kerntypes.c which just includes the most commonly 2481Kerntypes is built from kerntypes.c which just includes the most commonly
2483referenced header files used when debugging, lcrash can then read the 2482referenced header files used when debugging, lcrash can then read the
diff --git a/Documentation/s390/cds.txt b/Documentation/s390/cds.txt
index f0be389c7116..d80e5733827d 100644
--- a/Documentation/s390/cds.txt
+++ b/Documentation/s390/cds.txt
@@ -133,7 +133,7 @@ determine the device driver owning the device that raised the interrupt.
133In order not to introduce a new I/O concept to the common Linux code, 133In order not to introduce a new I/O concept to the common Linux code,
134Linux/390 preserves the IRQ concept and semantically maps the ESA/390 134Linux/390 preserves the IRQ concept and semantically maps the ESA/390
135subchannels to Linux as IRQs. This allows Linux/390 to support up to 64k 135subchannels to Linux as IRQs. This allows Linux/390 to support up to 64k
136different IRQs, uniquely representig a single device each. 136different IRQs, uniquely representing a single device each.
137 137
138Up to kernel 2.4, Linux/390 used to provide interfaces via the IRQ (subchannel). 138Up to kernel 2.4, Linux/390 used to provide interfaces via the IRQ (subchannel).
139For internal use of the common I/O layer, these are still there. However, 139For internal use of the common I/O layer, these are still there. However,
@@ -143,7 +143,7 @@ During its startup the Linux/390 system checks for peripheral devices. Each
143of those devices is uniquely defined by a so called subchannel by the ESA/390 143of those devices is uniquely defined by a so called subchannel by the ESA/390
144channel subsystem. While the subchannel numbers are system generated, each 144channel subsystem. While the subchannel numbers are system generated, each
145subchannel also takes a user defined attribute, the so called device number. 145subchannel also takes a user defined attribute, the so called device number.
146Both subchannel number and device number can not exceed 65535. During driverfs 146Both subchannel number and device number cannot exceed 65535. During driverfs
147initialisation, the information about control unit type and device types that 147initialisation, the information about control unit type and device types that
148imply specific I/O commands (channel command words - CCWs) in order to operate 148imply specific I/O commands (channel command words - CCWs) in order to operate
149the device are gathered. Device drivers can retrieve this set of hardware 149the device are gathered. Device drivers can retrieve this set of hardware
@@ -177,11 +177,11 @@ This routine returns the characteristics for the device specified.
177The function is meant to be called with an irq handler in place; that is, 177The function is meant to be called with an irq handler in place; that is,
178at earliest during set_online() processing. 178at earliest during set_online() processing.
179 179
180While the request is procesed synchronously, the device interrupt 180While the request is processed synchronously, the device interrupt
181handler is called for final ending status. In case of error situations the 181handler is called for final ending status. In case of error situations the
182interrupt handler may recover appropriately. The device irq handler can 182interrupt handler may recover appropriately. The device irq handler can
183recognize the corresponding interrupts by the interruption parameter be 183recognize the corresponding interrupts by the interruption parameter be
1840x00524443.The ccw_device must not be locked prior to calling read_dev_chars(). 1840x00524443. The ccw_device must not be locked prior to calling read_dev_chars().
185 185
186The function may be called enabled or disabled. 186The function may be called enabled or disabled.
187 187
@@ -325,7 +325,7 @@ with the following CCW flags values defined :
325 325
326CCW_FLAG_DC - data chaining 326CCW_FLAG_DC - data chaining
327CCW_FLAG_CC - command chaining 327CCW_FLAG_CC - command chaining
328CCW_FLAG_SLI - suppress incorrct length 328CCW_FLAG_SLI - suppress incorrect length
329CCW_FLAG_SKIP - skip 329CCW_FLAG_SKIP - skip
330CCW_FLAG_PCI - PCI 330CCW_FLAG_PCI - PCI
331CCW_FLAG_IDA - indirect addressing 331CCW_FLAG_IDA - indirect addressing
@@ -348,7 +348,7 @@ The ccw_device_start() function returns :
348 not online. 348 not online.
349 349
350When the I/O request completes, the CDS first level interrupt handler will 350When the I/O request completes, the CDS first level interrupt handler will
351accumalate the status in a struct irb and then call the device interrupt handler. 351accumulate the status in a struct irb and then call the device interrupt handler.
352The intparm field will contain the value the device driver has associated with a 352The intparm field will contain the value the device driver has associated with a
353particular I/O request. If a pending device status was recognized, 353particular I/O request. If a pending device status was recognized,
354intparm will be set to 0 (zero). This may happen during I/O initiation or delayed 354intparm will be set to 0 (zero). This may happen during I/O initiation or delayed
@@ -433,7 +433,7 @@ puts the CPU into I/O disabled state by preserving the current PSW flags.
433 433
434The device driver is allowed to issue the next ccw_device_start() call from 434The device driver is allowed to issue the next ccw_device_start() call from
435within its interrupt handler already. It is not required to schedule a 435within its interrupt handler already. It is not required to schedule a
436bottom-half, unless an non deterministicly long running error recovery procedure 436bottom-half, unless an non deterministically long running error recovery procedure
437or similar needs to be scheduled. During I/O processing the Linux/390 generic 437or similar needs to be scheduled. During I/O processing the Linux/390 generic
438I/O device driver support has already obtained the IRQ lock, i.e. the handler 438I/O device driver support has already obtained the IRQ lock, i.e. the handler
439must not try to obtain it again when calling ccw_device_start() or we end in a 439must not try to obtain it again when calling ccw_device_start() or we end in a
diff --git a/Documentation/s390/crypto/crypto-API.txt b/Documentation/s390/crypto/crypto-API.txt
index 78a77624a716..29dee792c887 100644
--- a/Documentation/s390/crypto/crypto-API.txt
+++ b/Documentation/s390/crypto/crypto-API.txt
@@ -61,9 +61,9 @@ Example: z990 crypto instruction for SHA1 algorithm is available
61 -> when the sha1 algorithm is requested through the crypto API 61 -> when the sha1 algorithm is requested through the crypto API
62 (which has a module autoloader) the z990 module will be loaded. 62 (which has a module autoloader) the z990 module will be loaded.
63 63
64TBD: a userspace module probin mechanism 64TBD: a userspace module probing mechanism
65 something like 'probe sha1 sha1_z990 sha1' in modprobe.conf 65 something like 'probe sha1 sha1_z990 sha1' in modprobe.conf
66 -> try module sha1_z990, if it fails to load load standard module sha1 66 -> try module sha1_z990, if it fails to load standard module sha1
67 the 'probe' statement is currently not supported in modprobe.conf 67 the 'probe' statement is currently not supported in modprobe.conf
68 68
69 69
diff --git a/Documentation/s390/driver-model.txt b/Documentation/s390/driver-model.txt
index efb674eda4d4..62c082387aea 100644
--- a/Documentation/s390/driver-model.txt
+++ b/Documentation/s390/driver-model.txt
@@ -157,7 +157,7 @@ notify: This function is called by the common I/O layer for some state changes
157 * In online state, device detached (CIO_GONE) or last path gone 157 * In online state, device detached (CIO_GONE) or last path gone
158 (CIO_NO_PATH). The driver must return !0 to keep the device; for 158 (CIO_NO_PATH). The driver must return !0 to keep the device; for
159 return code 0, the device will be deleted as usual (also when no 159 return code 0, the device will be deleted as usual (also when no
160 notify function is registerd). If the driver wants to keep the 160 notify function is registered). If the driver wants to keep the
161 device, it is moved into disconnected state. 161 device, it is moved into disconnected state.
162 * In disconnected state, device operational again (CIO_OPER). The 162 * In disconnected state, device operational again (CIO_OPER). The
163 common I/O layer performs some sanity checks on device number and 163 common I/O layer performs some sanity checks on device number and
@@ -262,7 +262,7 @@ attribute 'online' which can be 0 or 1.
262----------- 262-----------
263 263
264The netiucv driver creates an attribute 'connection' under 264The netiucv driver creates an attribute 'connection' under
265bus/iucv/drivers/netiucv. Piping to this attibute creates a new netiucv 265bus/iucv/drivers/netiucv. Piping to this attribute creates a new netiucv
266connection to the specified host. 266connection to the specified host.
267 267
268Netiucv connections show up under devices/iucv/ as "netiucv<ifnum>". The interface 268Netiucv connections show up under devices/iucv/ as "netiucv<ifnum>". The interface
diff --git a/Documentation/s390/monreader.txt b/Documentation/s390/monreader.txt
index d843bb04906e..beeaa4b24427 100644
--- a/Documentation/s390/monreader.txt
+++ b/Documentation/s390/monreader.txt
@@ -83,7 +83,7 @@ This loads the module and sets the DCSS name to "MYDCSS".
83 83
84NOTE: 84NOTE:
85----- 85-----
86This API provides no interface to control the *MONITOR service, e.g. specifiy 86This API provides no interface to control the *MONITOR service, e.g. specify
87which data should be collected. This can be done by the CP command MONITOR 87which data should be collected. This can be done by the CP command MONITOR
88(Class E privileged), see "CP Command and Utility Reference". 88(Class E privileged), see "CP Command and Utility Reference".
89 89
diff --git a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt
index e321a8ed2a2d..000230cd26db 100644
--- a/Documentation/s390/s390dbf.txt
+++ b/Documentation/s390/s390dbf.txt
@@ -11,7 +11,7 @@ where log records can be stored efficiently in memory, where each component
11(e.g. device drivers) can have one separate debug log. 11(e.g. device drivers) can have one separate debug log.
12One purpose of this is to inspect the debug logs after a production system crash 12One purpose of this is to inspect the debug logs after a production system crash
13in order to analyze the reason for the crash. 13in order to analyze the reason for the crash.
14If the system still runs but only a subcomponent which uses dbf failes, 14If the system still runs but only a subcomponent which uses dbf fails,
15it is possible to look at the debug logs on a live system via the Linux 15it is possible to look at the debug logs on a live system via the Linux
16debugfs filesystem. 16debugfs filesystem.
17The debug feature may also very useful for kernel and driver development. 17The debug feature may also very useful for kernel and driver development.
@@ -65,7 +65,7 @@ Predefined views for hex/ascii, sprintf and raw binary data are provided.
65It is also possible to define other views. The content of 65It is also possible to define other views. The content of
66a view can be inspected simply by reading the corresponding debugfs file. 66a view can be inspected simply by reading the corresponding debugfs file.
67 67
68All debug logs have an an actual debug level (range from 0 to 6). 68All debug logs have an actual debug level (range from 0 to 6).
69The default level is 3. Event and Exception functions have a 'level' 69The default level is 3. Event and Exception functions have a 'level'
70parameter. Only debug entries with a level that is lower or equal 70parameter. Only debug entries with a level that is lower or equal
71than the actual level are written to the log. This means, when 71than the actual level are written to the log. This means, when
@@ -83,8 +83,8 @@ Example:
83It is also possible to deactivate the debug feature globally for every 83It is also possible to deactivate the debug feature globally for every
84debug log. You can change the behavior using 2 sysctl parameters in 84debug log. You can change the behavior using 2 sysctl parameters in
85/proc/sys/s390dbf: 85/proc/sys/s390dbf:
86There are currently 2 possible triggers, which stop the debug feature 86There are currently 2 possible triggers, which stop the debug feature
87globally. The first possbility is to use the "debug_active" sysctl. If 87globally. The first possibility is to use the "debug_active" sysctl. If
88set to 1 the debug feature is running. If "debug_active" is set to 0 the 88set to 1 the debug feature is running. If "debug_active" is set to 0 the
89debug feature is turned off. 89debug feature is turned off.
90The second trigger which stops the debug feature is an kernel oops. 90The second trigger which stops the debug feature is an kernel oops.
@@ -468,7 +468,7 @@ The hex_ascii view shows the data field in hex and ascii representation
468The raw view returns a bytestream as the debug areas are stored in memory. 468The raw view returns a bytestream as the debug areas are stored in memory.
469 469
470The sprintf view formats the debug entries in the same way as the sprintf 470The sprintf view formats the debug entries in the same way as the sprintf
471function would do. The sprintf event/expection functions write to the 471function would do. The sprintf event/exception functions write to the
472debug entry a pointer to the format string (size = sizeof(long)) 472debug entry a pointer to the format string (size = sizeof(long))
473and for each vararg a long value. So e.g. for a debug entry with a format 473and for each vararg a long value. So e.g. for a debug entry with a format
474string plus two varargs one would need to allocate a (3 * sizeof(long)) 474string plus two varargs one would need to allocate a (3 * sizeof(long))
@@ -556,7 +556,7 @@ The input_proc can be used to implement functionality when it is written to
556the view (e.g. like with 'echo "0" > /sys/kernel/debug/s390dbf/dasd/level). 556the view (e.g. like with 'echo "0" > /sys/kernel/debug/s390dbf/dasd/level).
557 557
558For header_proc there can be used the default function 558For header_proc there can be used the default function
559debug_dflt_header_fn() which is defined in in debug.h. 559debug_dflt_header_fn() which is defined in debug.h.
560and which produces the same header output as the predefined views. 560and which produces the same header output as the predefined views.
561E.g: 561E.g:
56200 00964419409:440761 2 - 00 88023ec 56200 00964419409:440761 2 - 00 88023ec
diff --git a/Documentation/sched-coding.txt b/Documentation/sched-coding.txt
index 2b75ef67c9fe..cbd8db752acf 100644
--- a/Documentation/sched-coding.txt
+++ b/Documentation/sched-coding.txt
@@ -15,7 +15,7 @@ Main Scheduling Methods
15void load_balance(runqueue_t *this_rq, int idle) 15void load_balance(runqueue_t *this_rq, int idle)
16 Attempts to pull tasks from one cpu to another to balance cpu usage, 16 Attempts to pull tasks from one cpu to another to balance cpu usage,
17 if needed. This method is called explicitly if the runqueues are 17 if needed. This method is called explicitly if the runqueues are
18 inbalanced or periodically by the timer tick. Prior to calling, 18 imbalanced or periodically by the timer tick. Prior to calling,
19 the current runqueue must be locked and interrupts disabled. 19 the current runqueue must be locked and interrupts disabled.
20 20
21void schedule() 21void schedule()
diff --git a/Documentation/sched-design.txt b/Documentation/sched-design.txt
index 9d04e7bbf45f..1605bf0cba8b 100644
--- a/Documentation/sched-design.txt
+++ b/Documentation/sched-design.txt
@@ -93,9 +93,9 @@ and the goal is also to add a few new things:
93Design 93Design
94====== 94======
95 95
96the core of the new scheduler are the following mechanizms: 96The core of the new scheduler contains the following mechanisms:
97 97
98 - *two*, priority-ordered 'priority arrays' per CPU. There is an 'active' 98 - *two* priority-ordered 'priority arrays' per CPU. There is an 'active'
99 array and an 'expired' array. The active array contains all tasks that 99 array and an 'expired' array. The active array contains all tasks that
100 are affine to this CPU and have timeslices left. The expired array 100 are affine to this CPU and have timeslices left. The expired array
101 contains all tasks which have used up their timeslices - but this array 101 contains all tasks which have used up their timeslices - but this array
diff --git a/Documentation/scsi/ChangeLog.1992-1997 b/Documentation/scsi/ChangeLog.1992-1997
index dc88ee2ab73d..6faad7e6417c 100644
--- a/Documentation/scsi/ChangeLog.1992-1997
+++ b/Documentation/scsi/ChangeLog.1992-1997
@@ -1214,7 +1214,7 @@ Thu Jul 21 10:37:39 1994 Eric Youngdale (eric@esp22)
1214 1214
1215 * sr.c(sr_open): Do not allow opens with write access. 1215 * sr.c(sr_open): Do not allow opens with write access.
1216 1216
1217Mon Jul 18 09:51:22 1994 1994 Eric Youngdale (eric@esp22) 1217Mon Jul 18 09:51:22 1994 Eric Youngdale (eric@esp22)
1218 1218
1219 * Linux 1.1.31 released. 1219 * Linux 1.1.31 released.
1220 1220
diff --git a/Documentation/scsi/NinjaSCSI.txt b/Documentation/scsi/NinjaSCSI.txt
index 041780f428ac..3229b64cf24e 100644
--- a/Documentation/scsi/NinjaSCSI.txt
+++ b/Documentation/scsi/NinjaSCSI.txt
@@ -24,7 +24,7 @@ SCSI device: I-O data CDPS-PX24 (CD-ROM drive)
24 You can also use "cardctl" program (this program is in pcmcia-cs source 24 You can also use "cardctl" program (this program is in pcmcia-cs source
25 code) to get more info. 25 code) to get more info.
26 26
27# cat /var/log/messgaes 27# cat /var/log/messages
28... 28...
29Jan 2 03:45:06 lindberg cardmgr[78]: unsupported card in socket 1 29Jan 2 03:45:06 lindberg cardmgr[78]: unsupported card in socket 1
30Jan 2 03:45:06 lindberg cardmgr[78]: product info: "WBT", "NinjaSCSI-3", "R1.0" 30Jan 2 03:45:06 lindberg cardmgr[78]: product info: "WBT", "NinjaSCSI-3", "R1.0"
@@ -36,18 +36,18 @@ Socket 1:
36 product info: "IO DATA", "CBSC16 ", "1" 36 product info: "IO DATA", "CBSC16 ", "1"
37 37
38 38
39[2] Get Linux kernel source, and extract it to /usr/src. 39[2] Get the Linux kernel source, and extract it to /usr/src.
40 Because NinjaSCSI driver requiers some SCSI header files in Linux kernel 40 Because the NinjaSCSI driver requires some SCSI header files in Linux
41 source. 41 kernel source, I recommend rebuilding your kernel; this eliminates
42 I recomend rebuilding your kernel. This eliminate some versioning problem. 42 some versioning problems.
43$ cd /usr/src 43$ cd /usr/src
44$ tar -zxvf linux-x.x.x.tar.gz 44$ tar -zxvf linux-x.x.x.tar.gz
45$ cd linux 45$ cd linux
46$ make config 46$ make config
47... 47...
48 48
49[3] If you use this driver with Kernel 2.2, Unpack pcmcia-cs in some directory 49[3] If you use this driver with Kernel 2.2, unpack pcmcia-cs in some directory
50 and make & install. This driver requies pcmcia-cs header file. 50 and make & install. This driver requires the pcmcia-cs header file.
51$ cd /usr/src 51$ cd /usr/src
52$ tar zxvf cs-pcmcia-cs-3.x.x.tar.gz 52$ tar zxvf cs-pcmcia-cs-3.x.x.tar.gz
53... 53...
@@ -59,10 +59,10 @@ $ emacs Makefile
59... 59...
60$ make 60$ make
61 61
62[5] Copy nsp_cs.o to suitable plase, like /lib/modules/<Kernel version>/pcmcia/ . 62[5] Copy nsp_cs.ko to suitable place, like /lib/modules/<Kernel version>/pcmcia/ .
63 63
64[6] Add these lines to /etc/pcmcia/config . 64[6] Add these lines to /etc/pcmcia/config .
65 If you yse pcmcia-cs-3.1.8 or later, we can use "nsp_cs.conf" file. 65 If you use pcmcia-cs-3.1.8 or later, we can use "nsp_cs.conf" file.
66 So, you don't need to edit file. Just copy to /etc/pcmcia/ . 66 So, you don't need to edit file. Just copy to /etc/pcmcia/ .
67 67
68------------------------------------- 68-------------------------------------
diff --git a/Documentation/scsi/aacraid.txt b/Documentation/scsi/aacraid.txt
index ee03678c8029..3367130e64f6 100644
--- a/Documentation/scsi/aacraid.txt
+++ b/Documentation/scsi/aacraid.txt
@@ -4,7 +4,7 @@ Introduction
4------------------------- 4-------------------------
5The aacraid driver adds support for Adaptec (http://www.adaptec.com) 5The aacraid driver adds support for Adaptec (http://www.adaptec.com)
6RAID controllers. This is a major rewrite from the original 6RAID controllers. This is a major rewrite from the original
7Adaptec supplied driver. It has signficantly cleaned up both the code 7Adaptec supplied driver. It has significantly cleaned up both the code
8and the running binary size (the module is less than half the size of 8and the running binary size (the module is less than half the size of
9the original). 9the original).
10 10
diff --git a/Documentation/scsi/aic79xx.txt b/Documentation/scsi/aic79xx.txt
index 382b439b439e..904d49e90ef2 100644
--- a/Documentation/scsi/aic79xx.txt
+++ b/Documentation/scsi/aic79xx.txt
@@ -81,7 +81,7 @@ The following information is available in this file:
81 an SDTR with an offset of 0 to be sure the target 81 an SDTR with an offset of 0 to be sure the target
82 knows we are async. This works around a firmware defect 82 knows we are async. This works around a firmware defect
83 in the Quantum Atlas 10K. 83 in the Quantum Atlas 10K.
84 - Implement controller susupend and resume. 84 - Implement controller suspend and resume.
85 - Clear PCI error state during driver attach so that we 85 - Clear PCI error state during driver attach so that we
86 don't disable memory mapped I/O due to a stray write 86 don't disable memory mapped I/O due to a stray write
87 by some other driver probe that occurred before we 87 by some other driver probe that occurred before we
@@ -94,7 +94,7 @@ The following information is available in this file:
94 - Add support for scsi_report_device_reset() found in 94 - Add support for scsi_report_device_reset() found in
95 2.5.X kernels. 95 2.5.X kernels.
96 - Add 7901B support. 96 - Add 7901B support.
97 - Simplify handling of the packtized lun Rev A workaround. 97 - Simplify handling of the packetized lun Rev A workaround.
98 - Correct and simplify handling of the ignore wide residue 98 - Correct and simplify handling of the ignore wide residue
99 message. The previous code would fail to report a residual 99 message. The previous code would fail to report a residual
100 if the transaction data length was even and we received 100 if the transaction data length was even and we received
diff --git a/Documentation/scsi/aic7xxx.txt b/Documentation/scsi/aic7xxx.txt
index 3481fcded4c2..9b894f116d95 100644
--- a/Documentation/scsi/aic7xxx.txt
+++ b/Documentation/scsi/aic7xxx.txt
@@ -160,7 +160,7 @@ The following information is available in this file:
160 160
161 6.2.34 (May 5th, 2003) 161 6.2.34 (May 5th, 2003)
162 - Fix locking regression instroduced in 6.2.29 that 162 - Fix locking regression instroduced in 6.2.29 that
163 could cuase a lock order reversal between the io_request_lock 163 could cause a lock order reversal between the io_request_lock
164 and our per-softc lock. This was only possible on RH9, 164 and our per-softc lock. This was only possible on RH9,
165 SuSE, and kernel.org 2.4.X kernels. 165 SuSE, and kernel.org 2.4.X kernels.
166 166
diff --git a/Documentation/scsi/aic7xxx_old.txt b/Documentation/scsi/aic7xxx_old.txt
index 79e5ac6cb6ff..c92f4473193b 100644
--- a/Documentation/scsi/aic7xxx_old.txt
+++ b/Documentation/scsi/aic7xxx_old.txt
@@ -102,7 +102,7 @@ linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD
102 The hardware RAID devices sold by Adaptec are *NOT* supported by this 102 The hardware RAID devices sold by Adaptec are *NOT* supported by this
103 driver (and will people please stop emailing me about them, they are 103 driver (and will people please stop emailing me about them, they are
104 a totally separate beast from the bare SCSI controllers and this driver 104 a totally separate beast from the bare SCSI controllers and this driver
105 can not be retrofitted in any sane manner to support the hardware RAID 105 cannot be retrofitted in any sane manner to support the hardware RAID
106 features on those cards - Doug Ledford). 106 features on those cards - Doug Ledford).
107 107
108 108
@@ -241,7 +241,7 @@ linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD
241 that instead of dumping the register contents on the card, this 241 that instead of dumping the register contents on the card, this
242 option dumps the contents of the sequencer program RAM. This gives 242 option dumps the contents of the sequencer program RAM. This gives
243 the ability to verify that the instructions downloaded to the 243 the ability to verify that the instructions downloaded to the
244 card's sequencer are indeed what they are suppossed to be. Again, 244 card's sequencer are indeed what they are supposed to be. Again,
245 unless you have documentation to tell you how to interpret these 245 unless you have documentation to tell you how to interpret these
246 numbers, then it is totally useless. 246 numbers, then it is totally useless.
247 247
@@ -317,7 +317,7 @@ linux-1.1.x and fairly stable since linux-1.2.x, and are also in FreeBSD
317 initial DEVCONFIG values for each of your aic7xxx controllers as 317 initial DEVCONFIG values for each of your aic7xxx controllers as
318 they are listed, and also record what the machine is detecting as 318 they are listed, and also record what the machine is detecting as
319 the proper termination on your controllers. NOTE: the order in 319 the proper termination on your controllers. NOTE: the order in
320 which the initial DEVCONFIG values are printed out is not gauranteed 320 which the initial DEVCONFIG values are printed out is not guaranteed
321 to be the same order as the SCSI controllers are registered. The 321 to be the same order as the SCSI controllers are registered. The
322 above option and this option both work on the order of the SCSI 322 above option and this option both work on the order of the SCSI
323 controllers as they are registered, so make sure you match the right 323 controllers as they are registered, so make sure you match the right
diff --git a/Documentation/scsi/dc395x.txt b/Documentation/scsi/dc395x.txt
index ae3b79a2d275..88219f96633d 100644
--- a/Documentation/scsi/dc395x.txt
+++ b/Documentation/scsi/dc395x.txt
@@ -20,7 +20,7 @@ Parameters
20---------- 20----------
21The driver uses the settings from the EEPROM set in the SCSI BIOS 21The driver uses the settings from the EEPROM set in the SCSI BIOS
22setup. If there is no EEPROM, the driver uses default values. 22setup. If there is no EEPROM, the driver uses default values.
23Both can be overriden by command line parameters (module or kernel 23Both can be overridden by command line parameters (module or kernel
24parameters). 24parameters).
25 25
26The following parameters are available: 26The following parameters are available:
diff --git a/Documentation/scsi/dpti.txt b/Documentation/scsi/dpti.txt
index 6e45e70243e5..f36dc0e7c8da 100644
--- a/Documentation/scsi/dpti.txt
+++ b/Documentation/scsi/dpti.txt
@@ -48,7 +48,7 @@
48 * Implemented suggestions from Alan Cox 48 * Implemented suggestions from Alan Cox
49 * Added calculation of resid for sg layer 49 * Added calculation of resid for sg layer
50 * Better error handling 50 * Better error handling
51 * Added checking underflow condtions 51 * Added checking underflow conditions
52 * Added DATAPROTECT checking 52 * Added DATAPROTECT checking
53 * Changed error return codes 53 * Changed error return codes
54 * Fixed pointer bug in bus reset routine 54 * Fixed pointer bug in bus reset routine
diff --git a/Documentation/scsi/ibmmca.txt b/Documentation/scsi/ibmmca.txt
index d16ce5b540f4..35f6b8ed2295 100644
--- a/Documentation/scsi/ibmmca.txt
+++ b/Documentation/scsi/ibmmca.txt
@@ -229,7 +229,7 @@
229 229
230 In a second step of the driver development, the following improvement has 230 In a second step of the driver development, the following improvement has
231 been applied: The first approach limited the number of devices to 7, far 231 been applied: The first approach limited the number of devices to 7, far
232 fewer than the 15 that it could usem then it just maped ldn -> 232 fewer than the 15 that it could use, then it just mapped ldn ->
233 (ldn/8,ldn%8) for pun,lun. We ended up with a real mishmash of puns 233 (ldn/8,ldn%8) for pun,lun. We ended up with a real mishmash of puns
234 and luns, but it all seemed to work. 234 and luns, but it all seemed to work.
235 235
@@ -254,12 +254,12 @@
254 device to be existant, but it has no ldn assigned, it gets a ldn out of 7 254 device to be existant, but it has no ldn assigned, it gets a ldn out of 7
255 to 14. The numbers are assigned in cyclic order. Therefore it takes 8 255 to 14. The numbers are assigned in cyclic order. Therefore it takes 8
256 dynamical reassignments on the SCSI-devices, until a certain device 256 dynamical reassignments on the SCSI-devices, until a certain device
257 loses its ldn again. This assures, that dynamical remapping is avoided 257 loses its ldn again. This assures that dynamical remapping is avoided
258 during intense I/O between up to 15 SCSI-devices (means pun,lun 258 during intense I/O between up to 15 SCSI-devices (means pun,lun
259 combinations). A further advantage of this method is, that people who 259 combinations). A further advantage of this method is that people who
260 build their kernel without probing on all luns will get what they expect, 260 build their kernel without probing on all luns will get what they expect,
261 because the driver just won't assign everything with lun>0 when 261 because the driver just won't assign everything with lun>0 when
262 multpile lun probing is inactive. 262 multiple lun probing is inactive.
263 263
264 2.4 SCSI-Device Order 264 2.4 SCSI-Device Order
265 --------------------- 265 ---------------------
@@ -309,9 +309,9 @@
309 2.6 Abort & Reset Commands 309 2.6 Abort & Reset Commands
310 -------------------------- 310 --------------------------
311 These are implemented with busy waiting for interrupt to arrive. 311 These are implemented with busy waiting for interrupt to arrive.
312 ibmmca_reset() and ibmmca_abort() do not work sufficently well 312 ibmmca_reset() and ibmmca_abort() do not work sufficiently well
313 up to now and need still a lot of development work. But, this seems 313 up to now and need still a lot of development work. This seems
314 to be even a problem with other SCSI-low level drivers, too. However, 314 to be a problem with other low-level SCSI drivers too, however
315 this should be no excuse. 315 this should be no excuse.
316 316
317 2.7 Disk Geometry 317 2.7 Disk Geometry
@@ -684,8 +684,8 @@
684 not like sending commands to non-existing SCSI-devices and will react 684 not like sending commands to non-existing SCSI-devices and will react
685 with a command error as a sign of protest. While this error is not 685 with a command error as a sign of protest. While this error is not
686 present on IBM SCSI Adapter w/cache, it appears on IBM Integrated SCSI 686 present on IBM SCSI Adapter w/cache, it appears on IBM Integrated SCSI
687 Adapters. Therefore, I implemented a workarround to forgive those 687 Adapters. Therefore, I implemented a workaround to forgive those
688 adapters their protests, but it is marked up in the statisctis, so 688 adapters their protests, but it is marked up in the statistics, so
689 after a successful boot, you can see in /proc/scsi/ibmmca/<host_number> 689 after a successful boot, you can see in /proc/scsi/ibmmca/<host_number>
690 how often the command errors have been forgiven to the SCSI-subsystem. 690 how often the command errors have been forgiven to the SCSI-subsystem.
691 If the number is bigger than 0, you have a SCSI subsystem of older 691 If the number is bigger than 0, you have a SCSI subsystem of older
@@ -778,15 +778,15 @@
778 not accept this, as they stick quite near to ANSI-SCSI and report 778 not accept this, as they stick quite near to ANSI-SCSI and report
779 a COMMAND_ERROR message which causes the driver to panic. The main 779 a COMMAND_ERROR message which causes the driver to panic. The main
780 problem was located around the INQUIRY command. Now, for all the 780 problem was located around the INQUIRY command. Now, for all the
781 mentioned commands, the buffersize, sent to the adapter is at 781 mentioned commands, the buffersize sent to the adapter is at
782 maximum 255 which seems to be a quite reasonable solution. 782 maximum 255 which seems to be a quite reasonable solution.
783 TEST_UNIT_READY gets a buffersize of 0 to make sure, that no 783 TEST_UNIT_READY gets a buffersize of 0 to make sure that no
784 data is transferred in order to avoid any possible command failure. 784 data is transferred in order to avoid any possible command failure.
785 2) On unsuccessful TEST_UNIT_READY, the midlevel-driver has to send 785 2) On unsuccessful TEST_UNIT_READY, the mid-level driver has to send
786 a REQUEST_SENSE in order to see, where the problem is located. This 786 a REQUEST_SENSE in order to see where the problem is located. This
787 REQUEST_SENSE may have various length in its answer-buffer. IBM 787 REQUEST_SENSE may have various length in its answer-buffer. IBM
788 SCSI-subsystems report a command failure, if the returned buffersize 788 SCSI-subsystems report a command failure if the returned buffersize
789 is different from the sent buffersize, but this can be supressed by 789 is different from the sent buffersize, but this can be suppressed by
790 a special bit, which is now done and problems seem to be solved. 790 a special bit, which is now done and problems seem to be solved.
791 2) Code adaption to all kernel-releases. Now, the 3.2 code compiles on 791 2) Code adaption to all kernel-releases. Now, the 3.2 code compiles on
792 2.0.x, 2.1.x, 2.2.x and 2.3.x kernel releases without any code-changes. 792 2.0.x, 2.1.x, 2.2.x and 2.3.x kernel releases without any code-changes.
@@ -1086,7 +1086,7 @@
1086 1086
1087 Q: "Reset SCSI-devices at boottime" halts the system at boottime, why? 1087 Q: "Reset SCSI-devices at boottime" halts the system at boottime, why?
1088 A: This is only tested with the IBM SCSI Adapter w/cache. It is not 1088 A: This is only tested with the IBM SCSI Adapter w/cache. It is not
1089 yet prooved to run on other adapters, however you may be lucky. 1089 yet proven to run on other adapters, however you may be lucky.
1090 In version 3.1d this has been hugely improved and should work better, 1090 In version 3.1d this has been hugely improved and should work better,
1091 now. Normally you really won't need to activate this flag in the 1091 now. Normally you really won't need to activate this flag in the
1092 kernel configuration, as all post 1989 SCSI-devices should accept 1092 kernel configuration, as all post 1989 SCSI-devices should accept
@@ -1104,7 +1104,7 @@
1104 The parameter 'normal' sets the new industry standard, starting 1104 The parameter 'normal' sets the new industry standard, starting
1105 from pun 0, scanning up to pun 6. This allows you to change your 1105 from pun 0, scanning up to pun 6. This allows you to change your
1106 opinion still after having already compiled the kernel. 1106 opinion still after having already compiled the kernel.
1107 Q: Why I cannot find the IBM MCA SCSI support in the config menue? 1107 Q: Why can't I find IBM MCA SCSI support in the config menu?
1108 A: You have to activate MCA bus support, first. 1108 A: You have to activate MCA bus support, first.
1109 Q: Where can I find the latest info about this driver? 1109 Q: Where can I find the latest info about this driver?
1110 A: See the file MAINTAINERS for the current WWW-address, which offers 1110 A: See the file MAINTAINERS for the current WWW-address, which offers
@@ -1156,7 +1156,7 @@
1156 Guide) what has to be done for reset, we still share the bad shape of 1156 Guide) what has to be done for reset, we still share the bad shape of
1157 the reset functions with all other low level SCSI-drivers. 1157 the reset functions with all other low level SCSI-drivers.
1158 Astonishingly, reset works in most cases quite ok, but the harddisks 1158 Astonishingly, reset works in most cases quite ok, but the harddisks
1159 won't run in synchonous mode anymore after a reset, until you reboot. 1159 won't run in synchronous mode anymore after a reset, until you reboot.
1160 Q: Why does my XXX w/Cache adapter not use read-prefetch? 1160 Q: Why does my XXX w/Cache adapter not use read-prefetch?
1161 A: Ok, that is not completely possible. If a cache is present, the 1161 A: Ok, that is not completely possible. If a cache is present, the
1162 adapter tries to use it internally. Explicitly, one can use the cache 1162 adapter tries to use it internally. Explicitly, one can use the cache
diff --git a/Documentation/scsi/megaraid.txt b/Documentation/scsi/megaraid.txt
index ff864c0f494c..3c7cea51e687 100644
--- a/Documentation/scsi/megaraid.txt
+++ b/Documentation/scsi/megaraid.txt
@@ -4,11 +4,11 @@
4Overview: 4Overview:
5-------- 5--------
6 6
7Different classes of controllers from LSI Logic, accept and respond to the 7Different classes of controllers from LSI Logic accept and respond to the
8user applications in a similar way. They understand the same firmware control 8user applications in a similar way. They understand the same firmware control
9commands. Furthermore, the applications also can treat different classes of 9commands. Furthermore, the applications also can treat different classes of
10the controllers uniformly. Hence it is logical to have a single module that 10the controllers uniformly. Hence it is logical to have a single module that
11interefaces with the applications on one side and all the low level drivers 11interfaces with the applications on one side and all the low level drivers
12on the other. 12on the other.
13 13
14The advantages, though obvious, are listed for completeness: 14The advantages, though obvious, are listed for completeness:
diff --git a/Documentation/scsi/ncr53c8xx.txt b/Documentation/scsi/ncr53c8xx.txt
index 822d2aca3700..58ad8db333d9 100644
--- a/Documentation/scsi/ncr53c8xx.txt
+++ b/Documentation/scsi/ncr53c8xx.txt
@@ -70,7 +70,7 @@ Written by Gerard Roudier <groudier@free.fr>
7015. SCSI problem troubleshooting 7015. SCSI problem troubleshooting
71 15.1 Problem tracking 71 15.1 Problem tracking
72 15.2 Understanding hardware error reports 72 15.2 Understanding hardware error reports
7316. Synchonous transfer negotiation tables 7316. Synchronous transfer negotiation tables
74 16.1 Synchronous timings for 53C875 and 53C860 Ultra-SCSI controllers 74 16.1 Synchronous timings for 53C875 and 53C860 Ultra-SCSI controllers
75 16.2 Synchronous timings for fast SCSI-2 53C8XX controllers 75 16.2 Synchronous timings for fast SCSI-2 53C8XX controllers
7617. Serial NVRAM support (by Richard Waltham) 7617. Serial NVRAM support (by Richard Waltham)
@@ -96,10 +96,10 @@ The original driver has been written for 386bsd and FreeBSD by:
96It is now available as a bundle of 2 drivers: 96It is now available as a bundle of 2 drivers:
97 97
98- ncr53c8xx generic driver that supports all the SYM53C8XX family including 98- ncr53c8xx generic driver that supports all the SYM53C8XX family including
99 the ealiest 810 rev. 1, the latest 896 (2 channel LVD SCSI controller) and 99 the earliest 810 rev. 1, the latest 896 (2 channel LVD SCSI controller) and
100 the new 895A (1 channel LVD SCSI controller). 100 the new 895A (1 channel LVD SCSI controller).
101- sym53c8xx enhanced driver (a.k.a. 896 drivers) that drops support of oldest 101- sym53c8xx enhanced driver (a.k.a. 896 drivers) that drops support of oldest
102 chips in order to gain advantage of new features, as LOAD/STORE intructions 102 chips in order to gain advantage of new features, as LOAD/STORE instructions
103 available since the 810A and hardware phase mismatch available with the 103 available since the 810A and hardware phase mismatch available with the
104 896 and the 895A. 104 896 and the 895A.
105 105
@@ -207,7 +207,7 @@ The 896 and the 895A allows handling of the phase mismatch context from
207SCRIPTS (avoids the phase mismatch interrupt that stops the SCSI processor 207SCRIPTS (avoids the phase mismatch interrupt that stops the SCSI processor
208until the C code has saved the context of the transfer). 208until the C code has saved the context of the transfer).
209Implementing this without using LOAD/STORE instructions would be painfull 209Implementing this without using LOAD/STORE instructions would be painfull
210and I did'nt even want to try it. 210and I didn't even want to try it.
211 211
212The 896 chip supports 64 bit PCI transactions and addressing, while the 212The 896 chip supports 64 bit PCI transactions and addressing, while the
213895A supports 32 bit PCI transactions and 64 bit addressing. 213895A supports 32 bit PCI transactions and 64 bit addressing.
@@ -631,8 +631,8 @@ string variable using 'insmod'.
631 631
632A boot setup command for the ncr53c8xx (sym53c8xx) driver begins with the 632A boot setup command for the ncr53c8xx (sym53c8xx) driver begins with the
633driver name "ncr53c8xx="(sym53c8xx). The kernel syntax parser then expects 633driver name "ncr53c8xx="(sym53c8xx). The kernel syntax parser then expects
634an optionnal list of integers separated with comma followed by an optional 634an optional list of integers separated with comma followed by an optional
635list of comma-separated strings. Example of boot setup command under lilo 635list of comma-separated strings. Example of boot setup command under lilo
636prompt: 636prompt:
637 637
638lilo: linux root=/dev/hda2 ncr53c8xx=tags:4,sync:10,debug:0x200 638lilo: linux root=/dev/hda2 ncr53c8xx=tags:4,sync:10,debug:0x200
@@ -778,7 +778,7 @@ port address 0x1400.
778 Some scsi boards use a 875 (ultra wide) and only supply narrow connectors. 778 Some scsi boards use a 875 (ultra wide) and only supply narrow connectors.
779 If you have connected a wide device with a 50 pins to 68 pins cable 779 If you have connected a wide device with a 50 pins to 68 pins cable
780 converter, any accepted wide negotiation will break further data transfers. 780 converter, any accepted wide negotiation will break further data transfers.
781 In such a case, using "wide:0" in the bootup command will be helpfull. 781 In such a case, using "wide:0" in the bootup command will be helpful.
782 782
78310.2.14 Differential mode 78310.2.14 Differential mode
784 diff:0 never set up diff mode 784 diff:0 never set up diff mode
@@ -899,7 +899,7 @@ boot setup can be:
899 ncr53c8xx=safe:y,mpar:y 899 ncr53c8xx=safe:y,mpar:y
900 ncr53c8xx=safe:y 900 ncr53c8xx=safe:y
901 901
902My personnal system works flawlessly with the following equivalent setup: 902My personal system works flawlessly with the following equivalent setup:
903 903
904 ncr53c8xx=mpar:y,spar:y,disc:y,specf:1,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\ 904 ncr53c8xx=mpar:y,spar:y,disc:y,specf:1,fsn:n,ultra:2,fsn:n,revprob:n,verb:1\
905 tags:32,sync:12,debug:0,burst:7,led:1,wide:1,settle:2,diff:0,irqm:0 905 tags:32,sync:12,debug:0,burst:7,led:1,wide:1,settle:2,diff:0,irqm:0
@@ -1151,7 +1151,7 @@ Driver files:
1151 1151
1152New driver versions are made available separately in order to allow testing 1152New driver versions are made available separately in order to allow testing
1153changes and new features prior to including them into the linux kernel 1153changes and new features prior to including them into the linux kernel
1154distribution. The following URL provides informations on latest avalaible 1154distribution. The following URL provides information on latest available
1155patches: 1155patches:
1156 1156
1157 ftp://ftp.tux.org/pub/people/gerard-roudier/README 1157 ftp://ftp.tux.org/pub/people/gerard-roudier/README
@@ -1382,7 +1382,7 @@ SCSI standards, chip cores functionnals and internal driver data structures.
1382You are not required to decode and understand them, unless you want to help 1382You are not required to decode and understand them, unless you want to help
1383maintain the driver code. 1383maintain the driver code.
1384 1384
138516. Synchonous transfer negotiation tables 138516. Synchronous transfer negotiation tables
1386 1386
1387Tables below have been created by calling the routine the driver uses 1387Tables below have been created by calling the routine the driver uses
1388for synchronisation negotiation timing calculation and chip setting. 1388for synchronisation negotiation timing calculation and chip setting.
diff --git a/Documentation/scsi/osst.txt b/Documentation/scsi/osst.txt
index ce574e7791ab..f536907e241d 100644
--- a/Documentation/scsi/osst.txt
+++ b/Documentation/scsi/osst.txt
@@ -56,8 +56,7 @@ Compile your kernel and install the modules.
56 56
57Now, your osst driver is inside the kernel or available as a module, 57Now, your osst driver is inside the kernel or available as a module,
58depending on your choice during kernel config. You may still need to create 58depending on your choice during kernel config. You may still need to create
59the device nodes by calling the Makedevs.sh script (see below) manually, 59the device nodes by calling the Makedevs.sh script (see below) manually.
60unless you use a devfs kernel, where this won't be needed.
61 60
62To load your module, you may use the command 61To load your module, you may use the command
63modprobe osst 62modprobe osst
diff --git a/Documentation/scsi/ppa.txt b/Documentation/scsi/ppa.txt
index 5d9223bc1bd5..067ac394e0b2 100644
--- a/Documentation/scsi/ppa.txt
+++ b/Documentation/scsi/ppa.txt
@@ -3,7 +3,7 @@
3General Iomega ZIP drive page for Linux: 3General Iomega ZIP drive page for Linux:
4http://www.torque.net/~campbell/ 4http://www.torque.net/~campbell/
5 5
6Driver achive for old drivers: 6Driver archive for old drivers:
7http://www.torque.net/~campbell/ppa/ 7http://www.torque.net/~campbell/ppa/
8 8
9Linux Parport page (parallel port) 9Linux Parport page (parallel port)
diff --git a/Documentation/scsi/scsi-changer.txt b/Documentation/scsi/scsi-changer.txt
index c132687b017a..d74bbd29eb3a 100644
--- a/Documentation/scsi/scsi-changer.txt
+++ b/Documentation/scsi/scsi-changer.txt
@@ -31,7 +31,7 @@ changers. But it allows to handle nearly all possible cases. It knows
31 media transport - this one shuffles around the media, i.e. the 31 media transport - this one shuffles around the media, i.e. the
32 transport arm. Also known as "picker". 32 transport arm. Also known as "picker".
33 storage - a slot which can hold a media. 33 storage - a slot which can hold a media.
34 import/export - the same as above, but is accessable from outside, 34 import/export - the same as above, but is accessible from outside,
35 i.e. there the operator (you !) can use this to 35 i.e. there the operator (you !) can use this to
36 fill in and remove media from the changer. 36 fill in and remove media from the changer.
37 Sometimes named "mailslot". 37 Sometimes named "mailslot".
diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt
index ce767b90bb0d..b964eef2f62f 100644
--- a/Documentation/scsi/scsi_eh.txt
+++ b/Documentation/scsi/scsi_eh.txt
@@ -160,7 +160,7 @@ ways.
160 - Fine-grained EH callbacks 160 - Fine-grained EH callbacks
161 LLDD can implement fine-grained EH callbacks and let SCSI 161 LLDD can implement fine-grained EH callbacks and let SCSI
162 midlayer drive error handling and call appropriate callbacks. 162 midlayer drive error handling and call appropriate callbacks.
163 This will be dicussed further in [2-1]. 163 This will be discussed further in [2-1].
164 164
165 - eh_strategy_handler() callback 165 - eh_strategy_handler() callback
166 This is one big callback which should perform whole error 166 This is one big callback which should perform whole error
@@ -194,7 +194,7 @@ lower layers and lower layers are ready to process or fail the scmd
194again. 194again.
195 195
196 To achieve these goals, EH performs recovery actions with increasing 196 To achieve these goals, EH performs recovery actions with increasing
197severity. Some actions are performed by issueing SCSI commands and 197severity. Some actions are performed by issuing SCSI commands and
198others are performed by invoking one of the following fine-grained 198others are performed by invoking one of the following fine-grained
199hostt EH callbacks. Callbacks may be omitted and omitted ones are 199hostt EH callbacks. Callbacks may be omitted and omitted ones are
200considered to fail always. 200considered to fail always.
diff --git a/Documentation/scsi/st.txt b/Documentation/scsi/st.txt
index 20e30cf31877..5ff65b184265 100644
--- a/Documentation/scsi/st.txt
+++ b/Documentation/scsi/st.txt
@@ -249,7 +249,7 @@ BOOT TIME CONFIGURATION
249 249
250If the driver is compiled into the kernel, the same parameters can be 250If the driver is compiled into the kernel, the same parameters can be
251also set using, e.g., the LILO command line. The preferred syntax is 251also set using, e.g., the LILO command line. The preferred syntax is
252is to use the same keyword used when loading as module but prepended 252to use the same keyword used when loading as module but prepended
253with 'st.'. For instance, to set the maximum number of scatter/gather 253with 'st.'. For instance, to set the maximum number of scatter/gather
254segments, the parameter 'st.max_sg_segs=xx' should be used (xx is the 254segments, the parameter 'st.max_sg_segs=xx' should be used (xx is the
255number of scatter/gather segments). 255number of scatter/gather segments).
@@ -369,7 +369,7 @@ MTSETDRVBUFFER
369 the device dependent address. It is recommended to set 369 the device dependent address. It is recommended to set
370 this flag unless there are tapes using the device 370 this flag unless there are tapes using the device
371 dependent (from the old times) (global) 371 dependent (from the old times) (global)
372 MT_ST_SYSV sets the SYSV sematics (mode) 372 MT_ST_SYSV sets the SYSV semantics (mode)
373 MT_ST_NOWAIT enables immediate mode (i.e., don't wait for 373 MT_ST_NOWAIT enables immediate mode (i.e., don't wait for
374 the command to finish) for some commands (e.g., rewind) 374 the command to finish) for some commands (e.g., rewind)
375 MT_ST_DEBUGGING debugging (global; debugging must be 375 MT_ST_DEBUGGING debugging (global; debugging must be
diff --git a/Documentation/scsi/sym53c8xx_2.txt b/Documentation/scsi/sym53c8xx_2.txt
index 7f516cdcd262..26c8a08ca3ea 100644
--- a/Documentation/scsi/sym53c8xx_2.txt
+++ b/Documentation/scsi/sym53c8xx_2.txt
@@ -67,7 +67,7 @@ under Linux is contained in 2 files named sym_glue.h and sym_glue.c.
67Other drivers files are intended not to depend on the Operating System 67Other drivers files are intended not to depend on the Operating System
68on which the driver is used. 68on which the driver is used.
69 69
70The history of this driver can be summerized as follows: 70The history of this driver can be summarized as follows:
71 71
721993: ncr driver written for 386bsd and FreeBSD by: 721993: ncr driver written for 386bsd and FreeBSD by:
73 Wolfgang Stanglmeier <wolf@cologne.de> 73 Wolfgang Stanglmeier <wolf@cologne.de>
@@ -684,7 +684,7 @@ Field H : SCNTL3 Scsi Control Register 3
684 Contains the setting of timing values for both asynchronous and 684 Contains the setting of timing values for both asynchronous and
685 synchronous data transfers. 685 synchronous data transfers.
686Field I : SCNTL4 Scsi Control Register 4 686Field I : SCNTL4 Scsi Control Register 4
687 Only meaninful for 53C1010 Ultra3 controllers. 687 Only meaningful for 53C1010 Ultra3 controllers.
688 688
689Understanding Fields J, K, L and dumps requires to have good knowledge of 689Understanding Fields J, K, L and dumps requires to have good knowledge of
690SCSI standards, chip cores functionnals and internal driver data structures. 690SCSI standards, chip cores functionnals and internal driver data structures.
diff --git a/Documentation/scsi/tmscsim.txt b/Documentation/scsi/tmscsim.txt
index df7a02bfb5bf..8b2168aa4fc7 100644
--- a/Documentation/scsi/tmscsim.txt
+++ b/Documentation/scsi/tmscsim.txt
@@ -27,7 +27,7 @@ Tekram DC390(T) adapter. This is where the name comes from: tm = Tekram
27scsi = SCSI driver, m = AMD (?) as opposed to w for the DC390W/U/F 27scsi = SCSI driver, m = AMD (?) as opposed to w for the DC390W/U/F
28(NCR53c8X5, X=2/7) driver. Yes, there was also a driver for the latter, 28(NCR53c8X5, X=2/7) driver. Yes, there was also a driver for the latter,
29tmscsiw, which supported DC390W/U/F adapters. It's not maintained any more, 29tmscsiw, which supported DC390W/U/F adapters. It's not maintained any more,
30as the ncr53c8xx is perfectly supporting these adpaters since some time. 30as the ncr53c8xx is perfectly supporting these adapters since some time.
31 31
32The driver first appeared in April 1996, exclusively supported the DC390 32The driver first appeared in April 1996, exclusively supported the DC390
33and has been enhanced since then in various steps. In May 1998 support for 33and has been enhanced since then in various steps. In May 1998 support for
@@ -381,7 +381,7 @@ Please see http://www.garloff.de/kurt/linux/dc390/problems.html
381 replaced by the dev index of your scanner). You may try to reset your SCSI 381 replaced by the dev index of your scanner). You may try to reset your SCSI
382 bus afterwards (echo "RESET" >/proc/scsi/tmscsim/?). 382 bus afterwards (echo "RESET" >/proc/scsi/tmscsim/?).
383 The problem seems to be solved as of 2.0d18, thanks to Andreas Rick. 383 The problem seems to be solved as of 2.0d18, thanks to Andreas Rick.
384* If there is a valid partition table, the driver will use it for determing 384* If there is a valid partition table, the driver will use it for determining
385 the mapping. If there's none, a reasonable mapping (Symbios-like) will be 385 the mapping. If there's none, a reasonable mapping (Symbios-like) will be
386 assumed. Other operating systems may not like this mapping, though 386 assumed. Other operating systems may not like this mapping, though
387 it's consistent with the BIOS' behaviour. Old DC390 drivers ignored the 387 it's consistent with the BIOS' behaviour. Old DC390 drivers ignored the
diff --git a/Documentation/seclvl.txt b/Documentation/seclvl.txt
deleted file mode 100644
index 97274d122d0e..000000000000
--- a/Documentation/seclvl.txt
+++ /dev/null
@@ -1,97 +0,0 @@
1BSD Secure Levels Linux Security Module
2Michael A. Halcrow <mike@halcrow.us>
3
4
5Introduction
6
7Under the BSD Secure Levels security model, sets of policies are
8associated with levels. Levels range from -1 to 2, with -1 being the
9weakest and 2 being the strongest. These security policies are
10enforced at the kernel level, so not even the superuser is able to
11disable or circumvent them. This hardens the machine against attackers
12who gain root access to the system.
13
14
15Levels and Policies
16
17Level -1 (Permanently Insecure):
18 - Cannot increase the secure level
19
20Level 0 (Insecure):
21 - Cannot ptrace the init process
22
23Level 1 (Default):
24 - /dev/mem and /dev/kmem are read-only
25 - IMMUTABLE and APPEND extended attributes, if set, may not be unset
26 - Cannot load or unload kernel modules
27 - Cannot write directly to a mounted block device
28 - Cannot perform raw I/O operations
29 - Cannot perform network administrative tasks
30 - Cannot setuid any file
31
32Level 2 (Secure):
33 - Cannot decrement the system time
34 - Cannot write to any block device, whether mounted or not
35 - Cannot unmount any mounted filesystems
36
37
38Compilation
39
40To compile the BSD Secure Levels LSM, seclvl.ko, enable the
41SECURITY_SECLVL configuration option. This is found under Security
42options -> BSD Secure Levels in the kernel configuration menu.
43
44
45Basic Usage
46
47Once the machine is in a running state, with all the necessary modules
48loaded and all the filesystems mounted, you can load the seclvl.ko
49module:
50
51# insmod seclvl.ko
52
53The module defaults to secure level 1, except when compiled directly
54into the kernel, in which case it defaults to secure level 0. To raise
55the secure level to 2, the administrator writes ``2'' to the
56seclvl/seclvl file under the sysfs mount point (assumed to be /sys in
57these examples):
58
59# echo -n "2" > /sys/seclvl/seclvl
60
61Alternatively, you can initialize the module at secure level 2 with
62the initlvl module parameter:
63
64# insmod seclvl.ko initlvl=2
65
66At this point, it is impossible to remove the module or reduce the
67secure level. If the administrator wishes to have the option of doing
68so, he must provide a module parameter, sha1_passwd, that specifies
69the SHA1 hash of the password that can be used to reduce the secure
70level to 0.
71
72To generate this SHA1 hash, the administrator can use OpenSSL:
73
74# echo -n "boogabooga" | openssl sha1
75abeda4e0f33defa51741217592bf595efb8d289c
76
77In order to use password-instigated secure level reduction, the SHA1
78crypto module must be loaded or compiled into the kernel:
79
80# insmod sha1.ko
81
82The administrator can then insmod the seclvl module, including the
83SHA1 hash of the password:
84
85# insmod seclvl.ko
86 sha1_passwd=abeda4e0f33defa51741217592bf595efb8d289c
87
88To reduce the secure level, write the password to seclvl/passwd under
89your sysfs mount point:
90
91# echo -n "boogabooga" > /sys/seclvl/passwd
92
93The September 2004 edition of Sys Admin Magazine has an article about
94the BSD Secure Levels LSM. I encourage you to refer to that article
95for a more in-depth treatment of this security module:
96
97http://www.samag.com/documents/s=9304/sam0409a/0409a.htm
diff --git a/Documentation/sh/kgdb.txt b/Documentation/sh/kgdb.txt
index 5b04f7f306fc..05b4ba89d28c 100644
--- a/Documentation/sh/kgdb.txt
+++ b/Documentation/sh/kgdb.txt
@@ -69,7 +69,7 @@ might specify the halt option:
69 69
70 kgdb=halt 70 kgdb=halt
71 71
72Boot the TARGET machinem, which will appear to hang. 72Boot the TARGET machine, which will appear to hang.
73 73
74On your DEVELOPMENT machine, cd to the source directory and run the gdb 74On your DEVELOPMENT machine, cd to the source directory and run the gdb
75program. (This is likely to be a cross GDB which runs on your host but 75program. (This is likely to be a cross GDB which runs on your host but
diff --git a/Documentation/sh/new-machine.txt b/Documentation/sh/new-machine.txt
index eb2dd2e6993b..73988e0d112b 100644
--- a/Documentation/sh/new-machine.txt
+++ b/Documentation/sh/new-machine.txt
@@ -41,11 +41,6 @@ Board-specific code:
41 | 41 |
42 .. more boards here ... 42 .. more boards here ...
43 43
44It should also be noted that each board is required to have some certain
45headers. At the time of this writing, io.h is the only thing that needs
46to be provided for each board, and can generally just reference generic
47functions (with the exception of isa_port2addr).
48
49Next, for companion chips: 44Next, for companion chips:
50. 45.
51`-- arch 46`-- arch
@@ -104,12 +99,13 @@ and then populate that with sub-directories for each member of the family.
104Both the Solution Engine and the hp6xx boards are an example of this. 99Both the Solution Engine and the hp6xx boards are an example of this.
105 100
106After you have setup your new arch/sh/boards/ directory, remember that you 101After you have setup your new arch/sh/boards/ directory, remember that you
107also must add a directory in include/asm-sh for headers localized to this 102should also add a directory in include/asm-sh for headers localized to this
108board. In order to interoperate seamlessly with the build system, it's best 103board (if there are going to be more than one). In order to interoperate
109to have this directory the same as the arch/sh/boards/ directory name, 104seamlessly with the build system, it's best to have this directory the same
110though if your board is again part of a family, the build system has ways 105as the arch/sh/boards/ directory name, though if your board is again part of
111of dealing with this, and you can feel free to name the directory after 106a family, the build system has ways of dealing with this (via incdir-y
112the family member itself. 107overloading), and you can feel free to name the directory after the family
108member itself.
113 109
114There are a few things that each board is required to have, both in the 110There are a few things that each board is required to have, both in the
115arch/sh/boards and the include/asm-sh/ heirarchy. In order to better 111arch/sh/boards and the include/asm-sh/ heirarchy. In order to better
@@ -122,6 +118,7 @@ might look something like:
122 * arch/sh/boards/vapor/setup.c - Setup code for imaginary board 118 * arch/sh/boards/vapor/setup.c - Setup code for imaginary board
123 */ 119 */
124#include <linux/init.h> 120#include <linux/init.h>
121#include <asm/rtc.h> /* for board_time_init() */
125 122
126const char *get_system_type(void) 123const char *get_system_type(void)
127{ 124{
@@ -152,79 +149,57 @@ int __init platform_setup(void)
152} 149}
153 150
154Our new imaginary board will also have to tie into the machvec in order for it 151Our new imaginary board will also have to tie into the machvec in order for it
155to be of any use. Currently the machvec is slowly on its way out, but is still 152to be of any use.
156required for the time being. As such, let us take a look at what needs to be
157done for the machvec assignment.
158 153
159machvec functions fall into a number of categories: 154machvec functions fall into a number of categories:
160 155
161 - I/O functions to IO memory (inb etc) and PCI/main memory (readb etc). 156 - I/O functions to IO memory (inb etc) and PCI/main memory (readb etc).
162 - I/O remapping functions (ioremap etc) 157 - I/O mapping functions (ioport_map, ioport_unmap, etc).
163 - some initialisation functions 158 - a 'heartbeat' function.
164 - a 'heartbeat' function 159 - PCI and IRQ initialization routines.
165 - some miscellaneous flags 160 - Consistent allocators (for boards that need special allocators,
166 161 particularly for allocating out of some board-specific SRAM for DMA
167The tree can be built in two ways: 162 handles).
168 - as a fully generic build. All drivers are linked in, and all functions 163
169 go through the machvec 164There are machvec functions added and removed over time, so always be sure to
170 - as a machine specific build. In this case only the required drivers 165consult include/asm-sh/machvec.h for the current state of the machvec.
171 will be linked in, and some macros may be redefined to not go through 166
172 the machvec where performance is important (in particular IO functions). 167The kernel will automatically wrap in generic routines for undefined function
173 168pointers in the machvec at boot time, as machvec functions are referenced
174There are three ways in which IO can be performed: 169unconditionally throughout most of the tree. Some boards have incredibly
175 - none at all. This is really only useful for the 'unknown' machine type, 170sparse machvecs (such as the dreamcast and sh03), whereas others must define
176 which us designed to run on a machine about which we know nothing, and 171virtually everything (rts7751r2d).
177 so all all IO instructions do nothing. 172
178 - fully custom. In this case all IO functions go to a machine specific 173Adding a new machine is relatively trivial (using vapor as an example):
179 set of functions which can do what they like 174
180 - a generic set of functions. These will cope with most situations, 175If the board-specific definitions are quite minimalistic, as is the case for
181 and rely on a single function, mv_port2addr, which is called through the 176the vast majority of boards, simply having a single board-specific header is
182 machine vector, and converts an IO address into a memory address, which 177sufficient.
183 can be read from/written to directly. 178
184 179 - add a new file include/asm-sh/vapor.h which contains prototypes for
185Thus adding a new machine involves the following steps (I will assume I am
186adding a machine called vapor):
187
188 - add a new file include/asm-sh/vapor/io.h which contains prototypes for
189 any machine specific IO functions prefixed with the machine name, for 180 any machine specific IO functions prefixed with the machine name, for
190 example vapor_inb. These will be needed when filling out the machine 181 example vapor_inb. These will be needed when filling out the machine
191 vector. 182 vector.
192 183
193 This is the minimum that is required, however there are ample 184 Note that these prototypes are generated automatically by setting
194 opportunities to optimise this. In particular, by making the prototypes 185 __IO_PREFIX to something sensible. A typical example would be:
195 inline function definitions, it is possible to inline the function when 186
196 building machine specific versions. Note that the machine vector 187 #define __IO_PREFIX vapor
197 functions will still be needed, so that a module built for a generic 188 #include <asm/io_generic.h>
198 setup can be loaded. 189
199 190 somewhere in the board-specific header. Any boards being ported that still
200 - add a new file arch/sh/boards/vapor/mach.c. This contains the definition 191 have a legacy io.h should remove it entirely and switch to the new model.
201 of the machine vector. When building the machine specific version, this 192
202 will be the real machine vector (via an alias), while in the generic 193 - Add machine vector definitions to the board's setup.c. At a bare minimum,
203 version is used to initialise the machine vector, and then freed, by 194 this must be defined as something like:
204 making it initdata. This should be defined as: 195
205 196 struct sh_machine_vector mv_vapor __initmv = {
206 struct sh_machine_vector mv_vapor __initmv = { 197 .mv_name = "vapor",
207 .mv_name = "vapor", 198 };
208 } 199 ALIAS_MV(vapor)
209 ALIAS_MV(vapor) 200
210 201 - finally add a file arch/sh/boards/vapor/io.c, which contains definitions of
211 - finally add a file arch/sh/boards/vapor/io.c, which contains 202 the machine specific io functions (if there are enough to warrant it).
212 definitions of the machine specific io functions.
213
214A note about initialisation functions. Three initialisation functions are
215provided in the machine vector:
216 - mv_arch_init - called very early on from setup_arch
217 - mv_init_irq - called from init_IRQ, after the generic SH interrupt
218 initialisation
219 - mv_init_pci - currently not used
220
221Any other remaining functions which need to be called at start up can be
222added to the list using the __initcalls macro (or module_init if the code
223can be built as a module). Many generic drivers probe to see if the device
224they are targeting is present, however this may not always be appropriate,
225so a flag can be added to the machine vector which will be set on those
226machines which have the hardware in question, reducing the probe to a
227single conditional.
228 203
2293. Hooking into the Build System 2043. Hooking into the Build System
230================================ 205================================
@@ -303,4 +278,3 @@ which will in turn copy the defconfig for this board, run it through
303oldconfig (prompting you for any new options since the time of creation), 278oldconfig (prompting you for any new options since the time of creation),
304and start you on your way to having a functional kernel for your new 279and start you on your way to having a functional kernel for your new
305board. 280board.
306
diff --git a/Documentation/sh/register-banks.txt b/Documentation/sh/register-banks.txt
new file mode 100644
index 000000000000..a6719f2f6594
--- /dev/null
+++ b/Documentation/sh/register-banks.txt
@@ -0,0 +1,33 @@
1 Notes on register bank usage in the kernel
2 ==========================================
3
4Introduction
5------------
6
7The SH-3 and SH-4 CPU families traditionally include a single partial register
8bank (selected by SR.RB, only r0 ... r7 are banked), whereas other families
9may have more full-featured banking or simply no such capabilities at all.
10
11SR.RB banking
12-------------
13
14In the case of this type of banking, banked registers are mapped directly to
15r0 ... r7 if SR.RB is set to the bank we are interested in, otherwise ldc/stc
16can still be used to reference the banked registers (as r0_bank ... r7_bank)
17when in the context of another bank. The developer must keep the SR.RB value
18in mind when writing code that utilizes these banked registers, for obvious
19reasons. Userspace is also not able to poke at the bank1 values, so these can
20be used rather effectively as scratch registers by the kernel.
21
22Presently the kernel uses several of these registers.
23
24 - r0_bank, r1_bank (referenced as k0 and k1, used for scratch
25 registers when doing exception handling).
26 - r2_bank (used to track the EXPEVT/INTEVT code)
27 - Used by do_IRQ() and friends for doing irq mapping based off
28 of the interrupt exception vector jump table offset
29 - r6_bank (global interrupt mask)
30 - The SR.IMASK interrupt handler makes use of this to set the
31 interrupt priority level (used by local_irq_enable())
32 - r7_bank (current)
33
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index e6b57dd46a4f..138673a907f5 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -57,11 +57,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
57 - Default: 1 57 - Default: 1
58 - For auto-loading more than one card, specify this 58 - For auto-loading more than one card, specify this
59 option together with snd-card-X aliases. 59 option together with snd-card-X aliases.
60 device_mode
61 - permission mask for dynamic sound device filesystem
62 - This is available only when DEVFS is enabled
63 - Default: 0666
64 - E.g.: device_mode=0660
65 60
66 61
67 Module snd-pcm-oss 62 Module snd-pcm-oss
@@ -1268,8 +1263,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1268 1263
1269 Note: on some notebooks the buffer address cannot be detected 1264 Note: on some notebooks the buffer address cannot be detected
1270 automatically, or causes hang-up during initialization. 1265 automatically, or causes hang-up during initialization.
1271 In such a case, specify the buffer top address explicity via 1266 In such a case, specify the buffer top address explicitly via
1272 buffer_top option. 1267 the buffer_top option.
1273 For example, 1268 For example,
1274 Sony F250: buffer_top=0x25a800 1269 Sony F250: buffer_top=0x25a800
1275 Sony F270: buffer_top=0x272800 1270 Sony F270: buffer_top=0x272800
@@ -1887,7 +1882,7 @@ options snd-ens1371 index=1
1887# OSS/Free portion 1882# OSS/Free portion
1888alias sound-slot-0 snd-interwave 1883alias sound-slot-0 snd-interwave
1889alias sound-slot-1 snd-ens1371 1884alias sound-slot-1 snd-ens1371
1890----- /etc/moprobe.conf 1885----- /etc/modprobe.conf
1891 1886
1892In this example, the interwave card is always loaded as the first card 1887In this example, the interwave card is always loaded as the first card
1893(index 0) and ens1371 as the second (index 1). 1888(index 0) and ens1371 as the second (index 1).
@@ -1915,21 +1910,6 @@ Please note that the device mapping above may be varied via the module
1915options of snd-pcm-oss module. 1910options of snd-pcm-oss module.
1916 1911
1917 1912
1918DEVFS support
1919=============
1920
1921The ALSA driver fully supports the devfs extension.
1922You should add lines below to your devfsd.conf file:
1923
1924LOOKUP snd MODLOAD ACTION snd
1925REGISTER ^sound/.* PERMISSIONS root.audio 660
1926REGISTER ^snd/.* PERMISSIONS root.audio 660
1927
1928Warning: These lines assume that you have the audio group in your system.
1929 Otherwise replace audio word with another group name (root for
1930 example).
1931
1932
1933Proc interfaces (/proc/asound) 1913Proc interfaces (/proc/asound)
1934============================== 1914==============================
1935 1915
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt
index b535c2a198f8..e40cce83327c 100644
--- a/Documentation/sound/alsa/Audiophile-Usb.txt
+++ b/Documentation/sound/alsa/Audiophile-Usb.txt
@@ -126,7 +126,7 @@ Here is a list of supported device_setup values for this device:
126 - Alsa driver default mode 126 - Alsa driver default mode
127 - maintains backward compatibility with setups that do not use this 127 - maintains backward compatibility with setups that do not use this
128 parameter by not introducing any change 128 parameter by not introducing any change
129 - results sometimes in corrupted sound as decribed earlier 129 - results sometimes in corrupted sound as described earlier
130 * device_setup=0x01 130 * device_setup=0x01
131 - 16bits 48kHz mode with Di disabled 131 - 16bits 48kHz mode with Di disabled
132 - Ai,Ao,Do can be used at the same time 132 - Ai,Ao,Do can be used at the same time
diff --git a/Documentation/sound/alsa/CMIPCI.txt b/Documentation/sound/alsa/CMIPCI.txt
index 1872e24442a4..4b2b15387056 100644
--- a/Documentation/sound/alsa/CMIPCI.txt
+++ b/Documentation/sound/alsa/CMIPCI.txt
@@ -16,11 +16,11 @@ As default, ALSA driver assigns the first PCM device (i.e. hw:0,0 for
16card#0) for front and 4/6ch playbacks, while the second PCM device 16card#0) for front and 4/6ch playbacks, while the second PCM device
17(hw:0,1) is assigned to the second DAC for rear playback. 17(hw:0,1) is assigned to the second DAC for rear playback.
18 18
19There are slight difference between two DACs. 19There are slight differences between the two DACs:
20 20
21- The first DAC supports U8 and S16LE formats, while the second DAC 21- The first DAC supports U8 and S16LE formats, while the second DAC
22 supports only S16LE. 22 supports only S16LE.
23- The seconde DAC supports only two channel stereo. 23- The second DAC supports only two channel stereo.
24 24
25Please note that the CM8x38 DAC doesn't support continuous playback 25Please note that the CM8x38 DAC doesn't support continuous playback
26rate but only fixed rates: 5512, 8000, 11025, 16000, 22050, 32000, 26rate but only fixed rates: 5512, 8000, 11025, 16000, 22050, 32000,
@@ -76,7 +76,7 @@ in alsa-lib. For example, you can play a WAV file with 6 channels like
76 76
77 % aplay -Dsurround51 sixchannels.wav 77 % aplay -Dsurround51 sixchannels.wav
78 78
79For programmin the 4/6 channel playback, you need to specify the PCM 79For programming the 4/6 channel playback, you need to specify the PCM
80channels as you like and set the format S16LE. For example, for playback 80channels as you like and set the format S16LE. For example, for playback
81with 4 channels, 81with 4 channels,
82 82
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index 4807ef79a94d..077fbe25ebf4 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -5486,7 +5486,7 @@ struct _snd_pcm_runtime {
5486 <chapter id="power-management"> 5486 <chapter id="power-management">
5487 <title>Power Management</title> 5487 <title>Power Management</title>
5488 <para> 5488 <para>
5489 If the chip is supposed to work with with suspend/resume 5489 If the chip is supposed to work with suspend/resume
5490 functions, you need to add the power-management codes to the 5490 functions, you need to add the power-management codes to the
5491 driver. The additional codes for the power-management should be 5491 driver. The additional codes for the power-management should be
5492 <function>ifdef</function>'ed with 5492 <function>ifdef</function>'ed with
diff --git a/Documentation/sound/alsa/MIXART.txt b/Documentation/sound/alsa/MIXART.txt
index 5cb970612870..ef42c44fa1f2 100644
--- a/Documentation/sound/alsa/MIXART.txt
+++ b/Documentation/sound/alsa/MIXART.txt
@@ -31,7 +31,7 @@ With a miXart8AES/EBU there is in addition 1 stereo digital input
31Formats 31Formats
32------- 32-------
33U8, S16_LE, S16_BE, S24_3LE, S24_3BE, FLOAT_LE, FLOAT_BE 33U8, S16_LE, S16_BE, S24_3LE, S24_3BE, FLOAT_LE, FLOAT_BE
34Sample rates : 8000 - 48000 Hz continously 34Sample rates : 8000 - 48000 Hz continuously
35 35
36Playback 36Playback
37-------- 37--------
@@ -39,7 +39,7 @@ For instance the playback devices are configured to have max. 4
39substreams performing hardware mixing. This could be changed to a 39substreams performing hardware mixing. This could be changed to a
40maximum of 24 substreams if wished. 40maximum of 24 substreams if wished.
41Mono files will be played on the left and right channel. Each channel 41Mono files will be played on the left and right channel. Each channel
42can be muted for each stream to use 8 analog/digital outputs seperately. 42can be muted for each stream to use 8 analog/digital outputs separately.
43 43
44Capture 44Capture
45------- 45-------
@@ -97,4 +97,4 @@ COPYRIGHT
97========= 97=========
98 98
99Copyright (c) 2003 Digigram SA <alsa@digigram.com> 99Copyright (c) 2003 Digigram SA <alsa@digigram.com>
100Distributalbe under GPL. 100Distributable under GPL.
diff --git a/Documentation/sound/alsa/Procfile.txt b/Documentation/sound/alsa/Procfile.txt
index 1fe48846d78f..f738b296440a 100644
--- a/Documentation/sound/alsa/Procfile.txt
+++ b/Documentation/sound/alsa/Procfile.txt
@@ -71,7 +71,7 @@ The status of MIDI I/O is found in midi* files. It shows the device
71name and the received/transmitted bytes through the MIDI device. 71name and the received/transmitted bytes through the MIDI device.
72 72
73When the card is equipped with AC97 codecs, there are codec97#* 73When the card is equipped with AC97 codecs, there are codec97#*
74subdirectories (desribed later). 74subdirectories (described later).
75 75
76When the OSS mixer emulation is enabled (and the module is loaded), 76When the OSS mixer emulation is enabled (and the module is loaded),
77oss_mixer file appears here, too. This shows the current mapping of 77oss_mixer file appears here, too. This shows the current mapping of
@@ -161,12 +161,12 @@ seq/drivers
161 Lists the currently available ALSA sequencer drivers. 161 Lists the currently available ALSA sequencer drivers.
162 162
163seq/clients 163seq/clients
164 Shows the list of currently available sequencer clinets and 164 Shows the list of currently available sequencer clients and
165 ports. The connection status and the running status are shown 165 ports. The connection status and the running status are shown
166 in this file, too. 166 in this file, too.
167 167
168seq/queues 168seq/queues
169 Lists the currently allocated/running sequener queues. 169 Lists the currently allocated/running sequencer queues.
170 170
171seq/timer 171seq/timer
172 Lists the currently allocated/running sequencer timers. 172 Lists the currently allocated/running sequencer timers.
@@ -182,10 +182,10 @@ When the problem is related with PCM, first try to turn on xrun_debug
182mode. This will give you the kernel messages when and where xrun 182mode. This will give you the kernel messages when and where xrun
183happened. 183happened.
184 184
185If it's really a bug, report it with the following information 185If it's really a bug, report it with the following information:
186 186
187 - the name of the driver/card, show in /proc/asound/cards 187 - the name of the driver/card, show in /proc/asound/cards
188 - the reigster dump, if available (e.g. card*/cmipci) 188 - the register dump, if available (e.g. card*/cmipci)
189 189
190when it's a PCM problem, 190when it's a PCM problem,
191 191
diff --git a/Documentation/sound/oss/AWE32 b/Documentation/sound/oss/AWE32
deleted file mode 100644
index cb179bfeb522..000000000000
--- a/Documentation/sound/oss/AWE32
+++ /dev/null
@@ -1,76 +0,0 @@
1 Installing and using Creative AWE midi sound under Linux.
2
3This documentation is devoted to the Creative Sound Blaster AWE32, AWE64 and
4SB32.
5
61) Make sure you have an ORIGINAL Creative SB32, AWE32 or AWE64 card. This
7 is important, because the driver works only with real Creative cards.
8
92) The first thing you need to do is re-compile your kernel with support for
10 your sound card. Run your favourite tool to configure the kernel and when
11 you get to the "Sound" menu you should enable support for the following:
12
13 Sound card support,
14 OSS sound modules,
15 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support,
16 AWE32 synth
17
18 If your card is "Plug and Play" you will also need to enable these two
19 options, found under the "Plug and Play configuration" menu:
20
21 Plug and Play support
22 ISA Plug and Play support
23
24 Now compile and install the kernel in normal fashion. If you don't know
25 how to do this you can find instructions for this in the README file
26 located in the root directory of the kernel source.
27
283) Before you can start playing midi files you will have to load a sound
29 bank file. The utility needed for doing this is called "sfxload", and it
30 is one of the utilities found in a package called "awesfx". If this
31 package is not available in your distribution you can download the AWE
32 snapshot from Creative Labs Open Source website:
33
34 http://www.opensource.creative.com/snapshot.html
35
36 Once you have unpacked the AWE snapshot you will see a "awesfx"
37 directory. Follow the instructions in awesfx/docs/INSTALL to install the
38 utilities in this package. After doing this, sfxload should be installed
39 as:
40
41 /usr/local/bin/sfxload
42
43 To enable AWE general midi synthesis you should also get the sound bank
44 file for general midi from:
45
46 http://members.xoom.com/yar/synthgm.sbk.gz
47
48 Copy it to a directory of your choice, and unpack it there.
49
504) Edit /etc/modprobe.conf, and insert the following lines at the end of the
51 file:
52
53 alias sound-slot-0 sb
54 alias sound-service-0-1 awe_wave
55 install awe_wave /sbin/modprobe --first-time -i awe_wave && /usr/local/bin/sfxload PATH_TO_SOUND_BANK_FILE
56
57 You will of course have to change "PATH_TO_SOUND_BANK_FILE" to the full
58 path of of the sound bank file. That will enable the Sound Blaster and AWE
59 wave synthesis. To play midi files you should get one of these programs if
60 you don't already have them:
61
62 Playmidi: http://playmidi.openprojects.net
63
64 AWEMidi Player (drvmidi) Included in the previously mentioned AWE
65 snapshot.
66
67 You will probably have to pass the "-e" switch to playmidi to have it use
68 your midi device. drvmidi should work without switches.
69
70 If something goes wrong please e-mail me. All comments and suggestions are
71 welcome.
72
73 Yaroslav Rosomakho (alons55@dialup.ptt.ru)
74 http://www.yar.opennet.ru
75
76Last Updated: Feb 3 2001
diff --git a/Documentation/sound/oss/CMI8338 b/Documentation/sound/oss/CMI8338
deleted file mode 100644
index 387d058c3f95..000000000000
--- a/Documentation/sound/oss/CMI8338
+++ /dev/null
@@ -1,85 +0,0 @@
1Audio driver for CM8338/CM8738 chips by Chen-Li Tien
2
3
4HARDWARE SUPPORTED
5================================================================================
6C-Media CMI8338
7C-Media CMI8738
8On-board C-Media chips
9
10
11STEPS TO BUILD DRIVER
12================================================================================
13
14 1. Backup the Config.in and Makefile in the sound driver directory
15 (/usr/src/linux/driver/sound).
16 The Configure.help provide help when you config driver in step
17 4, please backup the original one (/usr/src/linux/Document) and
18 copy this file.
19 The cmpci is document for the driver in detail, please copy it
20 to /usr/src/linux/Document/sound so you can refer it. Backup if
21 there is already one.
22
23 2. Extract the tar file by 'tar xvzf cmpci-xx.tar.gz' in the above
24 directory.
25
26 3. Change directory to /usr/src/linux
27
28 4. Config cm8338 driver by 'make menuconfig', 'make config' or
29 'make xconfig' command.
30
31 5. Please select Sound Card (CONFIG_SOUND=m) support and CMPCI
32 driver (CONFIG_SOUND_CMPCI=m) as modules. Resident mode not tested.
33 For driver option, please refer 'DRIVER PARAMETER'
34
35 6. Compile the kernel if necessary.
36
37 7. Compile the modules by 'make modules'.
38
39 8. Install the modules by 'make modules_install'
40
41
42INSTALL DRIVER
43================================================================================
44
45 1. Before first time to run the driver, create module dependency by
46 'depmod -a'
47
48 2. To install the driver manually, enter 'modprobe cmpci'.
49
50 3. Driver installation for various distributions:
51
52 a. Slackware 4.0
53 Add the 'modprobe cmpci' command in your /etc/rc.d/rc.modules
54 file.so you can start the driver automatically each time booting.
55
56 b. Caldera OpenLinux 2.2
57 Use LISA to load the cmpci module.
58
59 c. RedHat 6.0 and S.u.S.E. 6.1
60 Add following command in /etc/conf.modules:
61
62 alias sound cmpci
63
64 also visit http://www.cmedia.com.tw for installation instruction.
65
66DRIVER PARAMETER
67================================================================================
68
69 Some functions for the cm8738 can be configured in Kernel Configuration
70 or modules parameters. Set these parameters to 1 to enable.
71
72 mpuio: I/O ports base for MPU-401, 0 if disabled.
73 fmio: I/O ports base for OPL-3, 0 if disabled.
74 spdif_inverse:Inverse the S/PDIF-in signal, this depends on your
75 CD-ROM or DVD-ROM.
76 spdif_loop: Enable S/PDIF loop, this route S/PDIF-in to S/PDIF-out
77 directly.
78 speakers: Number of speakers used.
79 use_line_as_rear:Enable this if you want to use line-in as
80 rear-out.
81 use_line_as_bass:Enable this if you want to use line-in as
82 bass-out.
83 joystick: Enable joystick. You will need to install Linux joystick
84 driver.
85
diff --git a/Documentation/sound/oss/INSTALL.awe b/Documentation/sound/oss/INSTALL.awe
deleted file mode 100644
index 310f42ca1e83..000000000000
--- a/Documentation/sound/oss/INSTALL.awe
+++ /dev/null
@@ -1,134 +0,0 @@
1================================================================
2 INSTALLATION OF AWE32 SOUND DRIVER FOR LINUX
3 Takashi Iwai <iwai@ww.uni-erlangen.de>
4================================================================
5
6----------------------------------------------------------------
7* Attention to SB-PnP Card Users
8
9If you're using PnP cards, the initialization of PnP is required
10before loading this driver. You have now three options:
11 1. Use isapnptools.
12 2. Use in-kernel isapnp support.
13 3. Initialize PnP on DOS/Windows, then boot linux by loadlin.
14In this document, only the case 1 case is treated.
15
16----------------------------------------------------------------
17* Installation on Red Hat 5.0 Sound Driver
18
19Please use install-rh.sh under RedHat5.0 directory.
20DO NOT USE install.sh below.
21See INSTALL.RH for more details.
22
23----------------------------------------------------------------
24* Installation/Update by Shell Script
25
26 1. Become root
27
28 % su
29
30 2. If you have never configured the kernel tree yet, run make config
31 once (to make dependencies and symlinks).
32
33 # cd /usr/src/linux
34 # make xconfig
35
36 3. Run install.sh script
37
38 # sh ./install.sh
39
40 4. Configure your kernel
41
42 (for Linux 2.[01].x user)
43 # cd /usr/src/linux
44 # make xconfig (or make menuconfig)
45
46 (for Linux 1.2.x user)
47 # cd /usr/src/linux
48 # make config
49
50 Answer YES to both "lowlevel drivers" and "AWE32 wave synth" items
51 in Sound menu. ("lowlevel drivers" will appear only in 2.x
52 kernel.)
53
54 5. Make your kernel (and modules), and install them as usual.
55
56 5a. make kernel image
57 # make zImage
58
59 5b. make modules and install them
60 # make modules && make modules_install
61
62 5c. If you're using lilo, copy the kernel image and run lilo.
63 Otherwise, copy the kernel image to suitable directory or
64 media for your system.
65
66 6. Reboot the kernel if necessary.
67 - If you updated only the modules, you don't have to reboot
68 the system. Just remove the old sound modules here.
69 in
70 # rmmod sound.o (linux-2.0 or OSS/Free)
71 # rmmod awe_wave.o (linux-2.1)
72
73 7. If your AWE card is a PnP and not initialized yet, you'll have to
74 do it by isapnp tools. Otherwise, skip to 8.
75
76 This section described only a brief explanation. For more
77 details, please see the AWE64-Mini-HOWTO or isapnp tools FAQ.
78
79 7a. If you have no isapnp.conf file, generate it by pnpdump.
80 Otherwise, skip to 7d.
81 # pnpdump > /etc/isapnp.conf
82
83 7b. Edit isapnp.conf file. Comment out the appropriate
84 lines containing desirable I/O ports, DMA and IRQs.
85 Don't forget to enable (ACT Y) line.
86
87 7c. Add two i/o ports (0xA20 and 0xE20) in WaveTable part.
88 ex)
89 (CONFIGURE CTL0048/58128 (LD 2
90 # ANSI string -->WaveTable<--
91 (IO 0 (BASE 0x0620))
92 (IO 1 (BASE 0x0A20))
93 (IO 2 (BASE 0x0E20))
94 (ACT Y)
95 ))
96
97 7d. Load the config file.
98 CAUTION: This will reset all PnP cards!
99
100 # isapnp /etc/isapnp.conf
101
102 8. Load the sound module (if you configured it as a module):
103
104 for 2.0 kernel or OSS/Free monolithic module:
105
106 # modprobe sound.o
107
108 for 2.1 kernel:
109
110 # modprobe sound
111 # insmod uart401
112 # insmod sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
113 (These values depend on your settings.)
114 # insmod awe_wave
115 (Be sure to load awe_wave after sb!)
116
117 See Documentation/sound/oss/AWE32 for
118 more details.
119
120 9. (only for obsolete systems) If you don't have /dev/sequencer
121 device file, make it according to Readme.linux file on
122 /usr/src/linux/drivers/sound. (Run a shell script included in
123 that file). <-- This file no longer exists in the recent kernels!
124
125 10. OK, load your own soundfont file, and enjoy MIDI!
126
127 % sfxload synthgm.sbk
128 % drvmidi foo.mid
129
130 11. For more advanced use (eg. dynamic loading, virtual bank and
131 etc.), please read the awedrv FAQ or the instructions in awesfx
132 and awemidi packages.
133
134Good luck!
diff --git a/Documentation/sound/oss/MAD16 b/Documentation/sound/oss/MAD16
deleted file mode 100644
index 865dbd848742..000000000000
--- a/Documentation/sound/oss/MAD16
+++ /dev/null
@@ -1,56 +0,0 @@
1(This recipe has been edited to update the configuration symbols,
2 and change over to modprobe.conf for 2.6)
3
4From: Shaw Carruthers <shaw@shawc.demon.co.uk>
5
6I have been using mad16 sound for some time now with no problems, current
7kernel 2.1.89
8
9lsmod shows:
10
11mad16 5176 0
12sb 22044 0 [mad16]
13uart401 5576 0 [mad16 sb]
14ad1848 14176 1 [mad16]
15sound 61928 0 [mad16 sb uart401 ad1848]
16
17.config has:
18
19CONFIG_SOUND=m
20CONFIG_SOUND_ADLIB=m
21CONFIG_SOUND_MAD16=m
22CONFIG_SOUND_YM3812=m
23
24modprobe.conf has:
25
26alias char-major-14-* mad16
27options sb mad16=1
28options mad16 io=0x530 irq=7 dma=0 dma16=1 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
29
30
31To get the built in mixer to work this needs to be:
32
33options adlib_card io=0x388 # FM synthesizer
34options sb mad16=1
35options mad16 io=0x530 irq=7 dma=0 dma16=1 mpu_io=816 mpu_irq=5 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
36
37The addition of the "mpu_io=816 mpu_irq=5" to the mad16 options line is
38
39------------------------------------------------------------------------
40The mad16 module in addition supports the following options:
41
42option: meaning: default:
43joystick=0,1 disabled, enabled disabled
44cdtype=0x00,0x02,0x04, disabled, Sony CDU31A, disabled
45 0x06,0x08,0x0a Mitsumi, Panasonic,
46 Secondary IDE, Primary IDE
47cdport=0x340,0x320, 0x340
48 0x330,0x360
49cdirq=0,3,5,7,9,10,11 disabled, IRQ3, ... disabled
50cddma=0,5,6,7 disabled, DMA5, ... DMA5 for Mitsumi or IDE
51cddma=0,1,2,3 disabled, DMA1, ... DMA3 for Sony or Panasonic
52opl4=0,1 OPL3, OPL4 OPL3
53
54for more details see linux/drivers/sound/mad16.c
55
56Rui Sousa
diff --git a/Documentation/sound/oss/Maestro b/Documentation/sound/oss/Maestro
deleted file mode 100644
index 4a80eb3f8e00..000000000000
--- a/Documentation/sound/oss/Maestro
+++ /dev/null
@@ -1,123 +0,0 @@
1 An OSS/Lite Driver for the ESS Maestro family of sound cards
2
3 Zach Brown, December 1999
4
5Driver Status and Availability
6------------------------------
7
8The most recent version of this driver will hopefully always be available at
9 http://www.zabbo.net/maestro/
10
11I will try and maintain the most recent stable version of the driver
12in both the stable and development kernel lines.
13
14ESS Maestro Chip Family
15-----------------------
16
17There are 3 main variants of the ESS Maestro PCI sound chip. The first
18is the Maestro 1. It was originally produced by Platform Tech as the
19'AGOGO'. It can be recognized by Platform Tech's PCI ID 0x1285 with
200x0100 as the device ID. It was put on some sound boards and a few laptops.
21ESS bought the design and cleaned it up as the Maestro 2. This starts
22their marking with the ESS vendor ID 0x125D and the 'year' device IDs.
23The Maestro 2 claims 0x1968 while the Maestro 2e has 0x1978.
24
25The various families of Maestro are mostly identical as far as this
26driver is concerned. It doesn't touch the DSP parts that differ (though
27it could for FM synthesis).
28
29Driver OSS Behavior
30--------------------
31
32This OSS driver exports /dev/mixer and /dev/dsp to applications, which
33mostly adhere to the OSS spec. This driver doesn't register itself
34with /dev/sndstat, so don't expect information to appear there.
35
36The /dev/dsp device exported behaves almost as expected. Playback is
37supported in all the various lovely formats. 8/16bit stereo/mono from
388khz to 48khz, and mmap()ing for playback behaves. Capture/recording
39is limited due to oddities with the Maestro hardware. One can only
40record in 16bit stereo. For recording the maestro uses non interleaved
41stereo buffers so that mmap()ing the incoming data does not result in
42a ring buffer of LRLR data. mmap()ing of the read buffers is therefore
43disallowed until this can be cleaned up.
44
45/dev/mixer is an interface to the AC'97 codec on the Maestro. It is
46worth noting that there are a variety of AC'97s that can be wired to
47the Maestro. Which is used is entirely up to the hardware implementor.
48This should only be visible to the user by the presence, or lack, of
49'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them.
50
51The driver doesn't support MIDI or FM playback at the moment. Typically
52the Maestro is wired to an MPU MIDI chip, but some hardware implementations
53don't. We need to assemble a white list of hardware implementations that
54have MIDI wired properly before we can claim to support it safely.
55
56Compiling and Installing
57------------------------
58
59With the drivers inclusion into the kernel, compiling and installing
60is the same as most OSS/Lite modular sound drivers. Compilation
61of the driver is enabled through the CONFIG_SOUND_MAESTRO variable
62in the config system.
63
64It may be modular or statically linked. If it is modular it should be
65installed with the rest of the modules for the kernel on the system.
66Typically this will be in /lib/modules/ somewhere. 'alias sound maestro'
67should also be added to your module configs (typically /etc/conf.modules)
68if you're using modular OSS/Lite sound and want to default to using a
69maestro chip.
70
71As this is a PCI device, the module does not need to be informed of
72any IO or IRQ resources it should use, it devines these from the
73system. Sometimes, on sucky PCs, the BIOS fails to allocated resources
74for the maestro. This will result in a message like:
75 maestro: PCI subsystem reports IRQ 0, this might not be correct.
76from the kernel. Should this happen the sound chip most likely will
77not operate correctly. To solve this one has to dig through their BIOS
78(typically entered by hitting a hot key at boot time) and figure out
79what magic needs to happen so that the BIOS will reward the maestro with
80an IRQ. This operation is incredibly system specific, so you're on your
81own. Sometimes the magic lies in 'PNP Capable Operating System' settings.
82
83There are very few options to the driver. One is 'debug' which will
84tell the driver to print minimal debugging information as it runs. This
85can be collected with 'dmesg' or through the klogd daemon.
86
87The other, more interesting option, is 'dsps_order'. Typically at
88install time the driver will only register one available /dev/dsp device
89for its use. The 'dsps_order' module parameter allows for more devices
90to be allocated, as a power of two. Up to 4 devices can be registered
91( dsps_order=2 ). These devices act as fully distinct units and use
92separate channels in the maestro.
93
94Power Management
95----------------
96
97As of version 0.14, this driver has a minimal understanding of PCI
98Power Management. If it finds a valid power management capability
99on the PCI device it will attempt to use the power management
100functions of the maestro. It will only do this on Maestro 2Es and
101only on machines that are known to function well. You can
102force the use of power management by setting the 'use_pm' module
103option to 1, or can disable it entirely by setting it to 0.
104
105When using power management, the driver does a few things
106differently. It will keep the chip in a lower power mode
107when the module is inserted but /dev/dsp is not open. This
108allows the mixer to function but turns off the clocks
109on other parts of the chip. When /dev/dsp is opened the chip
110is brought into full power mode, and brought back down
111when it is closed. It also powers down the chip entirely
112when the module is removed or the machine is shutdown. This
113can have nonobvious consequences. CD audio may not work
114after a power managing driver is removed. Also, software that
115doesn't understand power management may not be able to talk
116to the powered down chip until the machine goes through a hard
117reboot to bring it back.
118
119.. more details ..
120------------------
121
122drivers/sound/maestro.c contains comments that hopefully explain
123the maestro implementation.
diff --git a/Documentation/sound/oss/Maestro3 b/Documentation/sound/oss/Maestro3
deleted file mode 100644
index a113718e8034..000000000000
--- a/Documentation/sound/oss/Maestro3
+++ /dev/null
@@ -1,92 +0,0 @@
1 An OSS/Lite Driver for the ESS Maestro3 family of sound chips
2
3 Zach Brown, January 2001
4
5Driver Status and Availability
6------------------------------
7
8The most recent version of this driver will hopefully always be available at
9 http://www.zabbo.net/maestro3/
10
11I will try and maintain the most recent stable version of the driver
12in both the stable and development kernel lines.
13
14Historically I've sucked pretty hard at actually doing that, however.
15
16ESS Maestro3 Chip Family
17-----------------------
18
19The 'Maestro3' is much like the Maestro2 chip. The noted improvement
20is the removal of the silicon in the '2' that did PCM mixing. All that
21work is now done through a custom DSP called the ASSP, the Asynchronus
22Specific Signal Processor.
23
24The 'Allegro' is a baby version of the Maestro3. I'm not entirely clear
25on the extent of the differences, but the driver supports them both :)
26
27The 'Allegro' shows up as PCI ID 0x1988 and the Maestro3 as 0x1998,
28both under ESS's vendor ID of 0x125D. The Maestro3 can also show up as
290x199a when hardware strapping is used.
30
31The chip can also act as a multi function device. The modem IDs follow
32the audio multimedia device IDs. (so the modem part of an Allegro shows
33up as 0x1989)
34
35Driver OSS Behavior
36--------------------
37
38This OSS driver exports /dev/mixer and /dev/dsp to applications, which
39mostly adhere to the OSS spec. This driver doesn't register itself
40with /dev/sndstat, so don't expect information to appear there.
41
42The /dev/dsp device exported behaves as expected. Playback is
43supported in all the various lovely formats. 8/16bit stereo/mono from
448khz to 48khz, with both read()/write(), and mmap().
45
46/dev/mixer is an interface to the AC'97 codec on the Maestro3. It is
47worth noting that there are a variety of AC'97s that can be wired to
48the Maestro3. Which is used is entirely up to the hardware implementor.
49This should only be visible to the user by the presence, or lack, of
50'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them.
51The Allegro has an onchip AC'97.
52
53The driver doesn't support MIDI or FM playback at the moment.
54
55Compiling and Installing
56------------------------
57
58With the drivers inclusion into the kernel, compiling and installing
59is the same as most OSS/Lite modular sound drivers. Compilation
60of the driver is enabled through the CONFIG_SOUND_MAESTRO3 variable
61in the config system.
62
63It may be modular or statically linked. If it is modular it should be
64installed with the rest of the modules for the kernel on the system.
65Typically this will be in /lib/modules/ somewhere. 'alias sound-slot-0
66maestro3' should also be added to your module configs (typically
67/etc/modprobe.conf) if you're using modular OSS/Lite sound and want to
68default to using a maestro3 chip.
69
70There are very few options to the driver. One is 'debug' which will
71tell the driver to print minimal debugging information as it runs. This
72can be collected with 'dmesg' or through the klogd daemon.
73
74One is 'external_amp', which tells the driver to attempt to enable
75an external amplifier. This defaults to '1', you can tell the driver
76not to bother enabling such an amplifier by setting it to '0'.
77
78And the last is 'gpio_pin', which tells the driver which GPIO pin number
79the external amp uses (0-15), The Allegro uses 8 by default, all others 1.
80If everything loads correctly and seems to be working but you get no sound,
81try tweaking this value.
82
83Systems known to need a different value
84 Panasonic ToughBook CF-72: gpio_pin=13
85
86Power Management
87----------------
88
89This driver has a minimal understanding of PCI Power Management. It will
90try and power down the chip when the system is suspended, and power
91it up with it is resumed. It will also try and power down the chip
92when the machine is shut down.
diff --git a/Documentation/sound/oss/NEWS b/Documentation/sound/oss/NEWS
deleted file mode 100644
index a81e0ef72ae9..000000000000
--- a/Documentation/sound/oss/NEWS
+++ /dev/null
@@ -1,42 +0,0 @@
1Linux 2.4 Sound Changes
22000-September-25
3Christoph Hellwig, <hch@infradead.org>
4
5
6
7=== isapnp support
8
9The Linux 2.4 Kernel does have reliable in-kernel isapnp support.
10Some drivers (sb.o, ad1816.o awe_wave.o) do now support automatically
11detecting and configuring isapnp devices.
12If you have a not yet supported isapnp soundcard, mail me the content
13of '/proc/isapnp' on your system and some information about your card
14and its driver(s) so I can try to get isapnp working for it.
15
16
17
18=== soundcard resources on kernel commandline
19
20Before Linux 2.4 you had to specify the resources for sounddrivers
21statically linked into the kernel at compile time
22(in make config/menuconfig/xconfig). In Linux 2.4 the resources are
23now specified at the boot-time kernel commandline (e.g. the lilo
24'append=' line or everything that's after the kernel name in grub).
25Read the Configure.help entry for your card for the parameters.
26
27
28=== softoss is gone
29
30In Linux 2.4 the softoss in-kernel software synthesizer is no more aviable.
31Use a user space software synthesizer like timidity instead.
32
33
34
35=== /dev/sndstat and /proc/sound are gone
36
37In older Linux versions those files exported some information about the
38OSS/Free configuration to userspace. In Linux 2.3 they were removed because
39they did not support the growing number of pci soundcards and there were
40some general problems with this interface.
41
42
diff --git a/Documentation/sound/oss/OPL3-SA b/Documentation/sound/oss/OPL3-SA
deleted file mode 100644
index 66a91835d918..000000000000
--- a/Documentation/sound/oss/OPL3-SA
+++ /dev/null
@@ -1,52 +0,0 @@
1OPL3-SA1 sound driver (opl3sa.o)
2
3---
4Note: This howto only describes how to setup the OPL3-SA1 chip; this info
5does not apply to the SA2, SA3, or SA4.
6---
7
8The Yamaha OPL3-SA1 sound chip is usually found built into motherboards, and
9it's a decent little chip offering a WSS mode, a SB Pro emulation mode, MPU401
10and OPL3 FM Synth capabilities.
11
12You can enable inclusion of the driver via CONFIG_SOUND_OPL3SA1=m, or
13CONFIG_SOUND_OPL3SA1=y through 'make config/xconfig/menuconfig'.
14
15You'll need to know all of the relevant info (irq, dma, and io port) for the
16chip's WSS mode, since that is the mode the kernel sound driver uses, and of
17course you'll also need to know about where the MPU401 and OPL3 ports and
18IRQs are if you want to use those.
19
20Here's the skinny on how to load it as a module:
21
22 modprobe opl3sa io=0x530 irq=11 dma=0 dma2=1 mpu_io=0x330 mpu_irq=5
23
24Module options in detail:
25
26 io: This is the WSS's port base.
27 irq: This is the WSS's IRQ.
28 dma: This is the WSS's DMA line. In my BIOS setup screen this was
29 listed as "WSS Play DMA"
30 dma2: This is the WSS's secondary DMA line. My BIOS calls it the
31 "WSS capture DMA"
32
33 mpu_io: This is the MPU401's port base.
34 mpu_irq: This is the MPU401's IRQ.
35
36If you'd like to use the OPL3 FM Synthesizer, make sure you enable
37CONFIG_SOUND_YM3812 (in 'make config'). That'll build the opl3.o module.
38
39Then a simple 'insmod opl3 io=0x388', and you now have FM Synth.
40
41You can also use the SoftOSS software synthesizer instead of the builtin OPL3.
42Here's how:
43
44Say 'y' or 'm' to "SoftOSS software wave table engine" in make config.
45
46If you said yes, the software synth is available once you boot your new
47kernel.
48
49If you chose to build it as a module, just insmod the resulting softoss2.o
50
51Questions? Comments?
52<stiker@northlink.com>
diff --git a/Documentation/sound/oss/README.awe b/Documentation/sound/oss/README.awe
deleted file mode 100644
index 80054cd8fcde..000000000000
--- a/Documentation/sound/oss/README.awe
+++ /dev/null
@@ -1,218 +0,0 @@
1================================================================
2 AWE32 Sound Driver for Linux / FreeBSD
3 version 0.4.3; Nov. 1, 1998
4
5 Takashi Iwai <iwai@ww.uni-erlangen.de>
6================================================================
7
8* GENERAL NOTES
9
10This is a sound driver extension for SoundBlaster AWE32 and other
11compatible cards (AWE32-PnP, SB32, SB32-PnP, AWE64 & etc) to enable
12the wave synth operations. The driver is provided for Linux 1.2.x
13and 2.[012].x kernels, as well as FreeBSD, on Intel x86 and DEC
14Alpha systems.
15
16This driver was written by Takashi Iwai <iwai@ww.uni-erlangen.de>,
17and provided "as is". The original source (awedrv-0.4.3.tar.gz) and
18binary packages are available on the following URL:
19 http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/
20Note that since the author is apart from this web site, the update is
21not frequent now.
22
23
24* NOTE TO LINUX USERS
25
26To enable this driver on linux-2.[01].x kernels, you need turn on
27"AWE32 synth" options in sound menu when configure your linux kernel
28and modules. The precise installation procedure is described in the
29AWE64-Mini-HOWTO and linux-kernel/Documetation/sound/AWE32.
30
31If you're using PnP cards, the card must be initialized before loading
32the sound driver. There're several options to do this:
33 - Initialize the card via ISA PnP tools, and load the sound module.
34 - Initialize the card on DOS, and load linux by loadlin.exe
35 - Use PnP kernel driver (for Linux-2.x.x)
36The detailed instruction for the solution using isapnp tools is found
37in many documents like above. A brief instruction is also included in
38the installation document of this package.
39For PnP driver project, please refer to the following URL:
40 http://www-jcr.lmh.ox.ac.uk/~pnp/
41
42
43* USING THE DRIVER
44
45The awedrv has several different playing modes to realize easy channel
46allocation for MIDI songs. To hear the exact sound quality, you need
47to obtain the extended sequencer program, drvmidi or playmidi-2.5.
48
49For playing MIDI files, you *MUST* load the soundfont file on the
50driver previously by sfxload utility. Otherwise you'll here no sounds
51at all! All the utilities and driver source packages are found in the
52above URL. The sfxload program is included in the package
53awesfx-0.4.3.tgz. Binary packages are available there, too. See the
54instruction in each package for installation.
55
56Loading a soundfont file is very simple. Just execute the command
57
58 % sfxload synthgm.sbk
59
60Then, sfxload transfers the file "synthgm.sbk" to the driver.
61Both SF1 and SF2 formats are accepted.
62
63Now you can hear midi musics by a midi player.
64
65 % drvmidi foo.mid
66
67If you run MIDI player after MOD player, you need to load soundfont
68files again, since MOD player programs clear the previous loaded
69samples by their own data.
70
71If you have only 512kb on the sound card, I recommend to use dynamic
72sample loading via -L option of drvmidi. 2MB GM/GS soundfont file is
73available in most midi files.
74
75 % sfxload synthgm
76 % drvmidi -L 2mbgmgs foo.mid
77
78This makes a big difference (believe me)! For more details, please
79refer to the FAQ list which is available on the URL above.
80
81The current chorus, reverb and equalizer status can be changed by
82aweset utility program (included in awesfx package). Note that
83some awedrv-native programs (like drvmidi and xmp) will change the
84current settings by themselves. The aweset program is effective
85only for other programs like playmidi.
86
87Enjoy.
88
89
90* COMPILE FLAGS
91
92Compile conditions are defined in awe_config.h.
93
94[Compatibility Conditions]
95The following flags are defined automatically when using installation
96shell script.
97
98- AWE_MODULE_SUPPORT
99 indicates your Linux kernel supports module for each sound card
100 (in recent 2.1 or 2.2 kernels and unofficial patched 2.0 kernels
101 as distributed in the RH5.0 package).
102 This flag is automatically set when you're using 2.1.x kernels.
103 You can pass the base address and memory size via the following
104 module options,
105 io = base I/O port address (eg. 0x620)
106 memsize = DRAM size in kilobytes (eg. 512)
107 As default, AWE driver probes these values automatically.
108
109
110[Hardware Conditions]
111You DON'T have to define the following two values.
112Define them only when the driver couldn't detect the card properly.
113
114- AWE_DEFAULT_BASE_ADDR (default: not defined)
115 specifies the base port address of your AWE32 card.
116 0 means to autodetect the address.
117
118- AWE_DEFAULT_MEM_SIZE (default: not defined)
119 specifies the memory size of your AWE32 card in kilobytes.
120 -1 means to autodetect its size.
121
122
123[Sample Table Size]
124From ver.0.4.0, sample tables are allocated dynamically (except
125Linux-1.2.x system), so you need NOT to touch these parameters.
126Linux-1.2.x users may need to increase these values to appropriate size
127if the sound card is equipped with more DRAM.
128
129- AWE_MAX_SF_LISTS, AWE_MAX_SAMPLES, AWE_MAX_INFOS
130
131
132[Other Conditions]
133
134- AWE_ALWAYS_INIT_FM (default: not defined)
135 indicates the AWE driver always initialize FM passthrough even
136 without DRAM on board. Emu8000 chip has a restriction for playing
137 samples on DRAM that at least two channels must be occupied as
138 passthrough channels.
139
140- AWE_DEBUG_ON (default: defined)
141 turns on debugging messages if defined.
142
143- AWE_HAS_GUS_COMPATIBILITY (default: defined)
144 Enables GUS compatibility mode if defined, reading GUS patches and
145 GUS control commands. Define this option to use GMOD or other
146 GUS module players.
147
148- CONFIG_AWE32_MIDIEMU (default: defined)
149 Adds a MIDI emulation device by Emu8000 wavetable. The emulation
150 device can be accessed as an external MIDI, and sends the MIDI
151 control codes directly. XG and GS sysex/NRPN are accepted.
152 No MIDI input is supported.
153
154- CONFIG_AWE32_MIXER (default: not defined)
155 Adds a mixer device for AWE32 bass/treble equalizer control.
156 You can access this device using /dev/mixer?? (usually mixer01).
157
158- AWE_USE_NEW_VOLUME_CALC (default: defined)
159 Use the new method to calculate the volume change as compatible
160 with DOS/Win drivers. This option can be toggled via aweset
161 program, or drvmidi player.
162
163- AWE_CHECK_VTARGET (default: defined)
164 Check the current volume target value when searching for an
165 empty channel to allocate a new voice. This is experimentally
166 implemented in this version. (probably, this option doesn't
167 affect the sound quality severely...)
168
169- AWE_ALLOW_SAMPLE_SHARING (default: defined)
170 Allow sample sharing for differently loaded patches.
171 This function is available only together with awesfx-0.4.3p3.
172 Note that this is still an experimental option.
173
174- DEF_FM_CHORUS_DEPTH (default: 0x10)
175 The default strength to be sent to the chorus effect engine.
176 From 0 to 0xff. Larger numbers may often cause weird sounds.
177
178- DEF_FM_REVERB_DEPTH (default: 0x10)
179 The default strength to be sent to the reverb effect engine.
180 From 0 to 0xff. Larger numbers may often cause weird sounds.
181
182
183* ACKNOWLEDGMENTS
184
185Thanks to Witold Jachimczyk (witek@xfactor.wpi.edu) for much advice
186on programming of AWE32. Much code is brought from his AWE32-native
187MOD player, ALMP.
188The port of awedrv to FreeBSD is done by Randall Hopper
189(rhh@ct.picker.com).
190The new volume calculation routine was derived from Mark Weaver's
191ADIP compatible routines.
192I also thank linux-awe-ml members for their efforts
193to reboot their system many times :-)
194
195
196* TODO'S
197
198- Complete DOS/Win compatibility
199- DSP-like output
200
201
202* COPYRIGHT
203
204Copyright (C) 1996-1998 Takashi Iwai
205
206This program is free software; you can redistribute it and/or modify
207it under the terms of the GNU General Public License as published by
208the Free Software Foundation; either version 2 of the License, or
209(at your option) any later version.
210
211This program is distributed in the hope that it will be useful,
212but WITHOUT ANY WARRANTY; without even the implied warranty of
213MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
214GNU General Public License for more details.
215
216You should have received a copy of the GNU General Public License
217along with this program; if not, write to the Free Software
218Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/Documentation/sound/oss/Wavefront b/Documentation/sound/oss/Wavefront
deleted file mode 100644
index 16f57ea43052..000000000000
--- a/Documentation/sound/oss/Wavefront
+++ /dev/null
@@ -1,339 +0,0 @@
1 An OSS/Free Driver for WaveFront soundcards
2 (Turtle Beach Maui, Tropez, Tropez Plus)
3
4 Paul Barton-Davis, July 1998
5
6 VERSION 0.2.5
7
8Driver Status
9-------------
10
11Requires: Kernel 2.1.106 or later (the driver is included with kernels
122.1.109 and above)
13
14As of 7/22/1998, this driver is currently in *BETA* state. This means
15that it compiles and runs, and that I use it on my system (Linux
162.1.106) with some reasonably demanding applications and uses. I
17believe the code is approaching an initial "finished" state that
18provides bug-free support for the Tropez Plus.
19
20Please note that to date, the driver has ONLY been tested on a Tropez
21Plus. I would very much like to hear (and help out) people with Tropez
22and Maui cards, since I think the driver can support those cards as
23well.
24
25Finally, the driver has not been tested (or even compiled) as a static
26(non-modular) part of the kernel. Alan Cox's good work in modularizing
27OSS/Free for Linux makes this rather unnecessary.
28
29Some Questions
30--------------
31
32**********************************************************************
330) What does this driver do that the maui driver did not ?
34**********************************************************************
35
36* can fully initialize a WaveFront card from cold boot - no DOS
37 utilities needed
38* working patch/sample/program loading and unloading (the maui
39 driver didn't document how to make this work, and assumed
40 user-level preparation of the patch data for writing
41 to the board. ick.)
42* full user-level access to all WaveFront commands
43* for the Tropez Plus, (primitive) control of the YSS225 FX processor
44* Virtual MIDI mode supported - 2 MIDI devices accessible via the
45 WaveFront's MPU401/UART emulation. One
46 accesses the WaveFront synth, the other accesses the
47 external MIDI connector. Full MIDI read/write semantics
48 for both devices.
49* OSS-compliant /dev/sequencer interface for the WaveFront synth,
50 including native and GUS-format patch downloading.
51* semi-intelligent patch management (prototypical at this point)
52
53**********************************************************************
541) What to do about MIDI interfaces ?
55**********************************************************************
56
57The Tropez Plus (and perhaps other WF cards) can in theory support up
58to 2 physical MIDI interfaces. One of these is connected to the
59ICS2115 chip (the WaveFront synth itself) and is controlled by
60MPU/UART-401 emulation code running as part of the WaveFront OS. The
61other is controlled by the CS4232 chip present on the board. However,
62physical access to the CS4232 connector is difficult, and it is
63unlikely (though not impossible) that you will want to use it.
64
65An older version of this driver introduced an additional kernel config
66variable which controlled whether or not the CS4232 MIDI interface was
67configured. Because of Alan Cox's work on modularizing the sound
68drivers, and now backporting them to 2.0.34 kernels, there seems to be
69little reason to support "static" configuration variables, and so this
70has been abandoned in favor of *only* module parameters. Specifying
71"mpuio" and "mpuirq" for the cs4232 parameter will result in the
72CS4232 MIDI interface being configured; leaving them unspecified will
73leave it unconfigured (and thus unusable).
74
75BTW, I have heard from one Tropez+ user that the CS4232 interface is
76more reliable than the ICS2115 one. I have had no problems with the
77latter, and I don't have the right cable to test the former one
78out. Reports welcome.
79
80**********************************************************************
812) Why does line XXX of the code look like this .... ?
82**********************************************************************
83
84Either because it's not finished yet, or because you're a better coder
85than I am, or because you don't understand some aspect of how the card
86or the code works.
87
88I absolutely welcome comments, criticisms and suggestions about the
89design and implementation of the driver.
90
91**********************************************************************
923) What files are included ?
93**********************************************************************
94
95 drivers/sound/README.wavefront -- this file
96
97 drivers/sound/wavefront.patch -- patches for the 2.1.106 sound drivers
98 needed to make the rest of this work
99 DO NOT USE IF YOU'VE APPLIED THEM
100 BEFORE, OR HAVE 2.1.109 OR ABOVE
101
102 drivers/sound/wavfront.c -- the driver
103 drivers/sound/ys225.h -- data declarations for FX config
104 drivers/sound/ys225.c -- data definitions for FX config
105 drivers/sound/wf_midi.c -- the "uart401" driver
106 to support virtual MIDI mode.
107 include/wavefront.h -- the header file
108 Documentation/sound/oss/Tropez+ -- short docs on configuration
109
110**********************************************************************
1114) How do I compile/install/use it ?
112**********************************************************************
113
114PART ONE: install the source code into your sound driver directory
115
116 cd <top-of-your-2.1.106-code-base-e.g.-/usr/src/linux>
117 tar -zxvf <where-you-put/wavefront.tar.gz>
118
119PART TWO: apply the patches
120
121 DO THIS ONLY IF YOU HAVE A KERNEL VERSION BELOW 2.1.109
122 AND HAVE NOT ALREADY INSTALLED THE PATCH(ES).
123
124 cd drivers/sound
125 patch < wavefront.patch
126
127PART THREE: configure your kernel
128
129 cd <top of your kernel tree>
130 make xconfig (or whichever config option you use)
131
132 - choose YES for Sound Support
133 - choose MODULE (M) for OSS Sound Modules
134 - choose MODULE(M) to YM3812/OPL3 support
135 - choose MODULE(M) for WaveFront support
136 - choose MODULE(M) for CS4232 support
137
138 - choose "N" for everything else (unless you have other
139 soundcards you want support for)
140
141
142 make boot
143 .
144 .
145 .
146 <whatever you normally do for a kernel install>
147 make modules
148 .
149 .
150 .
151 make modules_install
152
153Here's my autoconf.h SOUND section:
154
155/*
156 * Sound
157 */
158#define CONFIG_SOUND 1
159#undef CONFIG_SOUND_OSS
160#define CONFIG_SOUND_OSS_MODULE 1
161#undef CONFIG_SOUND_PAS
162#undef CONFIG_SOUND_SB
163#undef CONFIG_SOUND_ADLIB
164#undef CONFIG_SOUND_GUS
165#undef CONFIG_SOUND_MPU401
166#undef CONFIG_SOUND_PSS
167#undef CONFIG_SOUND_MSS
168#undef CONFIG_SOUND_SSCAPE
169#undef CONFIG_SOUND_TRIX
170#undef CONFIG_SOUND_MAD16
171#undef CONFIG_SOUND_WAVEFRONT
172#define CONFIG_SOUND_WAVEFRONT_MODULE 1
173#undef CONFIG_SOUND_CS4232
174#define CONFIG_SOUND_CS4232_MODULE 1
175#undef CONFIG_SOUND_MAUI
176#undef CONFIG_SOUND_SGALAXY
177#undef CONFIG_SOUND_OPL3SA1
178#undef CONFIG_SOUND_SOFTOSS
179#undef CONFIG_SOUND_YM3812
180#define CONFIG_SOUND_YM3812_MODULE 1
181#undef CONFIG_SOUND_VMIDI
182#undef CONFIG_SOUND_UART6850
183/*
184 * Additional low level sound drivers
185 */
186#undef CONFIG_LOWLEVEL_SOUND
187
188************************************************************
1896) How do I configure my card ?
190************************************************************
191
192You need to edit /etc/modprobe.conf. Here's mine (edited to show the
193relevant details):
194
195 # Sound system
196 alias char-major-14-* wavefront
197 alias synth0 wavefront
198 alias mixer0 cs4232
199 alias audio0 cs4232
200 install wavefront /sbin/modprobe cs4232 && /sbin/modprobe -i wavefront && /sbin/modprobe opl3
201 options wavefront io=0x200 irq=9
202 options cs4232 synthirq=9 synthio=0x200 io=0x530 irq=5 dma=1 dma2=0
203 options opl3 io=0x388
204
205Things to note:
206
207 the wavefront options "io" and "irq" ***MUST*** match the "synthio"
208 and "synthirq" cs4232 options.
209
210 you can do without the opl3 module if you don't
211 want to use the OPL/[34] FM synth on the soundcard
212
213 the opl3 io parameter is conventionally not adjustable.
214 In theory, any not-in-use IO port address would work, but
215 just use 0x388 and stick with the crowd.
216
217**********************************************************************
2187) What about firmware ?
219**********************************************************************
220
221Turtle Beach have not given me permission to distribute their firmware
222for the ICS2115. However, if you have a WaveFront card, then you
223almost certainly have the firmware, and if not, its freely available
224on their website, at:
225
226 http://www.tbeach.com/tbs/downloads/scardsdown.htm#tropezplus
227
228The file is called WFOS2001.MOT (for the Tropez+).
229
230This driver, however, doesn't use the pure firmware as distributed,
231but instead relies on a somewhat processed form of it. You can
232generate this very easily. Following an idea from Andrew Veliath's
233Pinnacle driver, the following flex program will generate the
234processed version:
235
236---- cut here -------------------------
237%option main
238%%
239^S[28].*\r$ printf ("%c%.*s", yyleng-1,yyleng-1,yytext);
240<<EOF>> { fputc ('\0', stdout); return; }
241\n {}
242. {}
243---- cut here -------------------------
244
245To use it, put the above in file (say, ws.l) compile it like this:
246
247 shell> flex -ows.c ws.l
248 shell> cc -o ws ws.c
249
250and then use it like this:
251
252 ws < my-copy-of-the-oswf.mot-file > /etc/sound/wavefront.os
253
254If you put it somewhere else, you'll always have to use the wf_ospath
255module parameter (see below) or alter the source code.
256
257**********************************************************************
2587) How do I get it working ?
259**********************************************************************
260
261Optionally, you can reboot with the "new" kernel (even though the only
262changes have really been made to a module).
263
264Then, as root do:
265
266 modprobe wavefront
267
268You should get something like this in /var/log/messages:
269
270 WaveFront: firmware 1.20 already loaded.
271
272or
273
274 WaveFront: no response to firmware probe, assume raw.
275
276then:
277
278 WaveFront: waiting for memory configuration ...
279 WaveFront: hardware version 1.64
280 WaveFront: available DRAM 8191k
281 WaveFront: 332 samples used (266 real, 13 aliases, 53 multi), 180 empty
282 WaveFront: 128 programs slots in use
283 WaveFront: 256 patch slots filled, 142 in use
284
285The whole process takes about 16 seconds, the longest waits being
286after reporting the hardware version (during the firmware download),
287and after reporting program status (during patch status inquiry). Its
288shorter (about 10 secs) if the firmware is already loaded (i.e. only
289warm reboots since the last firmware load).
290
291The "available DRAM" line will vary depending on how much added RAM
292your card has. Mine has 8MB.
293
294To check basically functionality, use play(1) or splay(1) to send a
295.WAV or other audio file through the audio portion. Then use playmidi
296to play a General MIDI file. Try the "-D 0" to hear the
297difference between sending MIDI to the WaveFront and using the OPL/3,
298which is the default (I think ...). If you have an external synth(s)
299hooked to the soundcard, you can use "-e" to route to the
300external synth(s) (in theory, -D 1 should work as well, but I think
301there is a bug in playmidi which prevents this from doing what it
302should).
303
304**********************************************************************
3058) What are the module parameters ?
306**********************************************************************
307
308Its best to read wavefront.c for this, but here is a summary:
309
310integers:
311 wf_raw - if set, ignore apparent presence of firmware
312 loaded onto the ICS2115, reset the whole
313 board, and initialize it from scratch. (default = 0)
314
315 fx_raw - if set, always initialize the YSS225 processor
316 on the Tropez plus. (default = 1)
317
318 < The next 4 are basically for kernel hackers to allow
319 tweaking the driver for testing purposes. >
320
321 wait_usecs - loop timer used when waiting for
322 status conditions on the board.
323 The default is 150.
324
325 debug_default - debugging flags. See sound/wavefront.h
326 for WF_DEBUG_* values. Default is zero.
327 Setting this allows you to debug the
328 driver during module installation.
329strings:
330 ospath - path to get to the pre-processed OS firmware.
331 (default: /etc/sound/wavefront.os)
332
333**********************************************************************
3349) Who should I contact if I have problems?
335**********************************************************************
336
337Just me: Paul Barton-Davis <pbd@op.net>
338
339
diff --git a/Documentation/sound/oss/es1370 b/Documentation/sound/oss/es1370
deleted file mode 100644
index 7b38b1a096a3..000000000000
--- a/Documentation/sound/oss/es1370
+++ /dev/null
@@ -1,70 +0,0 @@
1/proc/sound, /dev/sndstat
2-------------------------
3
4/proc/sound and /dev/sndstat is not supported by the
5driver. To find out whether the driver succeeded loading,
6check the kernel log (dmesg).
7
8
9ALaw/uLaw sample formats
10------------------------
11
12This driver does not support the ALaw/uLaw sample formats.
13ALaw is the default mode when opening a sound device
14using OSS/Free. The reason for the lack of support is
15that the hardware does not support these formats, and adding
16conversion routines to the kernel would lead to very ugly
17code in the presence of the mmap interface to the driver.
18And since xquake uses mmap, mmap is considered important :-)
19and no sane application uses ALaw/uLaw these days anyway.
20In short, playing a Sun .au file as follows:
21
22cat my_file.au > /dev/dsp
23
24does not work. Instead, you may use the play script from
25Chris Bagwell's sox-12.14 package (available from the URL
26below) to play many different audio file formats.
27The script automatically determines the audio format
28and does do audio conversions if necessary.
29http://home.sprynet.com/sprynet/cbagwell/projects.html
30
31
32Blocking vs. nonblocking IO
33---------------------------
34
35Unlike OSS/Free this driver honours the O_NONBLOCK file flag
36not only during open, but also during read and write.
37This is an effort to make the sound driver interface more
38regular. Timidity has problems with this; a patch
39is available from http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html.
40(Timidity patched will also run on OSS/Free).
41
42
43MIDI UART
44---------
45
46The driver supports a simple MIDI UART interface, with
47no ioctl's supported.
48
49
50MIDI synthesizer
51----------------
52
53This soundcard does not have any hardware MIDI synthesizer;
54MIDI synthesis has to be done in software. To allow this
55the driver/soundcard supports two PCM (/dev/dsp) interfaces.
56The second one goes to the mixer "synth" setting and supports
57only a limited set of sampling rates (44100, 22050, 11025, 5512).
58By setting lineout to 1 on the driver command line
59(eg. insmod es1370 lineout=1) it is even possible on some
60cards to convert the LINEIN jack into a second LINEOUT jack, thus
61making it possible to output four independent audio channels!
62
63There is a freely available software package that allows
64MIDI file playback on this soundcard called Timidity.
65See http://www.cgs.fi/~tt/timidity/.
66
67
68
69Thomas Sailer
70t.sailer@alumni.ethz.ch
diff --git a/Documentation/sound/oss/rme96xx b/Documentation/sound/oss/rme96xx
deleted file mode 100644
index 87d7b7b65fa1..000000000000
--- a/Documentation/sound/oss/rme96xx
+++ /dev/null
@@ -1,767 +0,0 @@
1Beta release of the rme96xx (driver for RME 96XX cards like the
2"Hammerfall" and the "Hammerfall light")
3
4Important: The driver module has to be installed on a freshly rebooted system,
5otherwise the driver might not be able to acquire its buffers.
6
7features:
8
9 - OSS programming interface (i.e. runs with standard OSS soundsoftware)
10 - OSS/Multichannel interface (OSS multichannel is done by just aquiring
11 more than 2 channels). The driver does not use more than one device
12 ( yet .. this feature may be implemented later )
13 - more than one RME card supported
14
15The driver uses a specific multichannel interface, which I will document
16when the driver gets stable. (take a look at the defines in rme96xx.h,
17which adds blocked multichannel formats i.e instead of
18lrlrlrlr --> llllrrrr etc.
19
20Use the "rmectrl" programm to look at the status of the card ..
21or use xrmectrl, a GUI interface for the ctrl program.
22
23What you can do with the rmectrl program is to set the stereo device for
24OSS emulation (e.g. if you use SPDIF out).
25
26You do:
27
28./ctrl offset 24 24
29
30which makes the stereo device use channels 25 and 26.
31
32Guenter Geiger <geiger@epy.co.at>
33
34copy the first part of the attached source code into rmectrl.c
35and the second part into xrmectrl (or get the program from
36http://gige.xdv.org/pages/soft/pages/rme)
37
38to compile: gcc -o rmectrl rmectrl.c
39------------------------------ snip ------------------------------------
40
41#include <stdio.h>
42#include <sys/types.h>
43#include <sys/stat.h>
44#include <sys/ioctl.h>
45#include <fcntl.h>
46#include <linux/soundcard.h>
47#include <math.h>
48#include <unistd.h>
49#include <stdlib.h>
50#include "rme96xx.h"
51
52/*
53 remctrl.c
54 (C) 2000 Guenter Geiger <geiger@debian.org>
55 HP20020201 - Heiko Purnhagen <purnhage@tnt.uni-hannover.de>
56*/
57
58/* # define DEVICE_NAME "/dev/mixer" */
59# define DEVICE_NAME "/dev/mixer1"
60
61
62void usage(void)
63{
64 fprintf(stderr,"usage: rmectrl [/dev/mixer<n>] [command [options]]\n\n");
65 fprintf(stderr,"where command is one of:\n");
66 fprintf(stderr," help show this help\n");
67 fprintf(stderr," status show status bits\n");
68 fprintf(stderr," control show control bits\n");
69 fprintf(stderr," mix show mixer/offset status\n");
70 fprintf(stderr," master <n> set sync master\n");
71 fprintf(stderr," pro <n> set spdif out pro\n");
72 fprintf(stderr," emphasis <n> set spdif out emphasis\n");
73 fprintf(stderr," dolby <n> set spdif out no audio\n");
74 fprintf(stderr," optout <n> set spdif out optical\n");
75 fprintf(stderr," wordclock <n> set sync wordclock\n");
76 fprintf(stderr," spdifin <n> set spdif in (0=optical,1=coax,2=intern)\n");
77 fprintf(stderr," syncref <n> set sync source (0=ADAT1,1=ADAT2,2=ADAT3,3=SPDIF)\n");
78 fprintf(stderr," adat1cd <n> set ADAT1 on internal CD\n");
79 fprintf(stderr," offset <devnr> <in> <out> set dev (0..3) offset (0..25)\n");
80 exit(-1);
81}
82
83
84int main(int argc, char* argv[])
85{
86 int cards;
87 int ret;
88 int i;
89 double ft;
90 int fd, fdwr;
91 int param,orig;
92 rme_status_t stat;
93 rme_ctrl_t ctrl;
94 char *device;
95 int argidx;
96
97 if (argc < 2)
98 usage();
99
100 if (*argv[1]=='/') {
101 device = argv[1];
102 argidx = 2;
103 }
104 else {
105 device = DEVICE_NAME;
106 argidx = 1;
107 }
108
109 fprintf(stdout,"mixer device %s\n",device);
110 if ((fd = open(device,O_RDONLY)) < 0) {
111 fprintf(stdout,"opening device failed\n");
112 exit(-1);
113 }
114
115 if ((fdwr = open(device,O_WRONLY)) < 0) {
116 fprintf(stdout,"opening device failed\n");
117 exit(-1);
118 }
119
120 if (argc < argidx+1)
121 usage();
122
123 if (!strcmp(argv[argidx],"help"))
124 usage();
125 if (!strcmp(argv[argidx],"-h"))
126 usage();
127 if (!strcmp(argv[argidx],"--help"))
128 usage();
129
130 if (!strcmp(argv[argidx],"status")) {
131 ioctl(fd,SOUND_MIXER_PRIVATE2,&stat);
132 fprintf(stdout,"stat.irq %d\n",stat.irq);
133 fprintf(stdout,"stat.lockmask %d\n",stat.lockmask);
134 fprintf(stdout,"stat.sr48 %d\n",stat.sr48);
135 fprintf(stdout,"stat.wclock %d\n",stat.wclock);
136 fprintf(stdout,"stat.bufpoint %d\n",stat.bufpoint);
137 fprintf(stdout,"stat.syncmask %d\n",stat.syncmask);
138 fprintf(stdout,"stat.doublespeed %d\n",stat.doublespeed);
139 fprintf(stdout,"stat.tc_busy %d\n",stat.tc_busy);
140 fprintf(stdout,"stat.tc_out %d\n",stat.tc_out);
141 fprintf(stdout,"stat.crystalrate %d (0=64k 3=96k 4=88.2k 5=48k 6=44.1k 7=32k)\n",stat.crystalrate);
142 fprintf(stdout,"stat.spdif_error %d\n",stat.spdif_error);
143 fprintf(stdout,"stat.bufid %d\n",stat.bufid);
144 fprintf(stdout,"stat.tc_valid %d\n",stat.tc_valid);
145 exit (0);
146 }
147
148 if (!strcmp(argv[argidx],"control")) {
149 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
150 fprintf(stdout,"ctrl.start %d\n",ctrl.start);
151 fprintf(stdout,"ctrl.latency %d (0=64 .. 7=8192)\n",ctrl.latency);
152 fprintf(stdout,"ctrl.master %d\n",ctrl.master);
153 fprintf(stdout,"ctrl.ie %d\n",ctrl.ie);
154 fprintf(stdout,"ctrl.sr48 %d\n",ctrl.sr48);
155 fprintf(stdout,"ctrl.spare %d\n",ctrl.spare);
156 fprintf(stdout,"ctrl.doublespeed %d\n",ctrl.doublespeed);
157 fprintf(stdout,"ctrl.pro %d\n",ctrl.pro);
158 fprintf(stdout,"ctrl.emphasis %d\n",ctrl.emphasis);
159 fprintf(stdout,"ctrl.dolby %d\n",ctrl.dolby);
160 fprintf(stdout,"ctrl.opt_out %d\n",ctrl.opt_out);
161 fprintf(stdout,"ctrl.wordclock %d\n",ctrl.wordclock);
162 fprintf(stdout,"ctrl.spdif_in %d (0=optical,1=coax,2=intern)\n",ctrl.spdif_in);
163 fprintf(stdout,"ctrl.sync_ref %d (0=ADAT1,1=ADAT2,2=ADAT3,3=SPDIF)\n",ctrl.sync_ref);
164 fprintf(stdout,"ctrl.spdif_reset %d\n",ctrl.spdif_reset);
165 fprintf(stdout,"ctrl.spdif_select %d\n",ctrl.spdif_select);
166 fprintf(stdout,"ctrl.spdif_clock %d\n",ctrl.spdif_clock);
167 fprintf(stdout,"ctrl.spdif_write %d\n",ctrl.spdif_write);
168 fprintf(stdout,"ctrl.adat1_cd %d\n",ctrl.adat1_cd);
169 exit (0);
170 }
171
172 if (!strcmp(argv[argidx],"mix")) {
173 rme_mixer mix;
174 int i;
175
176 for (i=0; i<4; i++) {
177 mix.devnr = i;
178 ioctl(fd,SOUND_MIXER_PRIVATE1,&mix);
179 if (mix.devnr == i) {
180 fprintf(stdout,"devnr %d\n",mix.devnr);
181 fprintf(stdout,"mix.i_offset %2d (0-25)\n",mix.i_offset);
182 fprintf(stdout,"mix.o_offset %2d (0-25)\n",mix.o_offset);
183 }
184 }
185 exit (0);
186 }
187
188/* the control flags */
189
190 if (argc < argidx+2)
191 usage();
192
193 if (!strcmp(argv[argidx],"master")) {
194 int val = atoi(argv[argidx+1]);
195 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
196 printf("master = %d\n",val);
197 ctrl.master = val;
198 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
199 exit (0);
200 }
201
202 if (!strcmp(argv[argidx],"pro")) {
203 int val = atoi(argv[argidx+1]);
204 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
205 printf("pro = %d\n",val);
206 ctrl.pro = val;
207 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
208 exit (0);
209 }
210
211 if (!strcmp(argv[argidx],"emphasis")) {
212 int val = atoi(argv[argidx+1]);
213 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
214 printf("emphasis = %d\n",val);
215 ctrl.emphasis = val;
216 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
217 exit (0);
218 }
219
220 if (!strcmp(argv[argidx],"dolby")) {
221 int val = atoi(argv[argidx+1]);
222 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
223 printf("dolby = %d\n",val);
224 ctrl.dolby = val;
225 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
226 exit (0);
227 }
228
229 if (!strcmp(argv[argidx],"optout")) {
230 int val = atoi(argv[argidx+1]);
231 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
232 printf("optout = %d\n",val);
233 ctrl.opt_out = val;
234 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
235 exit (0);
236 }
237
238 if (!strcmp(argv[argidx],"wordclock")) {
239 int val = atoi(argv[argidx+1]);
240 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
241 printf("wordclock = %d\n",val);
242 ctrl.wordclock = val;
243 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
244 exit (0);
245 }
246
247 if (!strcmp(argv[argidx],"spdifin")) {
248 int val = atoi(argv[argidx+1]);
249 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
250 printf("spdifin = %d\n",val);
251 ctrl.spdif_in = val;
252 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
253 exit (0);
254 }
255
256 if (!strcmp(argv[argidx],"syncref")) {
257 int val = atoi(argv[argidx+1]);
258 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
259 printf("syncref = %d\n",val);
260 ctrl.sync_ref = val;
261 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
262 exit (0);
263 }
264
265 if (!strcmp(argv[argidx],"adat1cd")) {
266 int val = atoi(argv[argidx+1]);
267 ioctl(fd,SOUND_MIXER_PRIVATE3,&ctrl);
268 printf("adat1cd = %d\n",val);
269 ctrl.adat1_cd = val;
270 ioctl(fdwr,SOUND_MIXER_PRIVATE3,&ctrl);
271 exit (0);
272 }
273
274/* setting offset */
275
276 if (argc < argidx+4)
277 usage();
278
279 if (!strcmp(argv[argidx],"offset")) {
280 rme_mixer mix;
281
282 mix.devnr = atoi(argv[argidx+1]);
283
284 mix.i_offset = atoi(argv[argidx+2]);
285 mix.o_offset = atoi(argv[argidx+3]);
286 ioctl(fdwr,SOUND_MIXER_PRIVATE1,&mix);
287 fprintf(stdout,"devnr %d\n",mix.devnr);
288 fprintf(stdout,"mix.i_offset to %d\n",mix.i_offset);
289 fprintf(stdout,"mix.o_offset to %d\n",mix.o_offset);
290 exit (0);
291 }
292
293 usage();
294 exit (0); /* to avoid warning */
295}
296
297
298---------------------------- <snip> --------------------------------
299#!/usr/bin/wish
300
301# xrmectrl
302# (C) 2000 Guenter Geiger <geiger@debian.org>
303# HP20020201 - Heiko Purnhagen <purnhage@tnt.uni-hannover.de>
304
305#set defaults "-relief ridged"
306set CTRLPROG "./rmectrl"
307if {$argc} {
308 set CTRLPROG "$CTRLPROG $argv"
309}
310puts "CTRLPROG $CTRLPROG"
311
312frame .butts
313button .butts.exit -text "Exit" -command "exit" -relief ridge
314#button .butts.state -text "State" -command "get_all"
315
316pack .butts.exit -side left
317pack .butts -side bottom
318
319
320#
321# STATUS
322#
323
324frame .status
325
326# Sampling Rate
327
328frame .status.sr
329label .status.sr.text -text "Sampling Rate" -justify left
330radiobutton .status.sr.441 -selectcolor red -text "44.1 kHz" -width 10 -anchor nw -variable srate -value 44100 -font times
331radiobutton .status.sr.480 -selectcolor red -text "48 kHz" -width 10 -anchor nw -variable srate -value 48000 -font times
332radiobutton .status.sr.882 -selectcolor red -text "88.2 kHz" -width 10 -anchor nw -variable srate -value 88200 -font times
333radiobutton .status.sr.960 -selectcolor red -text "96 kHz" -width 10 -anchor nw -variable srate -value 96000 -font times
334
335pack .status.sr.text .status.sr.441 .status.sr.480 .status.sr.882 .status.sr.960 -side top -padx 3
336
337# Lock
338
339frame .status.lock
340label .status.lock.text -text "Lock" -justify left
341checkbutton .status.lock.adat1 -selectcolor red -text "ADAT1" -anchor nw -width 10 -variable adatlock1 -font times
342checkbutton .status.lock.adat2 -selectcolor red -text "ADAT2" -anchor nw -width 10 -variable adatlock2 -font times
343checkbutton .status.lock.adat3 -selectcolor red -text "ADAT3" -anchor nw -width 10 -variable adatlock3 -font times
344
345pack .status.lock.text .status.lock.adat1 .status.lock.adat2 .status.lock.adat3 -side top -padx 3
346
347# Sync
348
349frame .status.sync
350label .status.sync.text -text "Sync" -justify left
351checkbutton .status.sync.adat1 -selectcolor red -text "ADAT1" -anchor nw -width 10 -variable adatsync1 -font times
352checkbutton .status.sync.adat2 -selectcolor red -text "ADAT2" -anchor nw -width 10 -variable adatsync2 -font times
353checkbutton .status.sync.adat3 -selectcolor red -text "ADAT3" -anchor nw -width 10 -variable adatsync3 -font times
354
355pack .status.sync.text .status.sync.adat1 .status.sync.adat2 .status.sync.adat3 -side top -padx 3
356
357# Timecode
358
359frame .status.tc
360label .status.tc.text -text "Timecode" -justify left
361checkbutton .status.tc.busy -selectcolor red -text "busy" -anchor nw -width 10 -variable tcbusy -font times
362checkbutton .status.tc.out -selectcolor red -text "out" -anchor nw -width 10 -variable tcout -font times
363checkbutton .status.tc.valid -selectcolor red -text "valid" -anchor nw -width 10 -variable tcvalid -font times
364
365pack .status.tc.text .status.tc.busy .status.tc.out .status.tc.valid -side top -padx 3
366
367# SPDIF In
368
369frame .status.spdif
370label .status.spdif.text -text "SPDIF In" -justify left
371label .status.spdif.sr -text "--.- kHz" -anchor n -width 10 -font times
372checkbutton .status.spdif.error -selectcolor red -text "Input Lock" -anchor nw -width 10 -variable spdiferr -font times
373
374pack .status.spdif.text .status.spdif.sr .status.spdif.error -side top -padx 3
375
376pack .status.sr .status.lock .status.sync .status.tc .status.spdif -side left -fill x -anchor n -expand 1
377
378
379#
380# CONTROL
381#
382
383proc setprof {} {
384 global CTRLPROG
385 global spprof
386 exec $CTRLPROG pro $spprof
387}
388
389proc setemph {} {
390 global CTRLPROG
391 global spemph
392 exec $CTRLPROG emphasis $spemph
393}
394
395proc setnoaud {} {
396 global CTRLPROG
397 global spnoaud
398 exec $CTRLPROG dolby $spnoaud
399}
400
401proc setoptical {} {
402 global CTRLPROG
403 global spoptical
404 exec $CTRLPROG optout $spoptical
405}
406
407proc setspdifin {} {
408 global CTRLPROG
409 global spdifin
410 exec $CTRLPROG spdifin [expr $spdifin - 1]
411}
412
413proc setsyncsource {} {
414 global CTRLPROG
415 global syncsource
416 exec $CTRLPROG syncref [expr $syncsource -1]
417}
418
419
420proc setmaster {} {
421 global CTRLPROG
422 global master
423 exec $CTRLPROG master $master
424}
425
426proc setwordclock {} {
427 global CTRLPROG
428 global wordclock
429 exec $CTRLPROG wordclock $wordclock
430}
431
432proc setadat1cd {} {
433 global CTRLPROG
434 global adat1cd
435 exec $CTRLPROG adat1cd $adat1cd
436}
437
438
439frame .control
440
441# SPDIF In & SPDIF Out
442
443
444frame .control.spdif
445
446frame .control.spdif.in
447label .control.spdif.in.text -text "SPDIF In" -justify left
448radiobutton .control.spdif.in.input1 -text "Optical" -anchor nw -width 13 -variable spdifin -value 1 -command setspdifin -selectcolor blue -font times
449radiobutton .control.spdif.in.input2 -text "Coaxial" -anchor nw -width 13 -variable spdifin -value 2 -command setspdifin -selectcolor blue -font times
450radiobutton .control.spdif.in.input3 -text "Intern " -anchor nw -width 13 -variable spdifin -command setspdifin -value 3 -selectcolor blue -font times
451
452checkbutton .control.spdif.in.adat1cd -text "ADAT1 Intern" -anchor nw -width 13 -variable adat1cd -command setadat1cd -selectcolor blue -font times
453
454pack .control.spdif.in.text .control.spdif.in.input1 .control.spdif.in.input2 .control.spdif.in.input3 .control.spdif.in.adat1cd
455
456label .control.spdif.space
457
458frame .control.spdif.out
459label .control.spdif.out.text -text "SPDIF Out" -justify left
460checkbutton .control.spdif.out.pro -text "Professional" -anchor nw -width 13 -variable spprof -command setprof -selectcolor blue -font times
461checkbutton .control.spdif.out.emphasis -text "Emphasis" -anchor nw -width 13 -variable spemph -command setemph -selectcolor blue -font times
462checkbutton .control.spdif.out.dolby -text "NoAudio" -anchor nw -width 13 -variable spnoaud -command setnoaud -selectcolor blue -font times
463checkbutton .control.spdif.out.optout -text "Optical Out" -anchor nw -width 13 -variable spoptical -command setoptical -selectcolor blue -font times
464
465pack .control.spdif.out.optout .control.spdif.out.dolby .control.spdif.out.emphasis .control.spdif.out.pro .control.spdif.out.text -side bottom
466
467pack .control.spdif.in .control.spdif.space .control.spdif.out -side top -fill y -padx 3 -expand 1
468
469# Sync Mode & Sync Source
470
471frame .control.sync
472frame .control.sync.mode
473label .control.sync.mode.text -text "Sync Mode" -justify left
474checkbutton .control.sync.mode.master -text "Master" -anchor nw -width 13 -variable master -command setmaster -selectcolor blue -font times
475checkbutton .control.sync.mode.wc -text "Wordclock" -anchor nw -width 13 -variable wordclock -command setwordclock -selectcolor blue -font times
476
477pack .control.sync.mode.text .control.sync.mode.master .control.sync.mode.wc
478
479label .control.sync.space
480
481frame .control.sync.src
482label .control.sync.src.text -text "Sync Source" -justify left
483radiobutton .control.sync.src.input1 -text "ADAT1" -anchor nw -width 13 -variable syncsource -value 1 -command setsyncsource -selectcolor blue -font times
484radiobutton .control.sync.src.input2 -text "ADAT2" -anchor nw -width 13 -variable syncsource -value 2 -command setsyncsource -selectcolor blue -font times
485radiobutton .control.sync.src.input3 -text "ADAT3" -anchor nw -width 13 -variable syncsource -command setsyncsource -value 3 -selectcolor blue -font times
486radiobutton .control.sync.src.input4 -text "SPDIF" -anchor nw -width 13 -variable syncsource -command setsyncsource -value 4 -selectcolor blue -font times
487
488pack .control.sync.src.input4 .control.sync.src.input3 .control.sync.src.input2 .control.sync.src.input1 .control.sync.src.text -side bottom
489
490pack .control.sync.mode .control.sync.space .control.sync.src -side top -fill y -padx 3 -expand 1
491
492label .control.space -text "" -width 10
493
494# Buffer Size
495
496frame .control.buf
497label .control.buf.text -text "Buffer Size (Latency)" -justify left
498radiobutton .control.buf.b1 -selectcolor red -text "64 (1.5 ms)" -width 13 -anchor nw -variable ssrate -value 1 -font times
499radiobutton .control.buf.b2 -selectcolor red -text "128 (3 ms)" -width 13 -anchor nw -variable ssrate -value 2 -font times
500radiobutton .control.buf.b3 -selectcolor red -text "256 (6 ms)" -width 13 -anchor nw -variable ssrate -value 3 -font times
501radiobutton .control.buf.b4 -selectcolor red -text "512 (12 ms)" -width 13 -anchor nw -variable ssrate -value 4 -font times
502radiobutton .control.buf.b5 -selectcolor red -text "1024 (23 ms)" -width 13 -anchor nw -variable ssrate -value 5 -font times
503radiobutton .control.buf.b6 -selectcolor red -text "2048 (46 ms)" -width 13 -anchor nw -variable ssrate -value 6 -font times
504radiobutton .control.buf.b7 -selectcolor red -text "4096 (93 ms)" -width 13 -anchor nw -variable ssrate -value 7 -font times
505radiobutton .control.buf.b8 -selectcolor red -text "8192 (186 ms)" -width 13 -anchor nw -variable ssrate -value 8 -font times
506
507pack .control.buf.text .control.buf.b1 .control.buf.b2 .control.buf.b3 .control.buf.b4 .control.buf.b5 .control.buf.b6 .control.buf.b7 .control.buf.b8 -side top -padx 3
508
509# Offset
510
511frame .control.offset
512
513frame .control.offset.in
514label .control.offset.in.text -text "Offset In" -justify left
515label .control.offset.in.off0 -text "dev\#0: -" -anchor nw -width 10 -font times
516label .control.offset.in.off1 -text "dev\#1: -" -anchor nw -width 10 -font times
517label .control.offset.in.off2 -text "dev\#2: -" -anchor nw -width 10 -font times
518label .control.offset.in.off3 -text "dev\#3: -" -anchor nw -width 10 -font times
519
520pack .control.offset.in.text .control.offset.in.off0 .control.offset.in.off1 .control.offset.in.off2 .control.offset.in.off3
521
522label .control.offset.space
523
524frame .control.offset.out
525label .control.offset.out.text -text "Offset Out" -justify left
526label .control.offset.out.off0 -text "dev\#0: -" -anchor nw -width 10 -font times
527label .control.offset.out.off1 -text "dev\#1: -" -anchor nw -width 10 -font times
528label .control.offset.out.off2 -text "dev\#2: -" -anchor nw -width 10 -font times
529label .control.offset.out.off3 -text "dev\#3: -" -anchor nw -width 10 -font times
530
531pack .control.offset.out.off3 .control.offset.out.off2 .control.offset.out.off1 .control.offset.out.off0 .control.offset.out.text -side bottom
532
533pack .control.offset.in .control.offset.space .control.offset.out -side top -fill y -padx 3 -expand 1
534
535
536pack .control.spdif .control.sync .control.space .control.buf .control.offset -side left -fill both -anchor n -expand 1
537
538
539label .statustext -text Status -justify center -relief ridge
540label .controltext -text Control -justify center -relief ridge
541
542label .statusspace
543label .controlspace
544
545pack .statustext .status .statusspace .controltext .control .controlspace -side top -anchor nw -fill both -expand 1
546
547
548proc get_bit {output sstr} {
549 set idx1 [string last [concat $sstr 1] $output]
550 set idx1 [expr $idx1 != -1]
551 return $idx1
552}
553
554proc get_val {output sstr} {
555 set val [string wordend $output [string last $sstr $output]]
556 set val [string range $output $val [expr $val+1]]
557 return $val
558}
559
560proc get_val2 {output sstr} {
561 set val [string wordend $output [string first $sstr $output]]
562 set val [string range $output $val [expr $val+2]]
563 return $val
564}
565
566proc get_control {} {
567 global spprof
568 global spemph
569 global spnoaud
570 global spoptical
571 global spdifin
572 global ssrate
573 global master
574 global wordclock
575 global syncsource
576 global CTRLPROG
577
578 set f [open "| $CTRLPROG control" r+]
579 set ooo [read $f 1000]
580 close $f
581# puts $ooo
582
583 set spprof [ get_bit $ooo "pro"]
584 set spemph [ get_bit $ooo "emphasis"]
585 set spnoaud [ get_bit $ooo "dolby"]
586 set spoptical [ get_bit $ooo "opt_out"]
587 set spdifin [ expr [ get_val $ooo "spdif_in"] + 1]
588 set ssrate [ expr [ get_val $ooo "latency"] + 1]
589 set master [ expr [ get_val $ooo "master"]]
590 set wordclock [ expr [ get_val $ooo "wordclock"]]
591 set syncsource [ expr [ get_val $ooo "sync_ref"] + 1]
592}
593
594proc get_status {} {
595 global srate
596 global ctrlcom
597
598 global adatlock1
599 global adatlock2
600 global adatlock3
601
602 global adatsync1
603 global adatsync2
604 global adatsync3
605
606 global tcbusy
607 global tcout
608 global tcvalid
609
610 global spdiferr
611 global crystal
612 global .status.spdif.text
613 global CTRLPROG
614
615
616 set f [open "| $CTRLPROG status" r+]
617 set ooo [read $f 1000]
618 close $f
619# puts $ooo
620
621# samplerate
622
623 set idx1 [string last "sr48 1" $ooo]
624 set idx2 [string last "doublespeed 1" $ooo]
625 if {$idx1 >= 0} {
626 set fact1 48000
627 } else {
628 set fact1 44100
629 }
630
631 if {$idx2 >= 0} {
632 set fact2 2
633 } else {
634 set fact2 1
635 }
636 set srate [expr $fact1 * $fact2]
637# ADAT lock
638
639 set val [get_val $ooo lockmask]
640 set adatlock1 0
641 set adatlock2 0
642 set adatlock3 0
643 if {[expr $val & 1]} {
644 set adatlock3 1
645 }
646 if {[expr $val & 2]} {
647 set adatlock2 1
648 }
649 if {[expr $val & 4]} {
650 set adatlock1 1
651 }
652
653# ADAT sync
654 set val [get_val $ooo syncmask]
655 set adatsync1 0
656 set adatsync2 0
657 set adatsync3 0
658
659 if {[expr $val & 1]} {
660 set adatsync3 1
661 }
662 if {[expr $val & 2]} {
663 set adatsync2 1
664 }
665 if {[expr $val & 4]} {
666 set adatsync1 1
667 }
668
669# TC busy
670
671 set tcbusy [get_bit $ooo "busy"]
672 set tcout [get_bit $ooo "out"]
673 set tcvalid [get_bit $ooo "valid"]
674 set spdiferr [expr [get_bit $ooo "spdif_error"] == 0]
675
676# 000=64kHz, 100=88.2kHz, 011=96kHz
677# 111=32kHz, 110=44.1kHz, 101=48kHz
678
679 set val [get_val $ooo crystalrate]
680
681 set crystal "--.- kHz"
682 if {$val == 0} {
683 set crystal "64 kHz"
684 }
685 if {$val == 4} {
686 set crystal "88.2 kHz"
687 }
688 if {$val == 3} {
689 set crystal "96 kHz"
690 }
691 if {$val == 7} {
692 set crystal "32 kHz"
693 }
694 if {$val == 6} {
695 set crystal "44.1 kHz"
696 }
697 if {$val == 5} {
698 set crystal "48 kHz"
699 }
700 .status.spdif.sr configure -text $crystal
701}
702
703proc get_offset {} {
704 global inoffset
705 global outoffset
706 global CTRLPROG
707
708 set f [open "| $CTRLPROG mix" r+]
709 set ooo [read $f 1000]
710 close $f
711# puts $ooo
712
713 if { [string match "*devnr*" $ooo] } {
714 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
715 set val [get_val2 $ooo i_offset]
716 .control.offset.in.off0 configure -text "dev\#0: $val"
717 set val [get_val2 $ooo o_offset]
718 .control.offset.out.off0 configure -text "dev\#0: $val"
719 } else {
720 .control.offset.in.off0 configure -text "dev\#0: -"
721 .control.offset.out.off0 configure -text "dev\#0: -"
722 }
723 if { [string match "*devnr*" $ooo] } {
724 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
725 set val [get_val2 $ooo i_offset]
726 .control.offset.in.off1 configure -text "dev\#1: $val"
727 set val [get_val2 $ooo o_offset]
728 .control.offset.out.off1 configure -text "dev\#1: $val"
729 } else {
730 .control.offset.in.off1 configure -text "dev\#1: -"
731 .control.offset.out.off1 configure -text "dev\#1: -"
732 }
733 if { [string match "*devnr*" $ooo] } {
734 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
735 set val [get_val2 $ooo i_offset]
736 .control.offset.in.off2 configure -text "dev\#2: $val"
737 set val [get_val2 $ooo o_offset]
738 .control.offset.out.off2 configure -text "dev\#2: $val"
739 } else {
740 .control.offset.in.off2 configure -text "dev\#2: -"
741 .control.offset.out.off2 configure -text "dev\#2: -"
742 }
743 if { [string match "*devnr*" $ooo] } {
744 set ooo [string range $ooo [string wordend $ooo [string first devnr $ooo]] end]
745 set val [get_val2 $ooo i_offset]
746 .control.offset.in.off3 configure -text "dev\#3: $val"
747 set val [get_val2 $ooo o_offset]
748 .control.offset.out.off3 configure -text "dev\#3: $val"
749 } else {
750 .control.offset.in.off3 configure -text "dev\#3: -"
751 .control.offset.out.off3 configure -text "dev\#3: -"
752 }
753}
754
755
756proc get_all {} {
757get_status
758get_control
759get_offset
760}
761
762# main
763while {1} {
764 after 200
765 get_all
766 update
767}
diff --git a/Documentation/sound/oss/solo1 b/Documentation/sound/oss/solo1
deleted file mode 100644
index 6f53d407d027..000000000000
--- a/Documentation/sound/oss/solo1
+++ /dev/null
@@ -1,70 +0,0 @@
1Recording
2---------
3
4Recording does not work on the author's card, but there
5is at least one report of it working on later silicon.
6The chip behaves differently than described in the data sheet,
7likely due to a chip bug. Working around this would require
8the help of ESS (for example by publishing an errata sheet),
9but ESS has not done so so far.
10
11Also, the chip only supports 24 bit addresses for recording,
12which means it cannot work on some Alpha mainboards.
13
14
15/proc/sound, /dev/sndstat
16-------------------------
17
18/proc/sound and /dev/sndstat is not supported by the
19driver. To find out whether the driver succeeded loading,
20check the kernel log (dmesg).
21
22
23ALaw/uLaw sample formats
24------------------------
25
26This driver does not support the ALaw/uLaw sample formats.
27ALaw is the default mode when opening a sound device
28using OSS/Free. The reason for the lack of support is
29that the hardware does not support these formats, and adding
30conversion routines to the kernel would lead to very ugly
31code in the presence of the mmap interface to the driver.
32And since xquake uses mmap, mmap is considered important :-)
33and no sane application uses ALaw/uLaw these days anyway.
34In short, playing a Sun .au file as follows:
35
36cat my_file.au > /dev/dsp
37
38does not work. Instead, you may use the play script from
39Chris Bagwell's sox-12.14 package (or later, available from the URL
40below) to play many different audio file formats.
41The script automatically determines the audio format
42and does do audio conversions if necessary.
43http://home.sprynet.com/sprynet/cbagwell/projects.html
44
45
46Blocking vs. nonblocking IO
47---------------------------
48
49Unlike OSS/Free this driver honours the O_NONBLOCK file flag
50not only during open, but also during read and write.
51This is an effort to make the sound driver interface more
52regular. Timidity has problems with this; a patch
53is available from http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html.
54(Timidity patched will also run on OSS/Free).
55
56
57MIDI UART
58---------
59
60The driver supports a simple MIDI UART interface, with
61no ioctl's supported.
62
63
64MIDI synthesizer
65----------------
66
67The card has an OPL compatible FM synthesizer.
68
69Thomas Sailer
70t.sailer@alumni.ethz.ch
diff --git a/Documentation/sound/oss/sonicvibes b/Documentation/sound/oss/sonicvibes
deleted file mode 100644
index 84dee2e0b37d..000000000000
--- a/Documentation/sound/oss/sonicvibes
+++ /dev/null
@@ -1,81 +0,0 @@
1/proc/sound, /dev/sndstat
2-------------------------
3
4/proc/sound and /dev/sndstat is not supported by the
5driver. To find out whether the driver succeeded loading,
6check the kernel log (dmesg).
7
8
9ALaw/uLaw sample formats
10------------------------
11
12This driver does not support the ALaw/uLaw sample formats.
13ALaw is the default mode when opening a sound device
14using OSS/Free. The reason for the lack of support is
15that the hardware does not support these formats, and adding
16conversion routines to the kernel would lead to very ugly
17code in the presence of the mmap interface to the driver.
18And since xquake uses mmap, mmap is considered important :-)
19and no sane application uses ALaw/uLaw these days anyway.
20In short, playing a Sun .au file as follows:
21
22cat my_file.au > /dev/dsp
23
24does not work. Instead, you may use the play script from
25Chris Bagwell's sox-12.14 package (available from the URL
26below) to play many different audio file formats.
27The script automatically determines the audio format
28and does do audio conversions if necessary.
29http://home.sprynet.com/sprynet/cbagwell/projects.html
30
31
32Blocking vs. nonblocking IO
33---------------------------
34
35Unlike OSS/Free this driver honours the O_NONBLOCK file flag
36not only during open, but also during read and write.
37This is an effort to make the sound driver interface more
38regular. Timidity has problems with this; a patch
39is available from http://www.ife.ee.ethz.ch/~sailer/linux/pciaudio.html.
40(Timidity patched will also run on OSS/Free).
41
42
43MIDI UART
44---------
45
46The driver supports a simple MIDI UART interface, with
47no ioctl's supported.
48
49
50MIDI synthesizer
51----------------
52
53The card both has an OPL compatible FM synthesizer as well as
54a wavetable synthesizer.
55
56I haven't managed so far to get the OPL synth running.
57
58Using the wavetable synthesizer requires allocating
591-4MB of physically contiguous memory, which isn't possible
60currently on Linux without ugly hacks like the bigphysarea
61patch. Therefore, the driver doesn't support wavetable
62synthesis.
63
64
65No support from S3
66------------------
67
68I do not get any support from S3. Therefore, the driver
69still has many problems. For example, although the manual
70states that the chip should be able to access the sample
71buffer anywhere in 32bit address space, I haven't managed to
72get it working with buffers above 16M. Therefore, the card
73has the same disadvantages as ISA soundcards.
74
75Given that the card is also very noisy, and if you haven't
76already bought it, you should strongly opt for one of the
77comparatively priced Ensoniq products.
78
79
80Thomas Sailer
81t.sailer@alumni.ethz.ch
diff --git a/Documentation/sound/oss/ultrasound b/Documentation/sound/oss/ultrasound
index 32cd50478b36..eed331c738a3 100644
--- a/Documentation/sound/oss/ultrasound
+++ b/Documentation/sound/oss/ultrasound
@@ -19,7 +19,7 @@ db16 ???
19no_wave_dma option 19no_wave_dma option
20 20
21This option defaults to a value of 0, which allows the Ultrasound wavetable 21This option defaults to a value of 0, which allows the Ultrasound wavetable
22DSP to use DMA for for playback and downloading samples. This is the same 22DSP to use DMA for playback and downloading samples. This is the same
23as the old behaviour. If set to 1, no DMA is needed for downloading samples, 23as the old behaviour. If set to 1, no DMA is needed for downloading samples,
24and allows owners of a GUS MAX to make use of simultaneous digital audio 24and allows owners of a GUS MAX to make use of simultaneous digital audio
25(/dev/dsp), MIDI, and wavetable playback. 25(/dev/dsp), MIDI, and wavetable playback.
diff --git a/Documentation/sound/oss/vwsnd b/Documentation/sound/oss/vwsnd
index a6ea0a1df9e4..4c6cbdb3c548 100644
--- a/Documentation/sound/oss/vwsnd
+++ b/Documentation/sound/oss/vwsnd
@@ -12,7 +12,7 @@ boxes.
12 12
13The Visual Workstation has an Analog Devices AD1843 "SoundComm" audio 13The Visual Workstation has an Analog Devices AD1843 "SoundComm" audio
14codec chip. The AD1843 is accessed through the Cobalt I/O ASIC, also 14codec chip. The AD1843 is accessed through the Cobalt I/O ASIC, also
15known as Lithium. This driver programs both both chips. 15known as Lithium. This driver programs both chips.
16 16
17============================================================================== 17==============================================================================
18QUICK CONFIGURATION 18QUICK CONFIGURATION
diff --git a/Documentation/sparc/sbus_drivers.txt b/Documentation/sparc/sbus_drivers.txt
index 4b9351624f13..8418d35484fc 100644
--- a/Documentation/sparc/sbus_drivers.txt
+++ b/Documentation/sparc/sbus_drivers.txt
@@ -25,8 +25,8 @@ the bits necessary to run your device. The most commonly
25used members of this structure, and their typical usage, 25used members of this structure, and their typical usage,
26will be detailed below. 26will be detailed below.
27 27
28 Here is a piece of skeleton code for perofming a device 28 Here is a piece of skeleton code for performing a device
29probe in an SBUS driverunder Linux: 29probe in an SBUS driver under Linux:
30 30
31 static int __devinit mydevice_probe_one(struct sbus_dev *sdev) 31 static int __devinit mydevice_probe_one(struct sbus_dev *sdev)
32 { 32 {
@@ -98,7 +98,7 @@ in your .remove method.
98 98
99 Any memory allocated, registers mapped, IRQs registered, 99 Any memory allocated, registers mapped, IRQs registered,
100etc. must be undone by your .remove method so that all resources 100etc. must be undone by your .remove method so that all resources
101of your device are relased by the time it returns. 101of your device are released by the time it returns.
102 102
103 You should _NOT_ use the for_each_sbus(), for_each_sbusdev(), 103 You should _NOT_ use the for_each_sbus(), for_each_sbusdev(),
104and for_all_sbusdev() interfaces. They are deprecated, will be 104and for_all_sbusdev() interfaces. They are deprecated, will be
diff --git a/Documentation/spi/pxa2xx b/Documentation/spi/pxa2xx
index 9c45f3df2e18..a1e0ee20f595 100644
--- a/Documentation/spi/pxa2xx
+++ b/Documentation/spi/pxa2xx
@@ -124,12 +124,12 @@ use a value of 8.
124The "pxa2xx_spi_chip.timeout_microsecs" fields is used to efficiently handle 124The "pxa2xx_spi_chip.timeout_microsecs" fields is used to efficiently handle
125trailing bytes in the SSP receiver fifo. The correct value for this field is 125trailing bytes in the SSP receiver fifo. The correct value for this field is
126dependent on the SPI bus speed ("spi_board_info.max_speed_hz") and the specific 126dependent on the SPI bus speed ("spi_board_info.max_speed_hz") and the specific
127slave device. Please note the the PXA2xx SSP 1 does not support trailing byte 127slave device. Please note that the PXA2xx SSP 1 does not support trailing byte
128timeouts and must busy-wait any trailing bytes. 128timeouts and must busy-wait any trailing bytes.
129 129
130The "pxa2xx_spi_chip.enable_loopback" field is used to place the SSP porting 130The "pxa2xx_spi_chip.enable_loopback" field is used to place the SSP porting
131into internal loopback mode. In this mode the SSP controller internally 131into internal loopback mode. In this mode the SSP controller internally
132connects the SSPTX pin the the SSPRX pin. This is useful for initial setup 132connects the SSPTX pin to the SSPRX pin. This is useful for initial setup
133testing. 133testing.
134 134
135The "pxa2xx_spi_chip.cs_control" field is used to point to a board specific 135The "pxa2xx_spi_chip.cs_control" field is used to point to a board specific
@@ -208,7 +208,7 @@ DMA and PIO I/O Support
208----------------------- 208-----------------------
209The pxa2xx_spi driver support both DMA and interrupt driven PIO message 209The pxa2xx_spi driver support both DMA and interrupt driven PIO message
210transfers. The driver defaults to PIO mode and DMA transfers must enabled by 210transfers. The driver defaults to PIO mode and DMA transfers must enabled by
211setting the "enable_dma" flag in the "pxa2xx_spi_master" structure and and 211setting the "enable_dma" flag in the "pxa2xx_spi_master" structure and
212ensuring that the "pxa2xx_spi_chip.dma_burst_size" field is non-zero. The DMA 212ensuring that the "pxa2xx_spi_chip.dma_burst_size" field is non-zero. The DMA
213mode support both coherent and stream based DMA mappings. 213mode support both coherent and stream based DMA mappings.
214 214
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary
index 068732d32276..72795796b13d 100644
--- a/Documentation/spi/spi-summary
+++ b/Documentation/spi/spi-summary
@@ -262,7 +262,7 @@ NON-STATIC CONFIGURATIONS
262Developer boards often play by different rules than product boards, and one 262Developer boards often play by different rules than product boards, and one
263example is the potential need to hotplug SPI devices and/or controllers. 263example is the potential need to hotplug SPI devices and/or controllers.
264 264
265For those cases you might need to use use spi_busnum_to_master() to look 265For those cases you might need to use spi_busnum_to_master() to look
266up the spi bus master, and will likely need spi_new_device() to provide the 266up the spi bus master, and will likely need spi_new_device() to provide the
267board info based on the board that was hotplugged. Of course, you'd later 267board info based on the board that was hotplugged. Of course, you'd later
268call at least spi_unregister_device() when that board is removed. 268call at least spi_unregister_device() when that board is removed.
@@ -322,7 +322,7 @@ As soon as it enters probe(), the driver may issue I/O requests to
322the SPI device using "struct spi_message". When remove() returns, 322the SPI device using "struct spi_message". When remove() returns,
323the driver guarantees that it won't submit any more such messages. 323the driver guarantees that it won't submit any more such messages.
324 324
325 - An spi_message is a sequence of of protocol operations, executed 325 - An spi_message is a sequence of protocol operations, executed
326 as one atomic sequence. SPI driver controls include: 326 as one atomic sequence. SPI driver controls include:
327 327
328 + when bidirectional reads and writes start ... by how its 328 + when bidirectional reads and writes start ... by how its
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt
index e409e5d07486..02a481225b0d 100644
--- a/Documentation/stable_kernel_rules.txt
+++ b/Documentation/stable_kernel_rules.txt
@@ -4,7 +4,7 @@ Rules on what kind of patches are accepted, and which ones are not, into the
4"-stable" tree: 4"-stable" tree:
5 5
6 - It must be obviously correct and tested. 6 - It must be obviously correct and tested.
7 - It can not be bigger than 100 lines, with context. 7 - It cannot be bigger than 100 lines, with context.
8 - It must fix only one thing. 8 - It must fix only one thing.
9 - It must fix a real bug that bothers people (not a, "This could be a 9 - It must fix a real bug that bothers people (not a, "This could be a
10 problem..." type thing). 10 problem..." type thing).
@@ -14,7 +14,7 @@ Rules on what kind of patches are accepted, and which ones are not, into the
14 critical. 14 critical.
15 - No "theoretical race condition" issues, unless an explanation of how the 15 - No "theoretical race condition" issues, unless an explanation of how the
16 race can be exploited is also provided. 16 race can be exploited is also provided.
17 - It can not contain any "trivial" fixes in it (spelling changes, 17 - It cannot contain any "trivial" fixes in it (spelling changes,
18 whitespace cleanups, etc). 18 whitespace cleanups, etc).
19 - It must be accepted by the relevant subsystem maintainer. 19 - It must be accepted by the relevant subsystem maintainer.
20 - It must follow the Documentation/SubmittingPatches rules. 20 - It must follow the Documentation/SubmittingPatches rules.
diff --git a/Documentation/uml/UserModeLinux-HOWTO.txt b/Documentation/uml/UserModeLinux-HOWTO.txt
index 544430e39980..b60590eca18f 100644
--- a/Documentation/uml/UserModeLinux-HOWTO.txt
+++ b/Documentation/uml/UserModeLinux-HOWTO.txt
@@ -157,7 +157,7 @@
157 13. What to do when UML doesn't work 157 13. What to do when UML doesn't work
158 158
159 13.1 Strange compilation errors when you build from source 159 13.1 Strange compilation errors when you build from source
160 13.2 UML hangs on boot after mounting devfs 160 13.2 (obsolete)
161 13.3 A variety of panics and hangs with /tmp on a reiserfs filesystem 161 13.3 A variety of panics and hangs with /tmp on a reiserfs filesystem
162 13.4 The compile fails with errors about conflicting types for 'open', 'dup', and 'waitpid' 162 13.4 The compile fails with errors about conflicting types for 'open', 'dup', and 'waitpid'
163 13.5 UML doesn't work when /tmp is an NFS filesystem 163 13.5 UML doesn't work when /tmp is an NFS filesystem
@@ -379,31 +379,6 @@
379 bug fixes and enhancements that have gone into subsequent releases. 379 bug fixes and enhancements that have gone into subsequent releases.
380 380
381 381
382 If you build your own kernel, and want to boot it from one of the
383 filesystems distributed from this site, then, in nearly all cases,
384 devfs must be compiled into the kernel and mounted at boot time. The
385 exception is the SuSE filesystem. For this, devfs must either not be
386 in the kernel at all, or "devfs=nomount" must be on the kernel command
387 line. Any disagreement between the kernel and the filesystem being
388 booted about whether devfs is being used will result in the boot
389 getting no further than single-user mode.
390
391
392 If you don't want to use devfs, you can remove the need for it from a
393 filesystem by copying /dev from someplace, making a bunch of /dev/ubd
394 devices:
395
396
397 UML# for i in 0 1 2 3 4 5 6 7; do mknod ubd$i b 98 $i; done
398
399
400
401
402 and changing /etc/fstab and /etc/inittab to refer to the non-devfs
403 devices.
404
405
406
407 22..22.. CCoommppiilliinngg aanndd iinnssttaalllliinngg kkeerrnneell mmoodduulleess 382 22..22.. CCoommppiilliinngg aanndd iinnssttaalllliinngg kkeerrnneell mmoodduulleess
408 383
409 UML modules are built in the same way as the native kernel (with the 384 UML modules are built in the same way as the native kernel (with the
@@ -839,9 +814,7 @@
839 +o None - device=none 814 +o None - device=none
840 815
841 816
842 This causes the device to disappear. If you are using devfs, the 817 This causes the device to disappear.
843 device will not appear in /dev. If not, then attempts to open it
844 will return -ENODEV.
845 818
846 819
847 820
@@ -1047,7 +1020,7 @@
1047 1020
1048 Note that the IP address you assign to the host end of the tap device 1021 Note that the IP address you assign to the host end of the tap device
1049 must be different than the IP you assign to the eth device inside UML. 1022 must be different than the IP you assign to the eth device inside UML.
1050 If you are short on IPs and don't want to comsume two per UML, then 1023 If you are short on IPs and don't want to consume two per UML, then
1051 you can reuse the host's eth IP address for the host ends of the tap 1024 you can reuse the host's eth IP address for the host ends of the tap
1052 devices. Internally, the UMLs must still get unique IPs for their eth 1025 devices. Internally, the UMLs must still get unique IPs for their eth
1053 devices. You can also give the UMLs non-routable IPs (192.168.x.x or 1026 devices. You can also give the UMLs non-routable IPs (192.168.x.x or
@@ -2058,7 +2031,7 @@
2058 there are multiple COWs associated with a backing file, a -d merge of 2031 there are multiple COWs associated with a backing file, a -d merge of
2059 one of them will invalidate all of the others. However, it is 2032 one of them will invalidate all of the others. However, it is
2060 convenient if you're short of disk space, and it should also be 2033 convenient if you're short of disk space, and it should also be
2061 noticably faster than a non-destructive merge. 2034 noticeably faster than a non-destructive merge.
2062 2035
2063 2036
2064 2037
@@ -3898,29 +3871,6 @@
3898 3871
3899 3872
3900 3873
3901 1133..22.. UUMMLL hhaannggss oonn bboooott aafftteerr mmoouunnttiinngg ddeevvffss
3902
3903 The boot looks like this:
3904
3905
3906 VFS: Mounted root (ext2 filesystem) readonly.
3907 Mounted devfs on /dev
3908
3909
3910
3911
3912 You're probably running a recent distribution on an old machine. I
3913 saw this with the RH7.1 filesystem running on a Pentium. The shared
3914 library loader, ld.so, was executing an instruction (cmove) which the
3915 Pentium didn't support. That instruction was apparently added later.
3916 If you run UML under the debugger, you'll see the hang caused by one
3917 instruction causing an infinite SIGILL stream.
3918
3919
3920 The fix is to boot UML on an older filesystem.
3921
3922
3923
3924 1133..33.. AA vvaarriieettyy ooff ppaanniiccss aanndd hhaannggss wwiitthh //ttmmpp oonn aa rreeiisseerrffss ffiilleessyyss-- 3874 1133..33.. AA vvaarriieettyy ooff ppaanniiccss aanndd hhaannggss wwiitthh //ttmmpp oonn aa rreeiisseerrffss ffiilleessyyss--
3925 tteemm 3875 tteemm
3926 3876
@@ -3953,9 +3903,9 @@
3953 3903
3954 1133..55.. UUMMLL ddooeessnn''tt wwoorrkk wwhheenn //ttmmpp iiss aann NNFFSS ffiilleessyysstteemm 3904 1133..55.. UUMMLL ddooeessnn''tt wwoorrkk wwhheenn //ttmmpp iiss aann NNFFSS ffiilleessyysstteemm
3955 3905
3956 This seems to be a similar situation with the resierfs problem above. 3906 This seems to be a similar situation with the ReiserFS problem above.
3957 Some versions of NFS seems not to handle mmap correctly, which UML 3907 Some versions of NFS seems not to handle mmap correctly, which UML
3958 depends on. The workaround is have /tmp be non-NFS directory. 3908 depends on. The workaround is have /tmp be a non-NFS directory.
3959 3909
3960 3910
3961 1133..66.. UUMMLL hhaannggss oonn bboooott wwhheenn ccoommppiilleedd wwiitthh ggpprrooff ssuuppppoorrtt 3911 1133..66.. UUMMLL hhaannggss oonn bboooott wwhheenn ccoommppiilleedd wwiitthh ggpprrooff ssuuppppoorrtt
@@ -4022,7 +3972,7 @@
4022 nneett 3972 nneett
4023 3973
4024 If you can connect to the host, and the host can connect to UML, but 3974 If you can connect to the host, and the host can connect to UML, but
4025 you can not connect to any other machines, then you may need to enable 3975 you cannot connect to any other machines, then you may need to enable
4026 IP Masquerading on the host. Usually this is only experienced when 3976 IP Masquerading on the host. Usually this is only experienced when
4027 using private IP addresses (192.168.x.x or 10.x.x.x) for host/UML 3977 using private IP addresses (192.168.x.x or 10.x.x.x) for host/UML
4028 networking, rather than the public address space that your host is 3978 networking, rather than the public address space that your host is
@@ -4671,7 +4621,7 @@
4671 Chris Reahard built a specialized root filesystem for running a DNS 4621 Chris Reahard built a specialized root filesystem for running a DNS
4672 server jailed inside UML. It's available from the download 4622 server jailed inside UML. It's available from the download
4673 <http://user-mode-linux.sourceforge.net/dl-sf.html> page in the Jail 4623 <http://user-mode-linux.sourceforge.net/dl-sf.html> page in the Jail
4674 Filesysems section. 4624 Filesystems section.
4675 4625
4676 4626
4677 4627
diff --git a/Documentation/unshare.txt b/Documentation/unshare.txt
index 90a5e9e5bef1..a8643513a5f6 100644
--- a/Documentation/unshare.txt
+++ b/Documentation/unshare.txt
@@ -260,7 +260,7 @@ items:
260 a pointer to it. 260 a pointer to it.
261 261
262 7.4) Appropriately modify architecture specific code to register the 262 7.4) Appropriately modify architecture specific code to register the
263 the new system call. 263 new system call.
264 264
2658) Test Specification 2658) Test Specification
266--------------------- 266---------------------
diff --git a/Documentation/usb/URB.txt b/Documentation/usb/URB.txt
index a49e5f2c2b46..8ffce746d496 100644
--- a/Documentation/usb/URB.txt
+++ b/Documentation/usb/URB.txt
@@ -184,7 +184,7 @@ you can pass information to the completion handler.
184Note that even when an error (or unlink) is reported, data may have been 184Note that even when an error (or unlink) is reported, data may have been
185transferred. That's because USB transfers are packetized; it might take 185transferred. That's because USB transfers are packetized; it might take
186sixteen packets to transfer your 1KByte buffer, and ten of them might 186sixteen packets to transfer your 1KByte buffer, and ten of them might
187have transferred succesfully before the completion was called. 187have transferred successfully before the completion was called.
188 188
189 189
190NOTE: ***** WARNING ***** 190NOTE: ***** WARNING *****
diff --git a/Documentation/usb/acm.txt b/Documentation/usb/acm.txt
index 8ef45ea8f691..737d6104c3f3 100644
--- a/Documentation/usb/acm.txt
+++ b/Documentation/usb/acm.txt
@@ -49,20 +49,6 @@ Abstract Control Model (USB CDC ACM) specification.
49 Unfortunately many modems and most ISDN TAs use proprietary interfaces and 49 Unfortunately many modems and most ISDN TAs use proprietary interfaces and
50thus won't work with this drivers. Check for ACM compliance before buying. 50thus won't work with this drivers. Check for ACM compliance before buying.
51 51
52 The driver (with devfs) creates these devices in /dev/usb/acm:
53
54 crw-r--r-- 1 root root 166, 0 Apr 1 10:49 0
55 crw-r--r-- 1 root root 166, 1 Apr 1 10:49 1
56 crw-r--r-- 1 root root 166, 2 Apr 1 10:49 2
57
58 And so on, up to 31, with the limit being possible to change in acm.c to up
59to 256, so you can use up to 256 USB modems with one computer (you'll need
60three USB cards for that, though).
61
62 If you don't use devfs, then you can create device nodes with the same
63minor/major numbers anywhere you want, but either the above location or
64/dev/usb/ttyACM0 is preferred.
65
66 To use the modems you need these modules loaded: 52 To use the modems you need these modules loaded:
67 53
68 usbcore.ko 54 usbcore.ko
diff --git a/Documentation/usb/error-codes.txt b/Documentation/usb/error-codes.txt
index 867f4c38f356..9cf83e8c27b8 100644
--- a/Documentation/usb/error-codes.txt
+++ b/Documentation/usb/error-codes.txt
@@ -98,13 +98,13 @@ one or more packets could finish before an error stops further endpoint I/O.
98 error, a failure to respond (often caused by 98 error, a failure to respond (often caused by
99 device disconnect), or some other fault. 99 device disconnect), or some other fault.
100 100
101-ETIMEDOUT (**) No response packet received within the prescribed 101-ETIME (**) No response packet received within the prescribed
102 bus turn-around time. This error may instead be 102 bus turn-around time. This error may instead be
103 reported as -EPROTO or -EILSEQ. 103 reported as -EPROTO or -EILSEQ.
104 104
105 Note that the synchronous USB message functions 105-ETIMEDOUT Synchronous USB message functions use this code
106 also use this code to indicate timeout expired 106 to indicate timeout expired before the transfer
107 before the transfer completed. 107 completed, and no other error was reported by HC.
108 108
109-EPIPE (**) Endpoint stalled. For non-control endpoints, 109-EPIPE (**) Endpoint stalled. For non-control endpoints,
110 reset this status with usb_clear_halt(). 110 reset this status with usb_clear_halt().
@@ -126,7 +126,7 @@ one or more packets could finish before an error stops further endpoint I/O.
126 urb->transfer_flags. 126 urb->transfer_flags.
127 127
128-ENODEV Device was removed. Often preceded by a burst of 128-ENODEV Device was removed. Often preceded by a burst of
129 other errors, since the hub driver does't detect 129 other errors, since the hub driver doesn't detect
130 device removal events immediately. 130 device removal events immediately.
131 131
132-EXDEV ISO transfer only partially completed 132-EXDEV ISO transfer only partially completed
@@ -145,7 +145,7 @@ one or more packets could finish before an error stops further endpoint I/O.
145hardware problems such as bad devices (including firmware) or cables. 145hardware problems such as bad devices (including firmware) or cables.
146 146
147(**) This is also one of several codes that different kinds of host 147(**) This is also one of several codes that different kinds of host
148controller use to to indicate a transfer has failed because of device 148controller use to indicate a transfer has failed because of device
149disconnect. In the interval before the hub driver starts disconnect 149disconnect. In the interval before the hub driver starts disconnect
150processing, devices may receive such fault reports for every request. 150processing, devices may receive such fault reports for every request.
151 151
@@ -163,6 +163,3 @@ usb_get_*/usb_set_*():
163usb_control_msg(): 163usb_control_msg():
164usb_bulk_msg(): 164usb_bulk_msg():
165-ETIMEDOUT Timeout expired before the transfer completed. 165-ETIMEDOUT Timeout expired before the transfer completed.
166 In the future this code may change to -ETIME,
167 whose definition is a closer match to this sort
168 of error.
diff --git a/Documentation/usb/hiddev.txt b/Documentation/usb/hiddev.txt
index cd6fb4b58e1f..6a790754e963 100644
--- a/Documentation/usb/hiddev.txt
+++ b/Documentation/usb/hiddev.txt
@@ -118,7 +118,7 @@ index, the ioctl returns -1 and sets errno to -EINVAL.
118HIDIOCGDEVINFO - struct hiddev_devinfo (read) 118HIDIOCGDEVINFO - struct hiddev_devinfo (read)
119Gets a hiddev_devinfo structure which describes the device. 119Gets a hiddev_devinfo structure which describes the device.
120 120
121HIDIOCGSTRING - struct struct hiddev_string_descriptor (read/write) 121HIDIOCGSTRING - struct hiddev_string_descriptor (read/write)
122Gets a string descriptor from the device. The caller must fill in the 122Gets a string descriptor from the device. The caller must fill in the
123"index" field to indicate which descriptor should be returned. 123"index" field to indicate which descriptor should be returned.
124 124
diff --git a/Documentation/usb/mtouchusb.txt b/Documentation/usb/mtouchusb.txt
index cd806bfc8b81..e43cfffaa100 100644
--- a/Documentation/usb/mtouchusb.txt
+++ b/Documentation/usb/mtouchusb.txt
@@ -11,7 +11,7 @@ CHANGES
11 Changed reset from standard USB dev reset to vendor reset 11 Changed reset from standard USB dev reset to vendor reset
12 Changed data sent to host from compensated to raw coordinates 12 Changed data sent to host from compensated to raw coordinates
13 Eliminated vendor/product module params 13 Eliminated vendor/product module params
14 Performed multiple successfull tests with an EXII-5010UC 14 Performed multiple successful tests with an EXII-5010UC
15 15
16SUPPORTED HARDWARE: 16SUPPORTED HARDWARE:
17 17
@@ -38,7 +38,7 @@ This driver appears to be one of possible 2 Linux USB Input Touchscreen
38drivers. Although 3M produces a binary only driver available for 38drivers. Although 3M produces a binary only driver available for
39download, I persist in updating this driver since I would like to use the 39download, I persist in updating this driver since I would like to use the
40touchscreen for embedded apps using QTEmbedded, DirectFB, etc. So I feel the 40touchscreen for embedded apps using QTEmbedded, DirectFB, etc. So I feel the
41logical choice is to use Linux Imput. 41logical choice is to use Linux Input.
42 42
43Currently there is no way to calibrate the device via this driver. Even if 43Currently there is no way to calibrate the device via this driver. Even if
44the device could be calibrated, the driver pulls to raw coordinate data from 44the device could be calibrated, the driver pulls to raw coordinate data from
@@ -63,7 +63,7 @@ TODO:
63Implement a control urb again to handle requests to and from the device 63Implement a control urb again to handle requests to and from the device
64such as calibration, etc once/if it becomes available. 64such as calibration, etc once/if it becomes available.
65 65
66DISCLAMER: 66DISCLAIMER:
67 67
68I am not a MicroTouch/3M employee, nor have I ever been. 3M does not support 68I am not a MicroTouch/3M employee, nor have I ever been. 3M does not support
69this driver! If you want touch drivers only supported within X, please go to: 69this driver! If you want touch drivers only supported within X, please go to:
diff --git a/Documentation/usb/usb-serial.txt b/Documentation/usb/usb-serial.txt
index 02b0f7beb6d1..8dc2bacc8f1f 100644
--- a/Documentation/usb/usb-serial.txt
+++ b/Documentation/usb/usb-serial.txt
@@ -13,7 +13,6 @@ CONFIGURATION
13 Currently the driver can handle up to 256 different serial interfaces at 13 Currently the driver can handle up to 256 different serial interfaces at
14 one time. 14 one time.
15 15
16 If you are not using devfs:
17 The major number that the driver uses is 188 so to use the driver, 16 The major number that the driver uses is 188 so to use the driver,
18 create the following nodes: 17 create the following nodes:
19 mknod /dev/ttyUSB0 c 188 0 18 mknod /dev/ttyUSB0 c 188 0
@@ -26,10 +25,6 @@ CONFIGURATION
26 mknod /dev/ttyUSB254 c 188 254 25 mknod /dev/ttyUSB254 c 188 254
27 mknod /dev/ttyUSB255 c 188 255 26 mknod /dev/ttyUSB255 c 188 255
28 27
29 If you are using devfs:
30 The devices supported by this driver will show up as
31 /dev/usb/tts/{0,1,...}
32
33 When the device is connected and recognized by the driver, the driver 28 When the device is connected and recognized by the driver, the driver
34 will print to the system log, which node(s) the device has been bound 29 will print to the system log, which node(s) the device has been bound
35 to. 30 to.
@@ -228,7 +223,7 @@ Cypress M8 CY4601 Family Serial Driver
228 -Cypress HID->COM RS232 adapter 223 -Cypress HID->COM RS232 adapter
229 224
230 Note: Cypress Semiconductor claims no affiliation with the 225 Note: Cypress Semiconductor claims no affiliation with the
231 the hid->com device. 226 hid->com device.
232 227
233 Most devices using chipsets under the CY4601 family should 228 Most devices using chipsets under the CY4601 family should
234 work with the driver. As long as they stay true to the CY4601 229 work with the driver. As long as they stay true to the CY4601
@@ -277,7 +272,7 @@ Digi AccelePort Driver
277 work under SMP with the uhci driver. 272 work under SMP with the uhci driver.
278 273
279 The driver is generally working, though we still have a few more ioctls 274 The driver is generally working, though we still have a few more ioctls
280 to implement and final testing and debugging to do. The paralled port 275 to implement and final testing and debugging to do. The parallel port
281 on the USB 2 is supported as a serial to parallel converter; in other 276 on the USB 2 is supported as a serial to parallel converter; in other
282 words, it appears as another USB serial port on Linux, even though 277 words, it appears as another USB serial port on Linux, even though
283 physically it is really a parallel port. The Digi Acceleport USB 8 278 physically it is really a parallel port. The Digi Acceleport USB 8
@@ -427,12 +422,17 @@ Options supported:
427 debug - extra verbose debugging info 422 debug - extra verbose debugging info
428 (default: 0; nonzero enables) 423 (default: 0; nonzero enables)
429 use_lowlatency - use low_latency flag to speed up tty layer 424 use_lowlatency - use low_latency flag to speed up tty layer
430 when reading from from the device. 425 when reading from the device.
431 (default: 0; nonzero enables) 426 (default: 0; nonzero enables)
432 427
433 See http://www.uuhaus.de/linux/palmconnect.html for up-to-date 428 See http://www.uuhaus.de/linux/palmconnect.html for up-to-date
434 information on this driver. 429 information on this driver.
435 430
431AIRcable USB Dongle Bluetooth driver
432 If there is the cdc_acm driver loaded in the system, you will find that the
433 cdc_acm claims the device before AIRcable can. This is simply corrected
434 by unloading both modules and then loading the aircable module before
435 cdc_acm module
436 436
437Generic Serial driver 437Generic Serial driver
438 438
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88
index 00d9a1f2a54c..126e59d935cd 100644
--- a/Documentation/video4linux/CARDLIST.cx88
+++ b/Documentation/video4linux/CARDLIST.cx88
@@ -7,16 +7,16 @@
7 6 -> AverTV Studio 303 (M126) [1461:000b] 7 6 -> AverTV Studio 303 (M126) [1461:000b]
8 7 -> MSI TV-@nywhere Master [1462:8606] 8 7 -> MSI TV-@nywhere Master [1462:8606]
9 8 -> Leadtek Winfast DV2000 [107d:6620] 9 8 -> Leadtek Winfast DV2000 [107d:6620]
10 9 -> Leadtek PVR 2000 [107d:663b,107d:663C] 10 9 -> Leadtek PVR 2000 [107d:663b,107d:663c,107d:6632]
11 10 -> IODATA GV-VCP3/PCI [10fc:d003] 11 10 -> IODATA GV-VCP3/PCI [10fc:d003]
12 11 -> Prolink PlayTV PVR 12 11 -> Prolink PlayTV PVR
13 12 -> ASUS PVR-416 [1043:4823] 13 12 -> ASUS PVR-416 [1043:4823,1461:c111]
14 13 -> MSI TV-@nywhere 14 13 -> MSI TV-@nywhere
15 14 -> KWorld/VStream XPert DVB-T [17de:08a6] 15 14 -> KWorld/VStream XPert DVB-T [17de:08a6]
16 15 -> DViCO FusionHDTV DVB-T1 [18ac:db00] 16 15 -> DViCO FusionHDTV DVB-T1 [18ac:db00]
17 16 -> KWorld LTV883RF 17 16 -> KWorld LTV883RF
18 17 -> DViCO FusionHDTV 3 Gold-Q [18ac:d810,18ac:d800] 18 17 -> DViCO FusionHDTV 3 Gold-Q [18ac:d810,18ac:d800]
19 18 -> Hauppauge Nova-T DVB-T [0070:9002,0070:9001] 19 18 -> Hauppauge Nova-T DVB-T [0070:9002,0070:9001,0070:9000]
20 19 -> Conexant DVB-T reference design [14f1:0187] 20 19 -> Conexant DVB-T reference design [14f1:0187]
21 20 -> Provideo PV259 [1540:2580] 21 20 -> Provideo PV259 [1540:2580]
22 21 -> DViCO FusionHDTV DVB-T Plus [18ac:db10,18ac:db11] 22 21 -> DViCO FusionHDTV DVB-T Plus [18ac:db10,18ac:db11]
@@ -41,7 +41,7 @@
41 40 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid [0070:9400,0070:9402] 41 40 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid [0070:9400,0070:9402]
42 41 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile) [0070:9800,0070:9802] 42 41 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile) [0070:9800,0070:9802]
43 42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025,1822:0019] 43 42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025,1822:0019]
44 43 -> KWorld/VStream XPert DVB-T with cx22702 [17de:08a1] 44 43 -> KWorld/VStream XPert DVB-T with cx22702 [17de:08a1,12ab:2300]
45 44 -> DViCO FusionHDTV DVB-T Dual Digital [18ac:db50,18ac:db54] 45 44 -> DViCO FusionHDTV DVB-T Dual Digital [18ac:db50,18ac:db54]
46 45 -> KWorld HardwareMpegTV XPert [17de:0840] 46 45 -> KWorld HardwareMpegTV XPert [17de:0840]
47 46 -> DViCO FusionHDTV DVB-T Hybrid [18ac:db40,18ac:db44] 47 46 -> DViCO FusionHDTV DVB-T Hybrid [18ac:db40,18ac:db44]
@@ -51,3 +51,7 @@
51 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] 51 50 -> NPG Tech Real TV FM Top 10 [14f1:0842]
52 51 -> WinFast DTV2000 H [107d:665e] 52 51 -> WinFast DTV2000 H [107d:665e]
53 52 -> Geniatech DVB-S [14f1:0084] 53 52 -> Geniatech DVB-S [14f1:0084]
54 53 -> Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T [0070:1404]
55 54 -> Norwood Micro TV Tuner
56 55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980]
57 56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602]
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134
index 9068b669f5ee..53ce6a39083c 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -58,7 +58,7 @@
58 57 -> Avermedia AVerTV GO 007 FM [1461:f31f] 58 57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
59 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370] 59 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370]
60 59 -> Kworld/Tevion V-Stream Xpert TV PVR7134 60 59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
61 60 -> LifeView/Typhoon FlyDVB-T Duo Cardbus [5168:0502,4e42:0502] 61 60 -> LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus [5168:0502,4e42:0502,1489:0502]
62 61 -> Philips TOUGH DVB-T reference design [1131:2004] 62 61 -> Philips TOUGH DVB-T reference design [1131:2004]
63 62 -> Compro VideoMate TV Gold+II 63 62 -> Compro VideoMate TV Gold+II
64 63 -> Kworld Xpert TV PVR7134 64 63 -> Kworld Xpert TV PVR7134
@@ -83,7 +83,7 @@
83 82 -> MSI TV@Anywhere plus [1462:6231] 83 82 -> MSI TV@Anywhere plus [1462:6231]
84 83 -> Terratec Cinergy 250 PCI TV [153b:1160] 84 83 -> Terratec Cinergy 250 PCI TV [153b:1160]
85 84 -> LifeView FlyDVB Trio [5168:0319] 85 84 -> LifeView FlyDVB Trio [5168:0319]
86 85 -> AverTV DVB-T 777 [1461:2c05] 86 85 -> AverTV DVB-T 777 [1461:2c05,1461:2c05]
87 86 -> LifeView FlyDVB-T / Genius VideoWonder DVB-T [5168:0301,1489:0301] 87 86 -> LifeView FlyDVB-T / Genius VideoWonder DVB-T [5168:0301,1489:0301]
88 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421] 88 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421]
89 88 -> Tevion/KWorld DVB-T 220RF [17de:7201] 89 88 -> Tevion/KWorld DVB-T 220RF [17de:7201]
@@ -94,3 +94,8 @@
94 93 -> Medion 7134 Bridge #2 [16be:0005] 94 93 -> Medion 7134 Bridge #2 [16be:0005]
95 94 -> LifeView FlyDVB-T Hybrid Cardbus [5168:3306,5168:3502] 95 94 -> LifeView FlyDVB-T Hybrid Cardbus [5168:3306,5168:3502]
96 95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138] 96 95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138]
97 96 -> Medion Md8800 Quadro [16be:0007,16be:0008]
98 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300]
99 98 -> Proteus Pro 2309 [0919:2003]
100 99 -> AVerMedia TV Hybrid A16AR [1461:2c00]
101100 -> Asus Europa2 OEM [1043:4860]
diff --git a/Documentation/video4linux/README.pvrusb2 b/Documentation/video4linux/README.pvrusb2
index c73a32c34528..a4b7ae800866 100644
--- a/Documentation/video4linux/README.pvrusb2
+++ b/Documentation/video4linux/README.pvrusb2
@@ -155,7 +155,7 @@ Source file list / functional overview:
155 pvrusb2-i2c-core.[ch] - This module provides an implementation of a 155 pvrusb2-i2c-core.[ch] - This module provides an implementation of a
156 kernel-friendly I2C adaptor driver, through which other external 156 kernel-friendly I2C adaptor driver, through which other external
157 I2C client drivers (e.g. msp3400, tuner, lirc) may connect and 157 I2C client drivers (e.g. msp3400, tuner, lirc) may connect and
158 operate corresponding chips within the the pvrusb2 device. It is 158 operate corresponding chips within the pvrusb2 device. It is
159 through here that other V4L modules can reach into this driver to 159 through here that other V4L modules can reach into this driver to
160 operate specific pieces (and those modules are in turn driven by 160 operate specific pieces (and those modules are in turn driven by
161 glue logic which is coordinated by pvrusb2-hdw, doled out by 161 glue logic which is coordinated by pvrusb2-hdw, doled out by
diff --git a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran
index 040a2c841ae9..deb218f77adb 100644
--- a/Documentation/video4linux/Zoran
+++ b/Documentation/video4linux/Zoran
@@ -144,7 +144,7 @@ tv broadcast formats all aver the world.
144 144
145The CCIR defines parameters needed for broadcasting the signal. 145The CCIR defines parameters needed for broadcasting the signal.
146The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... 146The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,...
147The CCIR says not much about about the colorsystem used !!! 147The CCIR says not much about the colorsystem used !!!
148And talking about a colorsystem says not to much about how it is broadcast. 148And talking about a colorsystem says not to much about how it is broadcast.
149 149
150The CCIR standards A,E,F are not used any more. 150The CCIR standards A,E,F are not used any more.
diff --git a/Documentation/video4linux/bttv/Insmod-options b/Documentation/video4linux/bttv/Insmod-options
index fc94ff235ffa..bb7c2cac7917 100644
--- a/Documentation/video4linux/bttv/Insmod-options
+++ b/Documentation/video4linux/bttv/Insmod-options
@@ -54,6 +54,12 @@ bttv.o
54 dropouts. 54 dropouts.
55 chroma_agc=0/1 AGC of chroma signal, off by default. 55 chroma_agc=0/1 AGC of chroma signal, off by default.
56 adc_crush=0/1 Luminance ADC crush, on by default. 56 adc_crush=0/1 Luminance ADC crush, on by default.
57 i2c_udelay= Allow reduce I2C speed. Default is 5 usecs
58 (meaning 66,67 Kbps). The default is the
59 maximum supported speed by kernel bitbang
60 algoritm. You may use lower numbers, if I2C
61 messages are lost (16 is known to work on
62 all supported cards).
57 63
58 bttv_gpio=0/1 64 bttv_gpio=0/1
59 gpiomask= 65 gpiomask=
diff --git a/Documentation/video4linux/cx2341x/README.hm12 b/Documentation/video4linux/cx2341x/README.hm12
new file mode 100644
index 000000000000..0e213ed095e6
--- /dev/null
+++ b/Documentation/video4linux/cx2341x/README.hm12
@@ -0,0 +1,116 @@
1The cx23416 can produce (and the cx23415 can also read) raw YUV output. The
2format of a YUV frame is specific to this chip and is called HM12. 'HM' stands
3for 'Hauppauge Macroblock', which is a misnomer as 'Conexant Macroblock' would
4be more accurate.
5
6The format is YUV 4:2:0 which uses 1 Y byte per pixel and 1 U and V byte per
7four pixels.
8
9The data is encoded as two macroblock planes, the first containing the Y
10values, the second containing UV macroblocks.
11
12The Y plane is divided into blocks of 16x16 pixels from left to right
13and from top to bottom. Each block is transmitted in turn, line-by-line.
14
15So the first 16 bytes are the first line of the top-left block, the
16second 16 bytes are the second line of the top-left block, etc. After
17transmitting this block the first line of the block on the right to the
18first block is transmitted, etc.
19
20The UV plane is divided into blocks of 16x8 UV values going from left
21to right, top to bottom. Each block is transmitted in turn, line-by-line.
22
23So the first 16 bytes are the first line of the top-left block and
24contain 8 UV value pairs (16 bytes in total). The second 16 bytes are the
25second line of 8 UV pairs of the top-left block, etc. After transmitting
26this block the first line of the block on the right to the first block is
27transmitted, etc.
28
29The code below is given as an example on how to convert HM12 to separate
30Y, U and V planes. This code assumes frames of 720x576 (PAL) pixels.
31
32The width of a frame is always 720 pixels, regardless of the actual specified
33width.
34
35--------------------------------------------------------------------------
36
37#include <stdio.h>
38#include <stdlib.h>
39#include <string.h>
40
41static unsigned char frame[576*720*3/2];
42static unsigned char framey[576*720];
43static unsigned char frameu[576*720 / 4];
44static unsigned char framev[576*720 / 4];
45
46static void de_macro_y(unsigned char* dst, unsigned char *src, int dstride, int w, int h)
47{
48 unsigned int y, x, i;
49
50 // descramble Y plane
51 // dstride = 720 = w
52 // The Y plane is divided into blocks of 16x16 pixels
53 // Each block in transmitted in turn, line-by-line.
54 for (y = 0; y < h; y += 16) {
55 for (x = 0; x < w; x += 16) {
56 for (i = 0; i < 16; i++) {
57 memcpy(dst + x + (y + i) * dstride, src, 16);
58 src += 16;
59 }
60 }
61 }
62}
63
64static void de_macro_uv(unsigned char *dstu, unsigned char *dstv, unsigned char *src, int dstride, int w, int h)
65{
66 unsigned int y, x, i;
67
68 // descramble U/V plane
69 // dstride = 720 / 2 = w
70 // The U/V values are interlaced (UVUV...).
71 // Again, the UV plane is divided into blocks of 16x16 UV values.
72 // Each block in transmitted in turn, line-by-line.
73 for (y = 0; y < h; y += 16) {
74 for (x = 0; x < w; x += 8) {
75 for (i = 0; i < 16; i++) {
76 int idx = x + (y + i) * dstride;
77
78 dstu[idx+0] = src[0]; dstv[idx+0] = src[1];
79 dstu[idx+1] = src[2]; dstv[idx+1] = src[3];
80 dstu[idx+2] = src[4]; dstv[idx+2] = src[5];
81 dstu[idx+3] = src[6]; dstv[idx+3] = src[7];
82 dstu[idx+4] = src[8]; dstv[idx+4] = src[9];
83 dstu[idx+5] = src[10]; dstv[idx+5] = src[11];
84 dstu[idx+6] = src[12]; dstv[idx+6] = src[13];
85 dstu[idx+7] = src[14]; dstv[idx+7] = src[15];
86 src += 16;
87 }
88 }
89 }
90}
91
92/*************************************************************************/
93int main(int argc, char **argv)
94{
95 FILE *fin;
96 int i;
97
98 if (argc == 1) fin = stdin;
99 else fin = fopen(argv[1], "r");
100
101 if (fin == NULL) {
102 fprintf(stderr, "cannot open input\n");
103 exit(-1);
104 }
105 while (fread(frame, sizeof(frame), 1, fin) == 1) {
106 de_macro_y(framey, frame, 720, 720, 576);
107 de_macro_uv(frameu, framev, frame + 720 * 576, 720 / 2, 720 / 2, 576 / 2);
108 fwrite(framey, sizeof(framey), 1, stdout);
109 fwrite(framev, sizeof(framev), 1, stdout);
110 fwrite(frameu, sizeof(frameu), 1, stdout);
111 }
112 fclose(fin);
113 return 0;
114}
115
116--------------------------------------------------------------------------
diff --git a/Documentation/video4linux/cx2341x/README.vbi b/Documentation/video4linux/cx2341x/README.vbi
new file mode 100644
index 000000000000..5807cf156173
--- /dev/null
+++ b/Documentation/video4linux/cx2341x/README.vbi
@@ -0,0 +1,45 @@
1
2Format of embedded V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data
3=========================================================
4
5This document describes the V4L2_MPEG_STREAM_VBI_FMT_IVTV format of the VBI data
6embedded in an MPEG-2 program stream. This format is in part dictated by some
7hardware limitations of the ivtv driver (the driver for the Conexant cx23415/6
8chips), in particular a maximum size for the VBI data. Anything longer is cut
9off when the MPEG stream is played back through the cx23415.
10
11The advantage of this format is it is very compact and that all VBI data for
12all lines can be stored while still fitting within the maximum allowed size.
13
14The stream ID of the VBI data is 0xBD. The maximum size of the embedded data is
154 + 43 * 36, which is 4 bytes for a header and 2 * 18 VBI lines with a 1 byte
16header and a 42 bytes payload each. Anything beyond this limit is cut off by
17the cx23415/6 firmware. Besides the data for the VBI lines we also need 36 bits
18for a bitmask determining which lines are captured and 4 bytes for a magic cookie,
19signifying that this data package contains V4L2_MPEG_STREAM_VBI_FMT_IVTV VBI data.
20If all lines are used, then there is no longer room for the bitmask. To solve this
21two different magic numbers were introduced:
22
23'itv0': After this magic number two unsigned longs follow. Bits 0-17 of the first
24unsigned long denote which lines of the first field are captured. Bits 18-31 of
25the first unsigned long and bits 0-3 of the second unsigned long are used for the
26second field.
27
28'ITV0': This magic number assumes all VBI lines are captured, i.e. it implicitly
29implies that the bitmasks are 0xffffffff and 0xf.
30
31After these magic cookies (and the 8 byte bitmask in case of cookie 'itv0') the
32captured VBI lines start:
33
34For each line the least significant 4 bits of the first byte contain the data type.
35Possible values are shown in the table below. The payload is in the following 42
36bytes.
37
38Here is the list of possible data types:
39
40#define IVTV_SLICED_TYPE_TELETEXT 0x1 // Teletext (uses lines 6-22 for PAL)
41#define IVTV_SLICED_TYPE_CC 0x4 // Closed Captions (line 21 NTSC)
42#define IVTV_SLICED_TYPE_WSS 0x5 // Wide Screen Signal (line 23 PAL)
43#define IVTV_SLICED_TYPE_VPS 0x7 // Video Programming System (PAL) (line 16)
44
45Hans Verkuil <hverkuil@xs4all.nl>
diff --git a/Documentation/video4linux/cx2341x/fw-decoder-api.txt b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
index 9df4fb3ea0f2..78bf5f21e513 100644
--- a/Documentation/video4linux/cx2341x/fw-decoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
@@ -102,7 +102,7 @@ Param[0]
102Name CX2341X_DEC_GET_XFER_INFO 102Name CX2341X_DEC_GET_XFER_INFO
103Enum 9/0x09 103Enum 9/0x09
104Description 104Description
105 This API call may be used to detect an end of stream condtion. 105 This API call may be used to detect an end of stream condition.
106Result[0] 106Result[0]
107 Stream type 107 Stream type
108Result[1] 108Result[1]
diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
index 001c68644b08..15df0df57ddd 100644
--- a/Documentation/video4linux/cx2341x/fw-encoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
@@ -280,7 +280,7 @@ Param[0]
280Param[1] 280Param[1]
281 Unknown, but leaving this to 0 seems to work best. Indications are that 281 Unknown, but leaving this to 0 seems to work best. Indications are that
282 this might have to do with USB support, although passing anything but 0 282 this might have to do with USB support, although passing anything but 0
283 onl breaks things. 283 only breaks things.
284 284
285------------------------------------------------------------------------------- 285-------------------------------------------------------------------------------
286 286
diff --git a/Documentation/video4linux/cx2341x/fw-osd-api.txt b/Documentation/video4linux/cx2341x/fw-osd-api.txt
index da98ae30a37a..0a602f3e601b 100644
--- a/Documentation/video4linux/cx2341x/fw-osd-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-osd-api.txt
@@ -97,7 +97,7 @@ Result[0]
97Result[1] 97Result[1]
98 top left vertical offset 98 top left vertical offset
99Result[2] 99Result[2]
100 bottom right hotizontal offset 100 bottom right horizontal offset
101Result[3] 101Result[3]
102 bottom right vertical offset 102 bottom right vertical offset
103 103
diff --git a/Documentation/video4linux/cx88/hauppauge-wintv-cx88-ir.txt b/Documentation/video4linux/cx88/hauppauge-wintv-cx88-ir.txt
index 93fec32a1188..faccee68f603 100644
--- a/Documentation/video4linux/cx88/hauppauge-wintv-cx88-ir.txt
+++ b/Documentation/video4linux/cx88/hauppauge-wintv-cx88-ir.txt
@@ -30,7 +30,7 @@ provide for a handler)
30GP_SAMPLE register is at 0x35C058 30GP_SAMPLE register is at 0x35C058
31 31
32Bits are then right shifted into the GP_SAMPLE register at the specified 32Bits are then right shifted into the GP_SAMPLE register at the specified
33rate; you get an interrupt when a full DWORD is recieved. 33rate; you get an interrupt when a full DWORD is received.
34You need to recover the actual RC5 bits out of the (oversampled) IR sensor 34You need to recover the actual RC5 bits out of the (oversampled) IR sensor
35bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An 35bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An
36actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment. 36actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment.
diff --git a/Documentation/video4linux/et61x251.txt b/Documentation/video4linux/et61x251.txt
index cd584f20a997..1bdee8f85b9a 100644
--- a/Documentation/video4linux/et61x251.txt
+++ b/Documentation/video4linux/et61x251.txt
@@ -80,7 +80,7 @@ Some of the features of the driver are:
80 high compression quality (see also "Notes for V4L2 application developers" 80 high compression quality (see also "Notes for V4L2 application developers"
81 paragraph); 81 paragraph);
82- full support for the capabilities of every possible image sensors that can 82- full support for the capabilities of every possible image sensors that can
83 be connected to the ET61X[12]51 bridges, including, for istance, red, green, 83 be connected to the ET61X[12]51 bridges, including, for instance, red, green,
84 blue and global gain adjustments and exposure control (see "Supported 84 blue and global gain adjustments and exposure control (see "Supported
85 devices" paragraph for details); 85 devices" paragraph for details);
86- use of default color settings for sunlight conditions; 86- use of default color settings for sunlight conditions;
@@ -222,7 +222,7 @@ identifier - of the camera registered as "/dev/video0":
222 [root@localhost #] echo 1 > i2c_reg 222 [root@localhost #] echo 1 > i2c_reg
223 [root@localhost #] cat i2c_val 223 [root@localhost #] cat i2c_val
224 224
225Note that if the sensor registers can not be read, "cat" will fail. 225Note that if the sensor registers cannot be read, "cat" will fail.
226To avoid race conditions, all the I/O accesses to the files are serialized. 226To avoid race conditions, all the I/O accesses to the files are serialized.
227 227
228 228
diff --git a/Documentation/video4linux/hauppauge-wintv-cx88-ir.txt b/Documentation/video4linux/hauppauge-wintv-cx88-ir.txt
index 93fec32a1188..faccee68f603 100644
--- a/Documentation/video4linux/hauppauge-wintv-cx88-ir.txt
+++ b/Documentation/video4linux/hauppauge-wintv-cx88-ir.txt
@@ -30,7 +30,7 @@ provide for a handler)
30GP_SAMPLE register is at 0x35C058 30GP_SAMPLE register is at 0x35C058
31 31
32Bits are then right shifted into the GP_SAMPLE register at the specified 32Bits are then right shifted into the GP_SAMPLE register at the specified
33rate; you get an interrupt when a full DWORD is recieved. 33rate; you get an interrupt when a full DWORD is received.
34You need to recover the actual RC5 bits out of the (oversampled) IR sensor 34You need to recover the actual RC5 bits out of the (oversampled) IR sensor
35bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An 35bits. (Hint: look for the 0/1and 1/0 crossings of the RC5 bi-phase data) An
36actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment. 36actual raw RC5 code will span 2-3 DWORDS, depending on the actual alignment.
diff --git a/Documentation/video4linux/meye.txt b/Documentation/video4linux/meye.txt
index 2137da97552f..ecb34160e61d 100644
--- a/Documentation/video4linux/meye.txt
+++ b/Documentation/video4linux/meye.txt
@@ -29,7 +29,7 @@ driver (PCI vendor/device is 0x136b/0xff01)
29 29
30The third one, present in recent (more or less last year) Picturebooks 30The third one, present in recent (more or less last year) Picturebooks
31(C1M* models), is not supported. The manufacturer has given the specs 31(C1M* models), is not supported. The manufacturer has given the specs
32to the developers under a NDA (which allows the develoment of a GPL 32to the developers under a NDA (which allows the development of a GPL
33driver however), but things are not moving very fast (see 33driver however), but things are not moving very fast (see
34http://r-engine.sourceforge.net/) (PCI vendor/device is 0x10cf/0x2011). 34http://r-engine.sourceforge.net/) (PCI vendor/device is 0x10cf/0x2011).
35 35
diff --git a/Documentation/video4linux/sn9c102.txt b/Documentation/video4linux/sn9c102.txt
index 1d20895b4354..8cda472db36d 100644
--- a/Documentation/video4linux/sn9c102.txt
+++ b/Documentation/video4linux/sn9c102.txt
@@ -60,7 +60,7 @@ It's worth to note that SONiX has never collaborated with the author during the
60development of this project, despite several requests for enough detailed 60development of this project, despite several requests for enough detailed
61specifications of the register tables, compression engine and video data format 61specifications of the register tables, compression engine and video data format
62of the above chips. Nevertheless, these informations are no longer necessary, 62of the above chips. Nevertheless, these informations are no longer necessary,
63becouse all the aspects related to these chips are known and have been 63because all the aspects related to these chips are known and have been
64described in detail in this documentation. 64described in detail in this documentation.
65 65
66The driver relies on the Video4Linux2 and USB core modules. It has been 66The driver relies on the Video4Linux2 and USB core modules. It has been
@@ -85,7 +85,7 @@ Some of the features of the driver are:
85 high compression quality (see also "Notes for V4L2 application developers" 85 high compression quality (see also "Notes for V4L2 application developers"
86 and "Video frame formats" paragraphs); 86 and "Video frame formats" paragraphs);
87- full support for the capabilities of many of the possible image sensors that 87- full support for the capabilities of many of the possible image sensors that
88 can be connected to the SN9C10x bridges, including, for istance, red, green, 88 can be connected to the SN9C10x bridges, including, for instance, red, green,
89 blue and global gain adjustments and exposure (see "Supported devices" 89 blue and global gain adjustments and exposure (see "Supported devices"
90 paragraph for details); 90 paragraph for details);
91- use of default color settings for sunlight conditions; 91- use of default color settings for sunlight conditions;
diff --git a/Documentation/video4linux/w9968cf.txt b/Documentation/video4linux/w9968cf.txt
index 0d53ce774b01..e0bba8393c77 100644
--- a/Documentation/video4linux/w9968cf.txt
+++ b/Documentation/video4linux/w9968cf.txt
@@ -15,7 +15,7 @@ Index
155. Supported devices 155. Supported devices
166. Module dependencies 166. Module dependencies
177. Module loading 177. Module loading
188. Module paramaters 188. Module parameters
199. Contact information 199. Contact information
2010. Credits 2010. Credits
21 21
diff --git a/Documentation/video4linux/zr36120.txt b/Documentation/video4linux/zr36120.txt
index ac6d92d01944..1a1c2d03a5c8 100644
--- a/Documentation/video4linux/zr36120.txt
+++ b/Documentation/video4linux/zr36120.txt
@@ -118,9 +118,9 @@ card is not there, please try if any other card gives some
118response, and mail me if you got a working tvcard addition. 118response, and mail me if you got a working tvcard addition.
119 119
120PS. <TVCard editors behold!) 120PS. <TVCard editors behold!)
121 Dont forget to set video_input to the number of inputs 121 Don't forget to set video_input to the number of inputs
122 you defined in the video_mux part of the tvcard definition. 122 you defined in the video_mux part of the tvcard definition.
123 Its a common error to add a channel but not incrementing 123 It's a common error to add a channel but not incrementing
124 video_input and getting angry with me/v4l/linux/linus :( 124 video_input and getting angry with me/v4l/linux/linus :(
125 125
126You are now ready to test the framegrabber with your favorite 126You are now ready to test the framegrabber with your favorite
diff --git a/Documentation/vm/numa b/Documentation/vm/numa
index 4b8db1bd3b78..e93ad9425e2a 100644
--- a/Documentation/vm/numa
+++ b/Documentation/vm/numa
@@ -22,7 +22,7 @@ The initial port includes NUMAizing the bootmem allocator code by
22encapsulating all the pieces of information into a bootmem_data_t 22encapsulating all the pieces of information into a bootmem_data_t
23structure. Node specific calls have been added to the allocator. 23structure. Node specific calls have been added to the allocator.
24In theory, any platform which uses the bootmem allocator should 24In theory, any platform which uses the bootmem allocator should
25be able to to put the bootmem and mem_map data structures anywhere 25be able to put the bootmem and mem_map data structures anywhere
26it deems best. 26it deems best.
27 27
28Each node's page allocation data structures have also been encapsulated 28Each node's page allocation data structures have also been encapsulated
diff --git a/Documentation/watchdog/watchdog-api.txt b/Documentation/watchdog/watchdog-api.txt
index 958ff3d48be3..7e8ae83e9847 100644
--- a/Documentation/watchdog/watchdog-api.txt
+++ b/Documentation/watchdog/watchdog-api.txt
@@ -45,7 +45,7 @@ daemon and it crashes the system will not reboot. Because of this,
45some of the drivers support the configuration option "Disable watchdog 45some of the drivers support the configuration option "Disable watchdog
46shutdown on close", CONFIG_WATCHDOG_NOWAYOUT. If it is set to Y when 46shutdown on close", CONFIG_WATCHDOG_NOWAYOUT. If it is set to Y when
47compiling the kernel, there is no way of disabling the watchdog once 47compiling the kernel, there is no way of disabling the watchdog once
48it has been started. So, if the watchdog dameon crashes, the system 48it has been started. So, if the watchdog daemon crashes, the system
49will reboot after the timeout has passed. 49will reboot after the timeout has passed.
50 50
51Some other drivers will not disable the watchdog, unless a specific 51Some other drivers will not disable the watchdog, unless a specific
@@ -207,7 +207,7 @@ Note that not all devices support these two calls, and some only
207support the GETBOOTSTATUS call. 207support the GETBOOTSTATUS call.
208 208
209Some drivers can measure the temperature using the GETTEMP ioctl. The 209Some drivers can measure the temperature using the GETTEMP ioctl. The
210returned value is the temperature in degrees farenheit. 210returned value is the temperature in degrees fahrenheit.
211 211
212 int temperature; 212 int temperature;
213 ioctl(fd, WDIOC_GETTEMP, &temperature); 213 ioctl(fd, WDIOC_GETTEMP, &temperature);
@@ -258,13 +258,13 @@ booke_wdt.c -- PowerPC BookE Watchdog Timer
258 Timeout default varies according to frequency, supports 258 Timeout default varies according to frequency, supports
259 SETTIMEOUT 259 SETTIMEOUT
260 260
261 Watchdog can not be turned off, CONFIG_WATCHDOG_NOWAYOUT 261 Watchdog cannot be turned off, CONFIG_WATCHDOG_NOWAYOUT
262 does not make sense 262 does not make sense
263 263
264 GETSUPPORT returns the watchdog_info struct, and 264 GETSUPPORT returns the watchdog_info struct, and
265 GETSTATUS returns the supported options. GETBOOTSTATUS 265 GETSTATUS returns the supported options. GETBOOTSTATUS
266 returns a 1 if the last reset was caused by the 266 returns a 1 if the last reset was caused by the
267 watchdog and a 0 otherwise. This watchdog can not be 267 watchdog and a 0 otherwise. This watchdog cannot be
268 disabled once it has been started. The wdt_period kernel 268 disabled once it has been started. The wdt_period kernel
269 parameter selects which bit of the time base changing 269 parameter selects which bit of the time base changing
270 from 0->1 will trigger the watchdog exception. Changing 270 from 0->1 will trigger the watchdog exception. Changing
diff --git a/Documentation/x86_64/boot-options.txt b/Documentation/x86_64/boot-options.txt
index 6da24e7a56cb..f3c57f43ba64 100644
--- a/Documentation/x86_64/boot-options.txt
+++ b/Documentation/x86_64/boot-options.txt
@@ -109,7 +109,7 @@ Idle loop
109Rebooting 109Rebooting
110 110
111 reboot=b[ios] | t[riple] | k[bd] [, [w]arm | [c]old] 111 reboot=b[ios] | t[riple] | k[bd] [, [w]arm | [c]old]
112 bios Use the CPU reboto vector for warm reset 112 bios Use the CPU reboot vector for warm reset
113 warm Don't set the cold reboot flag 113 warm Don't set the cold reboot flag
114 cold Set the cold reboot flag 114 cold Set the cold reboot flag
115 triple Force a triple fault (init) 115 triple Force a triple fault (init)
@@ -199,6 +199,11 @@ IOMMU
199 allowed overwrite iommu off workarounds for specific chipsets. 199 allowed overwrite iommu off workarounds for specific chipsets.
200 soft Use software bounce buffering (default for Intel machines) 200 soft Use software bounce buffering (default for Intel machines)
201 noaperture Don't touch the aperture for AGP. 201 noaperture Don't touch the aperture for AGP.
202 allowdac Allow DMA >4GB
203 When off all DMA over >4GB is forced through an IOMMU or bounce
204 buffering.
205 nodac Forbid DMA >4GB
206 panic Always panic when IOMMU overflows
202 207
203 swiotlb=pages[,force] 208 swiotlb=pages[,force]
204 209
@@ -245,6 +250,13 @@ Debugging
245 newfallback: use new unwinder but fall back to old if it gets 250 newfallback: use new unwinder but fall back to old if it gets
246 stuck (default) 251 stuck (default)
247 252
253 call_trace=[old|both|newfallback|new]
254 old: use old inexact backtracer
255 new: use new exact dwarf2 unwinder
256 both: print entries from both
257 newfallback: use new unwinder but fall back to old if it gets
258 stuck (default)
259
248Misc 260Misc
249 261
250 noreplacement Don't replace instructions with more appropriate ones 262 noreplacement Don't replace instructions with more appropriate ones
diff --git a/Documentation/x86_64/kernel-stacks b/Documentation/x86_64/kernel-stacks
new file mode 100644
index 000000000000..bddfddd466ab
--- /dev/null
+++ b/Documentation/x86_64/kernel-stacks
@@ -0,0 +1,99 @@
1Most of the text from Keith Owens, hacked by AK
2
3x86_64 page size (PAGE_SIZE) is 4K.
4
5Like all other architectures, x86_64 has a kernel stack for every
6active thread. These thread stacks are THREAD_SIZE (2*PAGE_SIZE) big.
7These stacks contain useful data as long as a thread is alive or a
8zombie. While the thread is in user space the kernel stack is empty
9except for the thread_info structure at the bottom.
10
11In addition to the per thread stacks, there are specialized stacks
12associated with each cpu. These stacks are only used while the kernel
13is in control on that cpu, when a cpu returns to user space the
14specialized stacks contain no useful data. The main cpu stacks is
15
16* Interrupt stack. IRQSTACKSIZE
17
18 Used for external hardware interrupts. If this is the first external
19 hardware interrupt (i.e. not a nested hardware interrupt) then the
20 kernel switches from the current task to the interrupt stack. Like
21 the split thread and interrupt stacks on i386 (with CONFIG_4KSTACKS),
22 this gives more room for kernel interrupt processing without having
23 to increase the size of every per thread stack.
24
25 The interrupt stack is also used when processing a softirq.
26
27Switching to the kernel interrupt stack is done by software based on a
28per CPU interrupt nest counter. This is needed because x86-64 "IST"
29hardware stacks cannot nest without races.
30
31x86_64 also has a feature which is not available on i386, the ability
32to automatically switch to a new stack for designated events such as
33double fault or NMI, which makes it easier to handle these unusual
34events on x86_64. This feature is called the Interrupt Stack Table
35(IST). There can be up to 7 IST entries per cpu. The IST code is an
36index into the Task State Segment (TSS), the IST entries in the TSS
37point to dedicated stacks, each stack can be a different size.
38
39An IST is selected by an non-zero value in the IST field of an
40interrupt-gate descriptor. When an interrupt occurs and the hardware
41loads such a descriptor, the hardware automatically sets the new stack
42pointer based on the IST value, then invokes the interrupt handler. If
43software wants to allow nested IST interrupts then the handler must
44adjust the IST values on entry to and exit from the interrupt handler.
45(this is occasionally done, e.g. for debug exceptions)
46
47Events with different IST codes (i.e. with different stacks) can be
48nested. For example, a debug interrupt can safely be interrupted by an
49NMI. arch/x86_64/kernel/entry.S::paranoidentry adjusts the stack
50pointers on entry to and exit from all IST events, in theory allowing
51IST events with the same code to be nested. However in most cases, the
52stack size allocated to an IST assumes no nesting for the same code.
53If that assumption is ever broken then the stacks will become corrupt.
54
55The currently assigned IST stacks are :-
56
57* STACKFAULT_STACK. EXCEPTION_STKSZ (PAGE_SIZE).
58
59 Used for interrupt 12 - Stack Fault Exception (#SS).
60
61 This allows to recover from invalid stack segments. Rarely
62 happens.
63
64* DOUBLEFAULT_STACK. EXCEPTION_STKSZ (PAGE_SIZE).
65
66 Used for interrupt 8 - Double Fault Exception (#DF).
67
68 Invoked when handling a exception causes another exception. Happens
69 when the kernel is very confused (e.g. kernel stack pointer corrupt)
70 Using a separate stack allows to recover from it well enough in many
71 cases to still output an oops.
72
73* NMI_STACK. EXCEPTION_STKSZ (PAGE_SIZE).
74
75 Used for non-maskable interrupts (NMI).
76
77 NMI can be delivered at any time, including when the kernel is in the
78 middle of switching stacks. Using IST for NMI events avoids making
79 assumptions about the previous state of the kernel stack.
80
81* DEBUG_STACK. DEBUG_STKSZ
82
83 Used for hardware debug interrupts (interrupt 1) and for software
84 debug interrupts (INT3).
85
86 When debugging a kernel, debug interrupts (both hardware and
87 software) can occur at any time. Using IST for these interrupts
88 avoids making assumptions about the previous state of the kernel
89 stack.
90
91* MCE_STACK. EXCEPTION_STKSZ (PAGE_SIZE).
92
93 Used for interrupt 18 - Machine Check Exception (#MC).
94
95 MCE can be delivered at any time, including when the kernel is in the
96 middle of switching stacks. Using IST for MCE events avoids making
97 assumptions about the previous state of the kernel stack.
98
99For more details see the Intel IA32 or AMD AMD64 architecture manuals.