aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/DocBook/Makefile2
-rw-r--r--Documentation/DocBook/uio-howto.tmpl90
-rw-r--r--Documentation/lguest/lguest.c9
-rw-r--r--Documentation/namespaces/compatibility-list.txt39
-rw-r--r--Documentation/parport-lowlevel.txt4
-rw-r--r--Documentation/powerpc/booting-without-of.txt5
-rw-r--r--Documentation/thinkpad-acpi.txt73
-rw-r--r--Documentation/tty.txt8
-rw-r--r--Documentation/usb/power-management.txt8
-rw-r--r--Documentation/x86_64/uefi.txt29
11 files changed, 177 insertions, 92 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 299615d821ac..c3014df066c4 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -262,6 +262,8 @@ mtrr.txt
262 - how to use PPro Memory Type Range Registers to increase performance. 262 - how to use PPro Memory Type Range Registers to increase performance.
263mutex-design.txt 263mutex-design.txt
264 - info on the generic mutex subsystem. 264 - info on the generic mutex subsystem.
265namespaces/
266 - directory with various information about namespaces
265nbd.txt 267nbd.txt
266 - info on a TCP implementation of a network block device. 268 - info on a TCP implementation of a network block device.
267netlabel/ 269netlabel/
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 054a7ecf64c6..4953bc258729 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
11 procfs-guide.xml writing_usb_driver.xml \ 11 procfs-guide.xml writing_usb_driver.xml \
12 kernel-api.xml filesystems.xml lsm.xml usb.xml \ 12 kernel-api.xml filesystems.xml lsm.xml usb.xml \
13 gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ 13 gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
14 genericirq.xml s390-drivers.xml 14 genericirq.xml s390-drivers.xml uio-howto.xml
15 15
16### 16###
17# The build process is as follows (targets): 17# The build process is as follows (targets):
diff --git a/Documentation/DocBook/uio-howto.tmpl b/Documentation/DocBook/uio-howto.tmpl
index c119484258b8..fdd7f4f887b7 100644
--- a/Documentation/DocBook/uio-howto.tmpl
+++ b/Documentation/DocBook/uio-howto.tmpl
@@ -30,6 +30,12 @@
30 30
31<revhistory> 31<revhistory>
32 <revision> 32 <revision>
33 <revnumber>0.4</revnumber>
34 <date>2007-11-26</date>
35 <authorinitials>hjk</authorinitials>
36 <revremark>Removed section about uio_dummy.</revremark>
37 </revision>
38 <revision>
33 <revnumber>0.3</revnumber> 39 <revnumber>0.3</revnumber>
34 <date>2007-04-29</date> 40 <date>2007-04-29</date>
35 <authorinitials>hjk</authorinitials> 41 <authorinitials>hjk</authorinitials>
@@ -94,6 +100,26 @@ interested in translating it, please email me
94 user space. This simplifies development and reduces the risk of 100 user space. This simplifies development and reduces the risk of
95 serious bugs within a kernel module. 101 serious bugs within a kernel module.
96 </para> 102 </para>
103 <para>
104 Please note that UIO is not an universal driver interface. Devices
105 that are already handled well by other kernel subsystems (like
106 networking or serial or USB) are no candidates for an UIO driver.
107 Hardware that is ideally suited for an UIO driver fulfills all of
108 the following:
109 </para>
110<itemizedlist>
111<listitem>
112 <para>The device has memory that can be mapped. The device can be
113 controlled completely by writing to this memory.</para>
114</listitem>
115<listitem>
116 <para>The device usually generates interrupts.</para>
117</listitem>
118<listitem>
119 <para>The device does not fit into one of the standard kernel
120 subsystems.</para>
121</listitem>
122</itemizedlist>
97</sect1> 123</sect1>
98 124
99<sect1 id="thanks"> 125<sect1 id="thanks">
@@ -174,8 +200,9 @@ interested in translating it, please email me
174 For cards that don't generate interrupts but need to be 200 For cards that don't generate interrupts but need to be
175 polled, there is the possibility to set up a timer that 201 polled, there is the possibility to set up a timer that
176 triggers the interrupt handler at configurable time intervals. 202 triggers the interrupt handler at configurable time intervals.
177 See <filename>drivers/uio/uio_dummy.c</filename> for an 203 This interrupt simulation is done by calling
178 example of this technique. 204 <function>uio_event_notify()</function>
205 from the timer's event handler.
179 </para> 206 </para>
180 207
181 <para> 208 <para>
@@ -263,63 +290,11 @@ offset = N * getpagesize();
263</sect1> 290</sect1>
264</chapter> 291</chapter>
265 292
266<chapter id="using-uio_dummy" xreflabel="Using uio_dummy">
267<?dbhtml filename="using-uio_dummy.html"?>
268<title>Using uio_dummy</title>
269 <para>
270 Well, there is no real use for uio_dummy. Its only purpose is
271 to test most parts of the UIO system (everything except
272 hardware interrupts), and to serve as an example for the
273 kernel module that you will have to write yourself.
274 </para>
275
276<sect1 id="what_uio_dummy_does">
277<title>What uio_dummy does</title>
278 <para>
279 The kernel module <filename>uio_dummy.ko</filename> creates a
280 device that uses a timer to generate periodic interrupts. The
281 interrupt handler does nothing but increment a counter. The
282 driver adds two custom attributes, <varname>count</varname>
283 and <varname>freq</varname>, that appear under
284 <filename>/sys/devices/platform/uio_dummy/</filename>.
285 </para>
286
287 <para>
288 The attribute <varname>count</varname> can be read and
289 written. The associated file
290 <filename>/sys/devices/platform/uio_dummy/count</filename>
291 appears as a normal text file and contains the total number of
292 timer interrupts. If you look at it (e.g. using
293 <function>cat</function>), you'll notice it is slowly counting
294 up.
295 </para>
296
297 <para>
298 The attribute <varname>freq</varname> can be read and written.
299 The content of
300 <filename>/sys/devices/platform/uio_dummy/freq</filename>
301 represents the number of system timer ticks between two timer
302 interrupts. The default value of <varname>freq</varname> is
303 the value of the kernel variable <varname>HZ</varname>, which
304 gives you an interval of one second. Lower values will
305 increase the frequency. Try the following:
306 </para>
307<programlisting format="linespecific">
308cd /sys/devices/platform/uio_dummy/
309echo 100 > freq
310</programlisting>
311 <para>
312 Use <function>cat count</function> to see how the interrupt
313 frequency changes.
314 </para>
315</sect1>
316</chapter>
317
318<chapter id="custom_kernel_module" xreflabel="Writing your own kernel module"> 293<chapter id="custom_kernel_module" xreflabel="Writing your own kernel module">
319<?dbhtml filename="custom_kernel_module.html"?> 294<?dbhtml filename="custom_kernel_module.html"?>
320<title>Writing your own kernel module</title> 295<title>Writing your own kernel module</title>
321 <para> 296 <para>
322 Please have a look at <filename>uio_dummy.c</filename> as an 297 Please have a look at <filename>uio_cif.c</filename> as an
323 example. The following paragraphs explain the different 298 example. The following paragraphs explain the different
324 sections of this file. 299 sections of this file.
325 </para> 300 </para>
@@ -354,9 +329,8 @@ See the description below for details.
354interrupt, it's your modules task to determine the irq number during 329interrupt, it's your modules task to determine the irq number during
355initialization. If you don't have a hardware generated interrupt but 330initialization. If you don't have a hardware generated interrupt but
356want to trigger the interrupt handler in some other way, set 331want to trigger the interrupt handler in some other way, set
357<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>. The 332<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>.
358uio_dummy module does this as it triggers the event mechanism in a timer 333If you had no interrupt at all, you could set
359routine. If you had no interrupt at all, you could set
360<varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this 334<varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this
361rarely makes sense. 335rarely makes sense.
362</para></listitem> 336</para></listitem>
diff --git a/Documentation/lguest/lguest.c b/Documentation/lguest/lguest.c
index 42008395534d..9b0e322118b5 100644
--- a/Documentation/lguest/lguest.c
+++ b/Documentation/lguest/lguest.c
@@ -1040,6 +1040,11 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
1040 / getpagesize(); 1040 / getpagesize();
1041 p = get_pages(pages); 1041 p = get_pages(pages);
1042 1042
1043 /* Initialize the virtqueue */
1044 vq->next = NULL;
1045 vq->last_avail_idx = 0;
1046 vq->dev = dev;
1047
1043 /* Initialize the configuration. */ 1048 /* Initialize the configuration. */
1044 vq->config.num = num_descs; 1049 vq->config.num = num_descs;
1045 vq->config.irq = devices.next_irq++; 1050 vq->config.irq = devices.next_irq++;
@@ -1057,9 +1062,6 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
1057 for (i = &dev->vq; *i; i = &(*i)->next); 1062 for (i = &dev->vq; *i; i = &(*i)->next);
1058 *i = vq; 1063 *i = vq;
1059 1064
1060 /* Link virtqueue back to device. */
1061 vq->dev = dev;
1062
1063 /* Set the routine to call when the Guest does something to this 1065 /* Set the routine to call when the Guest does something to this
1064 * virtqueue. */ 1066 * virtqueue. */
1065 vq->handle_output = handle_output; 1067 vq->handle_output = handle_output;
@@ -1093,6 +1095,7 @@ static struct device *new_device(const char *name, u16 type, int fd,
1093 dev->desc = new_dev_desc(type); 1095 dev->desc = new_dev_desc(type);
1094 dev->handle_input = handle_input; 1096 dev->handle_input = handle_input;
1095 dev->name = name; 1097 dev->name = name;
1098 dev->vq = NULL;
1096 return dev; 1099 return dev;
1097} 1100}
1098 1101
diff --git a/Documentation/namespaces/compatibility-list.txt b/Documentation/namespaces/compatibility-list.txt
new file mode 100644
index 000000000000..defc5589bfcd
--- /dev/null
+++ b/Documentation/namespaces/compatibility-list.txt
@@ -0,0 +1,39 @@
1 Namespaces compatibility list
2
3This document contains the information about the problems user
4may have when creating tasks living in different namespaces.
5
6Here's the summary. This matrix shows the known problems, that
7occur when tasks share some namespace (the columns) while living
8in different other namespaces (the rows):
9
10 UTS IPC VFS PID User Net
11UTS X
12IPC X 1
13VFS X
14PID 1 1 X
15User 2 2 X
16Net X
17
181. Both the IPC and the PID namespaces provide IDs to address
19 object inside the kernel. E.g. semaphore with IPCID or
20 process group with pid.
21
22 In both cases, tasks shouldn't try exposing this ID to some
23 other task living in a different namespace via a shared filesystem
24 or IPC shmem/message. The fact is that this ID is only valid
25 within the namespace it was obtained in and may refer to some
26 other object in another namespace.
27
282. Intentionally, two equal user IDs in different user namespaces
29 should not be equal from the VFS point of view. In other
30 words, user 10 in one user namespace shouldn't have the same
31 access permissions to files, belonging to user 10 in another
32 namespace.
33
34 The same is true for the IPC namespaces being shared - two users
35 from different user namespaces should not access the same IPC objects
36 even having equal UIDs.
37
38 But currently this is not so.
39
diff --git a/Documentation/parport-lowlevel.txt b/Documentation/parport-lowlevel.txt
index 265fcdcb8e5f..120eb20dbb09 100644
--- a/Documentation/parport-lowlevel.txt
+++ b/Documentation/parport-lowlevel.txt
@@ -339,6 +339,10 @@ Use this function to register your device driver on a parallel port
339('port'). Once you have done that, you will be able to use 339('port'). Once you have done that, you will be able to use
340parport_claim and parport_release in order to use the port. 340parport_claim and parport_release in order to use the port.
341 341
342The ('name') argument is the name of the device that appears in /proc
343filesystem. The string must be valid for the whole lifetime of the
344device (until parport_unregister_device is called).
345
342This function will register three callbacks into your driver: 346This function will register three callbacks into your driver:
343'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to 347'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to
344indicate that you do not want a callback. 348indicate that you do not want a callback.
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index ac1be25c1e25..e9a3cb1d6b06 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -1645,8 +1645,9 @@ platforms are moved over to use the flattened-device-tree model.
1645 MAC addresses passed by the firmware when no information other 1645 MAC addresses passed by the firmware when no information other
1646 than indices is available to associate an address with a device. 1646 than indices is available to associate an address with a device.
1647 - phy-connection-type : a string naming the controller/PHY interface type, 1647 - phy-connection-type : a string naming the controller/PHY interface type,
1648 i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi", 1648 i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal
1649 or "rtbi". 1649 Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only),
1650 "tbi", or "rtbi".
1650 1651
1651 Example: 1652 Example:
1652 ucc@2000 { 1653 ucc@2000 {
diff --git a/Documentation/thinkpad-acpi.txt b/Documentation/thinkpad-acpi.txt
index ec499265deca..10c041ca13c7 100644
--- a/Documentation/thinkpad-acpi.txt
+++ b/Documentation/thinkpad-acpi.txt
@@ -1,7 +1,7 @@
1 ThinkPad ACPI Extras Driver 1 ThinkPad ACPI Extras Driver
2 2
3 Version 0.16 3 Version 0.17
4 August 2nd, 2007 4 October 04th, 2007
5 5
6 Borislav Deianov <borislav@users.sf.net> 6 Borislav Deianov <borislav@users.sf.net>
7 Henrique de Moraes Holschuh <hmh@hmh.eng.br> 7 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
@@ -923,19 +923,34 @@ sysfs backlight device "thinkpad_screen"
923This feature allows software control of the LCD brightness on ThinkPad 923This feature allows software control of the LCD brightness on ThinkPad
924models which don't have a hardware brightness slider. 924models which don't have a hardware brightness slider.
925 925
926It has some limitations: the LCD backlight cannot be actually turned on or off 926It has some limitations: the LCD backlight cannot be actually turned on or
927by this interface, and in many ThinkPad models, the "dim while on battery" 927off by this interface, and in many ThinkPad models, the "dim while on
928functionality will be enabled by the BIOS when this interface is used, and 928battery" functionality will be enabled by the BIOS when this interface is
929cannot be controlled. 929used, and cannot be controlled.
930 930
931The backlight control has eight levels, ranging from 0 to 7. Some of the 931On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
932levels may not be distinct. 932has eight brightness levels, ranging from 0 to 7. Some of the levels
933 933may not be distinct. Later Lenovo models that implement the ACPI
934There are two interfaces to the firmware for brightness control, EC and CMOS. 934display backlight brightness control methods have 16 levels, ranging
935To select which one should be used, use the brightness_mode module parameter: 935from 0 to 15.
936brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode, 936
937brightness_mode=3 selects both EC and CMOS. The driver tries to autodetect 937There are two interfaces to the firmware for direct brightness control,
938which interface to use. 938EC and CMOS. To select which one should be used, use the
939brightness_mode module parameter: brightness_mode=1 selects EC mode,
940brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
941and CMOS. The driver tries to autodetect which interface to use.
942
943When display backlight brightness controls are available through the
944standard ACPI interface, it is best to use it instead of this direct
945ThinkPad-specific interface. The driver will disable its native
946backlight brightness control interface if it detects that the standard
947ACPI interface is available in the ThinkPad.
948
949The brightness_enable module parameter can be used to control whether
950the LCD brightness control feature will be enabled when available.
951brightness_enable=0 forces it to be disabled. brightness_enable=1
952forces it to be enabled when available, even if the standard ACPI
953interface is also available.
939 954
940Procfs notes: 955Procfs notes:
941 956
@@ -947,11 +962,11 @@ Procfs notes:
947 962
948Sysfs notes: 963Sysfs notes:
949 964
950The interface is implemented through the backlight sysfs class, which is poorly 965The interface is implemented through the backlight sysfs class, which is
951documented at this time. 966poorly documented at this time.
952 967
953Locate the thinkpad_screen device under /sys/class/backlight, and inside it 968Locate the thinkpad_screen device under /sys/class/backlight, and inside
954there will be the following attributes: 969it there will be the following attributes:
955 970
956 max_brightness: 971 max_brightness:
957 Reads the maximum brightness the hardware can be set to. 972 Reads the maximum brightness the hardware can be set to.
@@ -961,17 +976,19 @@ there will be the following attributes:
961 Reads what brightness the screen is set to at this instant. 976 Reads what brightness the screen is set to at this instant.
962 977
963 brightness: 978 brightness:
964 Writes request the driver to change brightness to the given 979 Writes request the driver to change brightness to the
965 value. Reads will tell you what brightness the driver is trying 980 given value. Reads will tell you what brightness the
966 to set the display to when "power" is set to zero and the display 981 driver is trying to set the display to when "power" is set
967 has not been dimmed by a kernel power management event. 982 to zero and the display has not been dimmed by a kernel
983 power management event.
968 984
969 power: 985 power:
970 power management mode, where 0 is "display on", and 1 to 3 will 986 power management mode, where 0 is "display on", and 1 to 3
971 dim the display backlight to brightness level 0 because 987 will dim the display backlight to brightness level 0
972 thinkpad-acpi cannot really turn the backlight off. Kernel 988 because thinkpad-acpi cannot really turn the backlight
973 power management events can temporarily increase the current 989 off. Kernel power management events can temporarily
974 power management level, i.e. they can dim the display. 990 increase the current power management level, i.e. they can
991 dim the display.
975 992
976 993
977Volume control -- /proc/acpi/ibm/volume 994Volume control -- /proc/acpi/ibm/volume
diff --git a/Documentation/tty.txt b/Documentation/tty.txt
index 048a8762cfb5..8e65c4498c52 100644
--- a/Documentation/tty.txt
+++ b/Documentation/tty.txt
@@ -132,6 +132,14 @@ set_termios() Notify the tty driver that the device's termios
132 tty->termios. Previous settings should be passed in 132 tty->termios. Previous settings should be passed in
133 the "old" argument. 133 the "old" argument.
134 134
135 The API is defined such that the driver should return
136 the actual modes selected. This means that the
137 driver function is responsible for modifying any
138 bits in the request it cannot fulfill to indicate
139 the actual modes being used. A device with no
140 hardware capability for change (eg a USB dongle or
141 virtual port) can provide NULL for this method.
142
135throttle() Notify the tty driver that input buffers for the 143throttle() Notify the tty driver that input buffers for the
136 line discipline are close to full, and it should 144 line discipline are close to full, and it should
137 somehow signal that no more characters should be 145 somehow signal that no more characters should be
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt
index 97842deec471..b2fc4d4a9917 100644
--- a/Documentation/usb/power-management.txt
+++ b/Documentation/usb/power-management.txt
@@ -278,6 +278,14 @@ optional. The methods' jobs are quite simple:
278 (although the interfaces will be in the same altsettings as 278 (although the interfaces will be in the same altsettings as
279 before the suspend). 279 before the suspend).
280 280
281If the device is disconnected or powered down while it is suspended,
282the disconnect method will be called instead of the resume or
283reset_resume method. This is also quite likely to happen when
284waking up from hibernation, as many systems do not maintain suspend
285current to the USB host controllers during hibernation. (It's
286possible to work around the hibernation-forces-disconnect problem by
287using the USB Persist facility.)
288
281The reset_resume method is used by the USB Persist facility (see 289The reset_resume method is used by the USB Persist facility (see
282Documentation/usb/persist.txt) and it can also be used under certain 290Documentation/usb/persist.txt) and it can also be used under certain
283circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a 291circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a
diff --git a/Documentation/x86_64/uefi.txt b/Documentation/x86_64/uefi.txt
new file mode 100644
index 000000000000..91a98edfb588
--- /dev/null
+++ b/Documentation/x86_64/uefi.txt
@@ -0,0 +1,29 @@
1General note on [U]EFI x86_64 support
2-------------------------------------
3
4The nomenclature EFI and UEFI are used interchangeably in this document.
5
6Although the tools below are _not_ needed for building the kernel,
7the needed bootloader support and associated tools for x86_64 platforms
8with EFI firmware and specifications are listed below.
9
101. UEFI specification: http://www.uefi.org
11
122. Booting Linux kernel on UEFI x86_64 platform requires bootloader
13 support. Elilo with x86_64 support can be used.
14
153. x86_64 platform with EFI/UEFI firmware.
16
17Mechanics:
18---------
19- Build the kernel with the following configuration.
20 CONFIG_FB_EFI=y
21 CONFIG_FRAMEBUFFER_CONSOLE=y
22- Create a VFAT partition on the disk
23- Copy the following to the VFAT partition:
24 elilo bootloader with x86_64 support, elilo configuration file,
25 kernel image built in first step and corresponding
26 initrd. Instructions on building elilo and its dependencies
27 can be found in the elilo sourceforge project.
28- Boot to EFI shell and invoke elilo choosing the kernel image built
29 in first step.