diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/DocBook/Makefile | 2 | ||||
-rw-r--r-- | Documentation/DocBook/uio-howto.tmpl | 90 | ||||
-rw-r--r-- | Documentation/lguest/lguest.c | 9 | ||||
-rw-r--r-- | Documentation/namespaces/compatibility-list.txt | 39 | ||||
-rw-r--r-- | Documentation/parport-lowlevel.txt | 4 | ||||
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 5 | ||||
-rw-r--r-- | Documentation/thinkpad-acpi.txt | 73 | ||||
-rw-r--r-- | Documentation/tty.txt | 8 | ||||
-rw-r--r-- | Documentation/usb/power-management.txt | 8 | ||||
-rw-r--r-- | Documentation/x86_64/uefi.txt | 29 |
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. |
263 | mutex-design.txt | 263 | mutex-design.txt |
264 | - info on the generic mutex subsystem. | 264 | - info on the generic mutex subsystem. |
265 | namespaces/ | ||
266 | - directory with various information about namespaces | ||
265 | nbd.txt | 267 | nbd.txt |
266 | - info on a TCP implementation of a network block device. | 268 | - info on a TCP implementation of a network block device. |
267 | netlabel/ | 269 | netlabel/ |
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"> | ||
308 | cd /sys/devices/platform/uio_dummy/ | ||
309 | echo 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. | |||
354 | interrupt, it's your modules task to determine the irq number during | 329 | interrupt, it's your modules task to determine the irq number during |
355 | initialization. If you don't have a hardware generated interrupt but | 330 | initialization. If you don't have a hardware generated interrupt but |
356 | want to trigger the interrupt handler in some other way, set | 331 | want 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>. |
358 | uio_dummy module does this as it triggers the event mechanism in a timer | 333 | If you had no interrupt at all, you could set |
359 | routine. 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 |
361 | rarely makes sense. | 335 | rarely 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 | |||
3 | This document contains the information about the problems user | ||
4 | may have when creating tasks living in different namespaces. | ||
5 | |||
6 | Here's the summary. This matrix shows the known problems, that | ||
7 | occur when tasks share some namespace (the columns) while living | ||
8 | in different other namespaces (the rows): | ||
9 | |||
10 | UTS IPC VFS PID User Net | ||
11 | UTS X | ||
12 | IPC X 1 | ||
13 | VFS X | ||
14 | PID 1 1 X | ||
15 | User 2 2 X | ||
16 | Net X | ||
17 | |||
18 | 1. 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 | |||
28 | 2. 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 |
340 | parport_claim and parport_release in order to use the port. | 340 | parport_claim and parport_release in order to use the port. |
341 | 341 | ||
342 | The ('name') argument is the name of the device that appears in /proc | ||
343 | filesystem. The string must be valid for the whole lifetime of the | ||
344 | device (until parport_unregister_device is called). | ||
345 | |||
342 | This function will register three callbacks into your driver: | 346 | This 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 |
344 | indicate that you do not want a callback. | 348 | indicate 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" | |||
923 | This feature allows software control of the LCD brightness on ThinkPad | 923 | This feature allows software control of the LCD brightness on ThinkPad |
924 | models which don't have a hardware brightness slider. | 924 | models which don't have a hardware brightness slider. |
925 | 925 | ||
926 | It has some limitations: the LCD backlight cannot be actually turned on or off | 926 | It has some limitations: the LCD backlight cannot be actually turned on or |
927 | by this interface, and in many ThinkPad models, the "dim while on battery" | 927 | off by this interface, and in many ThinkPad models, the "dim while on |
928 | functionality will be enabled by the BIOS when this interface is used, and | 928 | battery" functionality will be enabled by the BIOS when this interface is |
929 | cannot be controlled. | 929 | used, and cannot be controlled. |
930 | 930 | ||
931 | The backlight control has eight levels, ranging from 0 to 7. Some of the | 931 | On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control |
932 | levels may not be distinct. | 932 | has eight brightness levels, ranging from 0 to 7. Some of the levels |
933 | 933 | may not be distinct. Later Lenovo models that implement the ACPI | |
934 | There are two interfaces to the firmware for brightness control, EC and CMOS. | 934 | display backlight brightness control methods have 16 levels, ranging |
935 | To select which one should be used, use the brightness_mode module parameter: | 935 | from 0 to 15. |
936 | brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode, | 936 | |
937 | brightness_mode=3 selects both EC and CMOS. The driver tries to autodetect | 937 | There are two interfaces to the firmware for direct brightness control, |
938 | which interface to use. | 938 | EC and CMOS. To select which one should be used, use the |
939 | brightness_mode module parameter: brightness_mode=1 selects EC mode, | ||
940 | brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC | ||
941 | and CMOS. The driver tries to autodetect which interface to use. | ||
942 | |||
943 | When display backlight brightness controls are available through the | ||
944 | standard ACPI interface, it is best to use it instead of this direct | ||
945 | ThinkPad-specific interface. The driver will disable its native | ||
946 | backlight brightness control interface if it detects that the standard | ||
947 | ACPI interface is available in the ThinkPad. | ||
948 | |||
949 | The brightness_enable module parameter can be used to control whether | ||
950 | the LCD brightness control feature will be enabled when available. | ||
951 | brightness_enable=0 forces it to be disabled. brightness_enable=1 | ||
952 | forces it to be enabled when available, even if the standard ACPI | ||
953 | interface is also available. | ||
939 | 954 | ||
940 | Procfs notes: | 955 | Procfs notes: |
941 | 956 | ||
@@ -947,11 +962,11 @@ Procfs notes: | |||
947 | 962 | ||
948 | Sysfs notes: | 963 | Sysfs notes: |
949 | 964 | ||
950 | The interface is implemented through the backlight sysfs class, which is poorly | 965 | The interface is implemented through the backlight sysfs class, which is |
951 | documented at this time. | 966 | poorly documented at this time. |
952 | 967 | ||
953 | Locate the thinkpad_screen device under /sys/class/backlight, and inside it | 968 | Locate the thinkpad_screen device under /sys/class/backlight, and inside |
954 | there will be the following attributes: | 969 | it 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 | ||
977 | Volume control -- /proc/acpi/ibm/volume | 994 | Volume 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 | |||
135 | throttle() Notify the tty driver that input buffers for the | 143 | throttle() 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 | ||
281 | If the device is disconnected or powered down while it is suspended, | ||
282 | the disconnect method will be called instead of the resume or | ||
283 | reset_resume method. This is also quite likely to happen when | ||
284 | waking up from hibernation, as many systems do not maintain suspend | ||
285 | current to the USB host controllers during hibernation. (It's | ||
286 | possible to work around the hibernation-forces-disconnect problem by | ||
287 | using the USB Persist facility.) | ||
288 | |||
281 | The reset_resume method is used by the USB Persist facility (see | 289 | The reset_resume method is used by the USB Persist facility (see |
282 | Documentation/usb/persist.txt) and it can also be used under certain | 290 | Documentation/usb/persist.txt) and it can also be used under certain |
283 | circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a | 291 | circumstances 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 @@ | |||
1 | General note on [U]EFI x86_64 support | ||
2 | ------------------------------------- | ||
3 | |||
4 | The nomenclature EFI and UEFI are used interchangeably in this document. | ||
5 | |||
6 | Although the tools below are _not_ needed for building the kernel, | ||
7 | the needed bootloader support and associated tools for x86_64 platforms | ||
8 | with EFI firmware and specifications are listed below. | ||
9 | |||
10 | 1. UEFI specification: http://www.uefi.org | ||
11 | |||
12 | 2. Booting Linux kernel on UEFI x86_64 platform requires bootloader | ||
13 | support. Elilo with x86_64 support can be used. | ||
14 | |||
15 | 3. x86_64 platform with EFI/UEFI firmware. | ||
16 | |||
17 | Mechanics: | ||
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. | ||