aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-10-28 12:17:52 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-10-28 12:17:52 -0400
commit90890687859ea658759e653c4e70ed7e9e1a6217 (patch)
tree9065b30bb189e16ef99b8b5a0d444558f8dc579f /Documentation
parent2995bfb7855aabd493f840af361f3dd7d221caea (diff)
parent5fadd053d9bb4345ec6f405d24db4e7eb49cf81e (diff)
Merge branch 'master'
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/Changes10
-rw-r--r--Documentation/DocBook/libata.tmpl1072
-rw-r--r--Documentation/SubmittingPatches86
-rw-r--r--Documentation/block/biodoc.txt113
-rw-r--r--Documentation/connector/connector.txt44
-rw-r--r--Documentation/dell_rbu.txt38
-rw-r--r--Documentation/device-mapper/snapshot.txt73
-rw-r--r--Documentation/kernel-parameters.txt496
-rw-r--r--Documentation/keys-request-key.txt161
-rw-r--r--Documentation/keys.txt92
-rw-r--r--Documentation/networking/bonding.txt5
-rw-r--r--Documentation/networking/ip-sysctl.txt10
-rw-r--r--Documentation/sparse.txt4
-rw-r--r--Documentation/usb/URB.txt74
14 files changed, 1894 insertions, 384 deletions
diff --git a/Documentation/Changes b/Documentation/Changes
index 5eaab0441d76..27232be26e1a 100644
--- a/Documentation/Changes
+++ b/Documentation/Changes
@@ -237,6 +237,12 @@ udev
237udev is a userspace application for populating /dev dynamically with 237udev is a userspace application for populating /dev dynamically with
238only entries for devices actually present. udev replaces devfs. 238only entries for devices actually present. udev replaces devfs.
239 239
240FUSE
241----
242
243Needs libfuse 2.4.0 or later. Absolute minimum is 2.3.0 but mount
244options 'direct_io' and 'kernel_cache' won't work.
245
240Networking 246Networking
241========== 247==========
242 248
@@ -390,6 +396,10 @@ udev
390---- 396----
391o <http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html> 397o <http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html>
392 398
399FUSE
400----
401o <http://sourceforge.net/projects/fuse>
402
393Networking 403Networking
394********** 404**********
395 405
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl
index 375ae760dc1e..d260d92089ad 100644
--- a/Documentation/DocBook/libata.tmpl
+++ b/Documentation/DocBook/libata.tmpl
@@ -415,6 +415,362 @@ and other resources, etc.
415 </sect1> 415 </sect1>
416 </chapter> 416 </chapter>
417 417
418 <chapter id="libataEH">
419 <title>Error handling</title>
420
421 <para>
422 This chapter describes how errors are handled under libata.
423 Readers are advised to read SCSI EH
424 (Documentation/scsi/scsi_eh.txt) and ATA exceptions doc first.
425 </para>
426
427 <sect1><title>Origins of commands</title>
428 <para>
429 In libata, a command is represented with struct ata_queued_cmd
430 or qc. qc's are preallocated during port initialization and
431 repetitively used for command executions. Currently only one
432 qc is allocated per port but yet-to-be-merged NCQ branch
433 allocates one for each tag and maps each qc to NCQ tag 1-to-1.
434 </para>
435 <para>
436 libata commands can originate from two sources - libata itself
437 and SCSI midlayer. libata internal commands are used for
438 initialization and error handling. All normal blk requests
439 and commands for SCSI emulation are passed as SCSI commands
440 through queuecommand callback of SCSI host template.
441 </para>
442 </sect1>
443
444 <sect1><title>How commands are issued</title>
445
446 <variablelist>
447
448 <varlistentry><term>Internal commands</term>
449 <listitem>
450 <para>
451 First, qc is allocated and initialized using
452 ata_qc_new_init(). Although ata_qc_new_init() doesn't
453 implement any wait or retry mechanism when qc is not
454 available, internal commands are currently issued only during
455 initialization and error recovery, so no other command is
456 active and allocation is guaranteed to succeed.
457 </para>
458 <para>
459 Once allocated qc's taskfile is initialized for the command to
460 be executed. qc currently has two mechanisms to notify
461 completion. One is via qc->complete_fn() callback and the
462 other is completion qc->waiting. qc->complete_fn() callback
463 is the asynchronous path used by normal SCSI translated
464 commands and qc->waiting is the synchronous (issuer sleeps in
465 process context) path used by internal commands.
466 </para>
467 <para>
468 Once initialization is complete, host_set lock is acquired
469 and the qc is issued.
470 </para>
471 </listitem>
472 </varlistentry>
473
474 <varlistentry><term>SCSI commands</term>
475 <listitem>
476 <para>
477 All libata drivers use ata_scsi_queuecmd() as
478 hostt->queuecommand callback. scmds can either be simulated
479 or translated. No qc is involved in processing a simulated
480 scmd. The result is computed right away and the scmd is
481 completed.
482 </para>
483 <para>
484 For a translated scmd, ata_qc_new_init() is invoked to
485 allocate a qc and the scmd is translated into the qc. SCSI
486 midlayer's completion notification function pointer is stored
487 into qc->scsidone.
488 </para>
489 <para>
490 qc->complete_fn() callback is used for completion
491 notification. ATA commands use ata_scsi_qc_complete() while
492 ATAPI commands use atapi_qc_complete(). Both functions end up
493 calling qc->scsidone to notify upper layer when the qc is
494 finished. After translation is completed, the qc is issued
495 with ata_qc_issue().
496 </para>
497 <para>
498 Note that SCSI midlayer invokes hostt->queuecommand while
499 holding host_set lock, so all above occur while holding
500 host_set lock.
501 </para>
502 </listitem>
503 </varlistentry>
504
505 </variablelist>
506 </sect1>
507
508 <sect1><title>How commands are processed</title>
509 <para>
510 Depending on which protocol and which controller are used,
511 commands are processed differently. For the purpose of
512 discussion, a controller which uses taskfile interface and all
513 standard callbacks is assumed.
514 </para>
515 <para>
516 Currently 6 ATA command protocols are used. They can be
517 sorted into the following four categories according to how
518 they are processed.
519 </para>
520
521 <variablelist>
522 <varlistentry><term>ATA NO DATA or DMA</term>
523 <listitem>
524 <para>
525 ATA_PROT_NODATA and ATA_PROT_DMA fall into this category.
526 These types of commands don't require any software
527 intervention once issued. Device will raise interrupt on
528 completion.
529 </para>
530 </listitem>
531 </varlistentry>
532
533 <varlistentry><term>ATA PIO</term>
534 <listitem>
535 <para>
536 ATA_PROT_PIO is in this category. libata currently
537 implements PIO with polling. ATA_NIEN bit is set to turn
538 off interrupt and pio_task on ata_wq performs polling and
539 IO.
540 </para>
541 </listitem>
542 </varlistentry>
543
544 <varlistentry><term>ATAPI NODATA or DMA</term>
545 <listitem>
546 <para>
547 ATA_PROT_ATAPI_NODATA and ATA_PROT_ATAPI_DMA are in this
548 category. packet_task is used to poll BSY bit after
549 issuing PACKET command. Once BSY is turned off by the
550 device, packet_task transfers CDB and hands off processing
551 to interrupt handler.
552 </para>
553 </listitem>
554 </varlistentry>
555
556 <varlistentry><term>ATAPI PIO</term>
557 <listitem>
558 <para>
559 ATA_PROT_ATAPI is in this category. ATA_NIEN bit is set
560 and, as in ATAPI NODATA or DMA, packet_task submits cdb.
561 However, after submitting cdb, further processing (data
562 transfer) is handed off to pio_task.
563 </para>
564 </listitem>
565 </varlistentry>
566 </variablelist>
567 </sect1>
568
569 <sect1><title>How commands are completed</title>
570 <para>
571 Once issued, all qc's are either completed with
572 ata_qc_complete() or time out. For commands which are handled
573 by interrupts, ata_host_intr() invokes ata_qc_complete(), and,
574 for PIO tasks, pio_task invokes ata_qc_complete(). In error
575 cases, packet_task may also complete commands.
576 </para>
577 <para>
578 ata_qc_complete() does the following.
579 </para>
580
581 <orderedlist>
582
583 <listitem>
584 <para>
585 DMA memory is unmapped.
586 </para>
587 </listitem>
588
589 <listitem>
590 <para>
591 ATA_QCFLAG_ACTIVE is clared from qc->flags.
592 </para>
593 </listitem>
594
595 <listitem>
596 <para>
597 qc->complete_fn() callback is invoked. If the return value of
598 the callback is not zero. Completion is short circuited and
599 ata_qc_complete() returns.
600 </para>
601 </listitem>
602
603 <listitem>
604 <para>
605 __ata_qc_complete() is called, which does
606 <orderedlist>
607
608 <listitem>
609 <para>
610 qc->flags is cleared to zero.
611 </para>
612 </listitem>
613
614 <listitem>
615 <para>
616 ap->active_tag and qc->tag are poisoned.
617 </para>
618 </listitem>
619
620 <listitem>
621 <para>
622 qc->waiting is claread &amp; completed (in that order).
623 </para>
624 </listitem>
625
626 <listitem>
627 <para>
628 qc is deallocated by clearing appropriate bit in ap->qactive.
629 </para>
630 </listitem>
631
632 </orderedlist>
633 </para>
634 </listitem>
635
636 </orderedlist>
637
638 <para>
639 So, it basically notifies upper layer and deallocates qc. One
640 exception is short-circuit path in #3 which is used by
641 atapi_qc_complete().
642 </para>
643 <para>
644 For all non-ATAPI commands, whether it fails or not, almost
645 the same code path is taken and very little error handling
646 takes place. A qc is completed with success status if it
647 succeeded, with failed status otherwise.
648 </para>
649 <para>
650 However, failed ATAPI commands require more handling as
651 REQUEST SENSE is needed to acquire sense data. If an ATAPI
652 command fails, ata_qc_complete() is invoked with error status,
653 which in turn invokes atapi_qc_complete() via
654 qc->complete_fn() callback.
655 </para>
656 <para>
657 This makes atapi_qc_complete() set scmd->result to
658 SAM_STAT_CHECK_CONDITION, complete the scmd and return 1. As
659 the sense data is empty but scmd->result is CHECK CONDITION,
660 SCSI midlayer will invoke EH for the scmd, and returning 1
661 makes ata_qc_complete() to return without deallocating the qc.
662 This leads us to ata_scsi_error() with partially completed qc.
663 </para>
664
665 </sect1>
666
667 <sect1><title>ata_scsi_error()</title>
668 <para>
669 ata_scsi_error() is the current hostt->eh_strategy_handler()
670 for libata. As discussed above, this will be entered in two
671 cases - timeout and ATAPI error completion. This function
672 calls low level libata driver's eng_timeout() callback, the
673 standard callback for which is ata_eng_timeout(). It checks
674 if a qc is active and calls ata_qc_timeout() on the qc if so.
675 Actual error handling occurs in ata_qc_timeout().
676 </para>
677 <para>
678 If EH is invoked for timeout, ata_qc_timeout() stops BMDMA and
679 completes the qc. Note that as we're currently in EH, we
680 cannot call scsi_done. As described in SCSI EH doc, a
681 recovered scmd should be either retried with
682 scsi_queue_insert() or finished with scsi_finish_command().
683 Here, we override qc->scsidone with scsi_finish_command() and
684 calls ata_qc_complete().
685 </para>
686 <para>
687 If EH is invoked due to a failed ATAPI qc, the qc here is
688 completed but not deallocated. The purpose of this
689 half-completion is to use the qc as place holder to make EH
690 code reach this place. This is a bit hackish, but it works.
691 </para>
692 <para>
693 Once control reaches here, the qc is deallocated by invoking
694 __ata_qc_complete() explicitly. Then, internal qc for REQUEST
695 SENSE is issued. Once sense data is acquired, scmd is
696 finished by directly invoking scsi_finish_command() on the
697 scmd. Note that as we already have completed and deallocated
698 the qc which was associated with the scmd, we don't need
699 to/cannot call ata_qc_complete() again.
700 </para>
701
702 </sect1>
703
704 <sect1><title>Problems with the current EH</title>
705
706 <itemizedlist>
707
708 <listitem>
709 <para>
710 Error representation is too crude. Currently any and all
711 error conditions are represented with ATA STATUS and ERROR
712 registers. Errors which aren't ATA device errors are treated
713 as ATA device errors by setting ATA_ERR bit. Better error
714 descriptor which can properly represent ATA and other
715 errors/exceptions is needed.
716 </para>
717 </listitem>
718
719 <listitem>
720 <para>
721 When handling timeouts, no action is taken to make device
722 forget about the timed out command and ready for new commands.
723 </para>
724 </listitem>
725
726 <listitem>
727 <para>
728 EH handling via ata_scsi_error() is not properly protected
729 from usual command processing. On EH entrance, the device is
730 not in quiescent state. Timed out commands may succeed or
731 fail any time. pio_task and atapi_task may still be running.
732 </para>
733 </listitem>
734
735 <listitem>
736 <para>
737 Too weak error recovery. Devices / controllers causing HSM
738 mismatch errors and other errors quite often require reset to
739 return to known state. Also, advanced error handling is
740 necessary to support features like NCQ and hotplug.
741 </para>
742 </listitem>
743
744 <listitem>
745 <para>
746 ATA errors are directly handled in the interrupt handler and
747 PIO errors in pio_task. This is problematic for advanced
748 error handling for the following reasons.
749 </para>
750 <para>
751 First, advanced error handling often requires context and
752 internal qc execution.
753 </para>
754 <para>
755 Second, even a simple failure (say, CRC error) needs
756 information gathering and could trigger complex error handling
757 (say, resetting &amp; reconfiguring). Having multiple code
758 paths to gather information, enter EH and trigger actions
759 makes life painful.
760 </para>
761 <para>
762 Third, scattered EH code makes implementing low level drivers
763 difficult. Low level drivers override libata callbacks. If
764 EH is scattered over several places, each affected callbacks
765 should perform its part of error handling. This can be error
766 prone and painful.
767 </para>
768 </listitem>
769
770 </itemizedlist>
771 </sect1>
772 </chapter>
773
418 <chapter id="libataExt"> 774 <chapter id="libataExt">
419 <title>libata Library</title> 775 <title>libata Library</title>
420!Edrivers/scsi/libata-core.c 776!Edrivers/scsi/libata-core.c
@@ -431,6 +787,722 @@ and other resources, etc.
431!Idrivers/scsi/libata-scsi.c 787!Idrivers/scsi/libata-scsi.c
432 </chapter> 788 </chapter>
433 789
790 <chapter id="ataExceptions">
791 <title>ATA errors &amp; exceptions</title>
792
793 <para>
794 This chapter tries to identify what error/exception conditions exist
795 for ATA/ATAPI devices and describe how they should be handled in
796 implementation-neutral way.
797 </para>
798
799 <para>
800 The term 'error' is used to describe conditions where either an
801 explicit error condition is reported from device or a command has
802 timed out.
803 </para>
804
805 <para>
806 The term 'exception' is either used to describe exceptional
807 conditions which are not errors (say, power or hotplug events), or
808 to describe both errors and non-error exceptional conditions. Where
809 explicit distinction between error and exception is necessary, the
810 term 'non-error exception' is used.
811 </para>
812
813 <sect1 id="excat">
814 <title>Exception categories</title>
815 <para>
816 Exceptions are described primarily with respect to legacy
817 taskfile + bus master IDE interface. If a controller provides
818 other better mechanism for error reporting, mapping those into
819 categories described below shouldn't be difficult.
820 </para>
821
822 <para>
823 In the following sections, two recovery actions - reset and
824 reconfiguring transport - are mentioned. These are described
825 further in <xref linkend="exrec"/>.
826 </para>
827
828 <sect2 id="excatHSMviolation">
829 <title>HSM violation</title>
830 <para>
831 This error is indicated when STATUS value doesn't match HSM
832 requirement during issuing or excution any ATA/ATAPI command.
833 </para>
834
835 <itemizedlist>
836 <title>Examples</title>
837
838 <listitem>
839 <para>
840 ATA_STATUS doesn't contain !BSY &amp;&amp; DRDY &amp;&amp; !DRQ while trying
841 to issue a command.
842 </para>
843 </listitem>
844
845 <listitem>
846 <para>
847 !BSY &amp;&amp; !DRQ during PIO data transfer.
848 </para>
849 </listitem>
850
851 <listitem>
852 <para>
853 DRQ on command completion.
854 </para>
855 </listitem>
856
857 <listitem>
858 <para>
859 !BSY &amp;&amp; ERR after CDB tranfer starts but before the
860 last byte of CDB is transferred. ATA/ATAPI standard states
861 that &quot;The device shall not terminate the PACKET command
862 with an error before the last byte of the command packet has
863 been written&quot; in the error outputs description of PACKET
864 command and the state diagram doesn't include such
865 transitions.
866 </para>
867 </listitem>
868
869 </itemizedlist>
870
871 <para>
872 In these cases, HSM is violated and not much information
873 regarding the error can be acquired from STATUS or ERROR
874 register. IOW, this error can be anything - driver bug,
875 faulty device, controller and/or cable.
876 </para>
877
878 <para>
879 As HSM is violated, reset is necessary to restore known state.
880 Reconfiguring transport for lower speed might be helpful too
881 as transmission errors sometimes cause this kind of errors.
882 </para>
883 </sect2>
884
885 <sect2 id="excatDevErr">
886 <title>ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)</title>
887
888 <para>
889 These are errors detected and reported by ATA/ATAPI devices
890 indicating device problems. For this type of errors, STATUS
891 and ERROR register values are valid and describe error
892 condition. Note that some of ATA bus errors are detected by
893 ATA/ATAPI devices and reported using the same mechanism as
894 device errors. Those cases are described later in this
895 section.
896 </para>
897
898 <para>
899 For ATA commands, this type of errors are indicated by !BSY
900 &amp;&amp; ERR during command execution and on completion.
901 </para>
902
903 <para>For ATAPI commands,</para>
904
905 <itemizedlist>
906
907 <listitem>
908 <para>
909 !BSY &amp;&amp; ERR &amp;&amp; ABRT right after issuing PACKET
910 indicates that PACKET command is not supported and falls in
911 this category.
912 </para>
913 </listitem>
914
915 <listitem>
916 <para>
917 !BSY &amp;&amp; ERR(==CHK) &amp;&amp; !ABRT after the last
918 byte of CDB is transferred indicates CHECK CONDITION and
919 doesn't fall in this category.
920 </para>
921 </listitem>
922
923 <listitem>
924 <para>
925 !BSY &amp;&amp; ERR(==CHK) &amp;&amp; ABRT after the last byte
926 of CDB is transferred *probably* indicates CHECK CONDITION and
927 doesn't fall in this category.
928 </para>
929 </listitem>
930
931 </itemizedlist>
932
933 <para>
934 Of errors detected as above, the followings are not ATA/ATAPI
935 device errors but ATA bus errors and should be handled
936 according to <xref linkend="excatATAbusErr"/>.
937 </para>
938
939 <variablelist>
940
941 <varlistentry>
942 <term>CRC error during data transfer</term>
943 <listitem>
944 <para>
945 This is indicated by ICRC bit in the ERROR register and
946 means that corruption occurred during data transfer. Upto
947 ATA/ATAPI-7, the standard specifies that this bit is only
948 applicable to UDMA transfers but ATA/ATAPI-8 draft revision
949 1f says that the bit may be applicable to multiword DMA and
950 PIO.
951 </para>
952 </listitem>
953 </varlistentry>
954
955 <varlistentry>
956 <term>ABRT error during data transfer or on completion</term>
957 <listitem>
958 <para>
959 Upto ATA/ATAPI-7, the standard specifies that ABRT could be
960 set on ICRC errors and on cases where a device is not able
961 to complete a command. Combined with the fact that MWDMA
962 and PIO transfer errors aren't allowed to use ICRC bit upto
963 ATA/ATAPI-7, it seems to imply that ABRT bit alone could
964 indicate tranfer errors.
965 </para>
966 <para>
967 However, ATA/ATAPI-8 draft revision 1f removes the part
968 that ICRC errors can turn on ABRT. So, this is kind of
969 gray area. Some heuristics are needed here.
970 </para>
971 </listitem>
972 </varlistentry>
973
974 </variablelist>
975
976 <para>
977 ATA/ATAPI device errors can be further categorized as follows.
978 </para>
979
980 <variablelist>
981
982 <varlistentry>
983 <term>Media errors</term>
984 <listitem>
985 <para>
986 This is indicated by UNC bit in the ERROR register. ATA
987 devices reports UNC error only after certain number of
988 retries cannot recover the data, so there's nothing much
989 else to do other than notifying upper layer.
990 </para>
991 <para>
992 READ and WRITE commands report CHS or LBA of the first
993 failed sector but ATA/ATAPI standard specifies that the
994 amount of transferred data on error completion is
995 indeterminate, so we cannot assume that sectors preceding
996 the failed sector have been transferred and thus cannot
997 complete those sectors successfully as SCSI does.
998 </para>
999 </listitem>
1000 </varlistentry>
1001
1002 <varlistentry>
1003 <term>Media changed / media change requested error</term>
1004 <listitem>
1005 <para>
1006 &lt;&lt;TODO: fill here&gt;&gt;
1007 </para>
1008 </listitem>
1009 </varlistentry>
1010
1011 <varlistentry><term>Address error</term>
1012 <listitem>
1013 <para>
1014 This is indicated by IDNF bit in the ERROR register.
1015 Report to upper layer.
1016 </para>
1017 </listitem>
1018 </varlistentry>
1019
1020 <varlistentry><term>Other errors</term>
1021 <listitem>
1022 <para>
1023 This can be invalid command or parameter indicated by ABRT
1024 ERROR bit or some other error condition. Note that ABRT
1025 bit can indicate a lot of things including ICRC and Address
1026 errors. Heuristics needed.
1027 </para>
1028 </listitem>
1029 </varlistentry>
1030
1031 </variablelist>
1032
1033 <para>
1034 Depending on commands, not all STATUS/ERROR bits are
1035 applicable. These non-applicable bits are marked with
1036 &quot;na&quot; in the output descriptions but upto ATA/ATAPI-7
1037 no definition of &quot;na&quot; can be found. However,
1038 ATA/ATAPI-8 draft revision 1f describes &quot;N/A&quot; as
1039 follows.
1040 </para>
1041
1042 <blockquote>
1043 <variablelist>
1044 <varlistentry><term>3.2.3.3a N/A</term>
1045 <listitem>
1046 <para>
1047 A keyword the indicates a field has no defined value in
1048 this standard and should not be checked by the host or
1049 device. N/A fields should be cleared to zero.
1050 </para>
1051 </listitem>
1052 </varlistentry>
1053 </variablelist>
1054 </blockquote>
1055
1056 <para>
1057 So, it seems reasonable to assume that &quot;na&quot; bits are
1058 cleared to zero by devices and thus need no explicit masking.
1059 </para>
1060
1061 </sect2>
1062
1063 <sect2 id="excatATAPIcc">
1064 <title>ATAPI device CHECK CONDITION</title>
1065
1066 <para>
1067 ATAPI device CHECK CONDITION error is indicated by set CHK bit
1068 (ERR bit) in the STATUS register after the last byte of CDB is
1069 transferred for a PACKET command. For this kind of errors,
1070 sense data should be acquired to gather information regarding
1071 the errors. REQUEST SENSE packet command should be used to
1072 acquire sense data.
1073 </para>
1074
1075 <para>
1076 Once sense data is acquired, this type of errors can be
1077 handled similary to other SCSI errors. Note that sense data
1078 may indicate ATA bus error (e.g. Sense Key 04h HARDWARE ERROR
1079 &amp;&amp; ASC/ASCQ 47h/00h SCSI PARITY ERROR). In such
1080 cases, the error should be considered as an ATA bus error and
1081 handled according to <xref linkend="excatATAbusErr"/>.
1082 </para>
1083
1084 </sect2>
1085
1086 <sect2 id="excatNCQerr">
1087 <title>ATA device error (NCQ)</title>
1088
1089 <para>
1090 NCQ command error is indicated by cleared BSY and set ERR bit
1091 during NCQ command phase (one or more NCQ commands
1092 outstanding). Although STATUS and ERROR registers will
1093 contain valid values describing the error, READ LOG EXT is
1094 required to clear the error condition, determine which command
1095 has failed and acquire more information.
1096 </para>
1097
1098 <para>
1099 READ LOG EXT Log Page 10h reports which tag has failed and
1100 taskfile register values describing the error. With this
1101 information the failed command can be handled as a normal ATA
1102 command error as in <xref linkend="excatDevErr"/> and all
1103 other in-flight commands must be retried. Note that this
1104 retry should not be counted - it's likely that commands
1105 retried this way would have completed normally if it were not
1106 for the failed command.
1107 </para>
1108
1109 <para>
1110 Note that ATA bus errors can be reported as ATA device NCQ
1111 errors. This should be handled as described in <xref
1112 linkend="excatATAbusErr"/>.
1113 </para>
1114
1115 <para>
1116 If READ LOG EXT Log Page 10h fails or reports NQ, we're
1117 thoroughly screwed. This condition should be treated
1118 according to <xref linkend="excatHSMviolation"/>.
1119 </para>
1120
1121 </sect2>
1122
1123 <sect2 id="excatATAbusErr">
1124 <title>ATA bus error</title>
1125
1126 <para>
1127 ATA bus error means that data corruption occurred during
1128 transmission over ATA bus (SATA or PATA). This type of errors
1129 can be indicated by
1130 </para>
1131
1132 <itemizedlist>
1133
1134 <listitem>
1135 <para>
1136 ICRC or ABRT error as described in <xref linkend="excatDevErr"/>.
1137 </para>
1138 </listitem>
1139
1140 <listitem>
1141 <para>
1142 Controller-specific error completion with error information
1143 indicating transmission error.
1144 </para>
1145 </listitem>
1146
1147 <listitem>
1148 <para>
1149 On some controllers, command timeout. In this case, there may
1150 be a mechanism to determine that the timeout is due to
1151 transmission error.
1152 </para>
1153 </listitem>
1154
1155 <listitem>
1156 <para>
1157 Unknown/random errors, timeouts and all sorts of weirdities.
1158 </para>
1159 </listitem>
1160
1161 </itemizedlist>
1162
1163 <para>
1164 As described above, transmission errors can cause wide variety
1165 of symptoms ranging from device ICRC error to random device
1166 lockup, and, for many cases, there is no way to tell if an
1167 error condition is due to transmission error or not;
1168 therefore, it's necessary to employ some kind of heuristic
1169 when dealing with errors and timeouts. For example,
1170 encountering repetitive ABRT errors for known supported
1171 command is likely to indicate ATA bus error.
1172 </para>
1173
1174 <para>
1175 Once it's determined that ATA bus errors have possibly
1176 occurred, lowering ATA bus transmission speed is one of
1177 actions which may alleviate the problem. See <xref
1178 linkend="exrecReconf"/> for more information.
1179 </para>
1180
1181 </sect2>
1182
1183 <sect2 id="excatPCIbusErr">
1184 <title>PCI bus error</title>
1185
1186 <para>
1187 Data corruption or other failures during transmission over PCI
1188 (or other system bus). For standard BMDMA, this is indicated
1189 by Error bit in the BMDMA Status register. This type of
1190 errors must be logged as it indicates something is very wrong
1191 with the system. Resetting host controller is recommended.
1192 </para>
1193
1194 </sect2>
1195
1196 <sect2 id="excatLateCompletion">
1197 <title>Late completion</title>
1198
1199 <para>
1200 This occurs when timeout occurs and the timeout handler finds
1201 out that the timed out command has completed successfully or
1202 with error. This is usually caused by lost interrupts. This
1203 type of errors must be logged. Resetting host controller is
1204 recommended.
1205 </para>
1206
1207 </sect2>
1208
1209 <sect2 id="excatUnknown">
1210 <title>Unknown error (timeout)</title>
1211
1212 <para>
1213 This is when timeout occurs and the command is still
1214 processing or the host and device are in unknown state. When
1215 this occurs, HSM could be in any valid or invalid state. To
1216 bring the device to known state and make it forget about the
1217 timed out command, resetting is necessary. The timed out
1218 command may be retried.
1219 </para>
1220
1221 <para>
1222 Timeouts can also be caused by transmission errors. Refer to
1223 <xref linkend="excatATAbusErr"/> for more details.
1224 </para>
1225
1226 </sect2>
1227
1228 <sect2 id="excatHoplugPM">
1229 <title>Hotplug and power management exceptions</title>
1230
1231 <para>
1232 &lt;&lt;TODO: fill here&gt;&gt;
1233 </para>
1234
1235 </sect2>
1236
1237 </sect1>
1238
1239 <sect1 id="exrec">
1240 <title>EH recovery actions</title>
1241
1242 <para>
1243 This section discusses several important recovery actions.
1244 </para>
1245
1246 <sect2 id="exrecClr">
1247 <title>Clearing error condition</title>
1248
1249 <para>
1250 Many controllers require its error registers to be cleared by
1251 error handler. Different controllers may have different
1252 requirements.
1253 </para>
1254
1255 <para>
1256 For SATA, it's strongly recommended to clear at least SError
1257 register during error handling.
1258 </para>
1259 </sect2>
1260
1261 <sect2 id="exrecRst">
1262 <title>Reset</title>
1263
1264 <para>
1265 During EH, resetting is necessary in the following cases.
1266 </para>
1267
1268 <itemizedlist>
1269
1270 <listitem>
1271 <para>
1272 HSM is in unknown or invalid state
1273 </para>
1274 </listitem>
1275
1276 <listitem>
1277 <para>
1278 HBA is in unknown or invalid state
1279 </para>
1280 </listitem>
1281
1282 <listitem>
1283 <para>
1284 EH needs to make HBA/device forget about in-flight commands
1285 </para>
1286 </listitem>
1287
1288 <listitem>
1289 <para>
1290 HBA/device behaves weirdly
1291 </para>
1292 </listitem>
1293
1294 </itemizedlist>
1295
1296 <para>
1297 Resetting during EH might be a good idea regardless of error
1298 condition to improve EH robustness. Whether to reset both or
1299 either one of HBA and device depends on situation but the
1300 following scheme is recommended.
1301 </para>
1302
1303 <itemizedlist>
1304
1305 <listitem>
1306 <para>
1307 When it's known that HBA is in ready state but ATA/ATAPI
1308 device in in unknown state, reset only device.
1309 </para>
1310 </listitem>
1311
1312 <listitem>
1313 <para>
1314 If HBA is in unknown state, reset both HBA and device.
1315 </para>
1316 </listitem>
1317
1318 </itemizedlist>
1319
1320 <para>
1321 HBA resetting is implementation specific. For a controller
1322 complying to taskfile/BMDMA PCI IDE, stopping active DMA
1323 transaction may be sufficient iff BMDMA state is the only HBA
1324 context. But even mostly taskfile/BMDMA PCI IDE complying
1325 controllers may have implementation specific requirements and
1326 mechanism to reset themselves. This must be addressed by
1327 specific drivers.
1328 </para>
1329
1330 <para>
1331 OTOH, ATA/ATAPI standard describes in detail ways to reset
1332 ATA/ATAPI devices.
1333 </para>
1334
1335 <variablelist>
1336
1337 <varlistentry><term>PATA hardware reset</term>
1338 <listitem>
1339 <para>
1340 This is hardware initiated device reset signalled with
1341 asserted PATA RESET- signal. There is no standard way to
1342 initiate hardware reset from software although some
1343 hardware provides registers that allow driver to directly
1344 tweak the RESET- signal.
1345 </para>
1346 </listitem>
1347 </varlistentry>
1348
1349 <varlistentry><term>Software reset</term>
1350 <listitem>
1351 <para>
1352 This is achieved by turning CONTROL SRST bit on for at
1353 least 5us. Both PATA and SATA support it but, in case of
1354 SATA, this may require controller-specific support as the
1355 second Register FIS to clear SRST should be transmitted
1356 while BSY bit is still set. Note that on PATA, this resets
1357 both master and slave devices on a channel.
1358 </para>
1359 </listitem>
1360 </varlistentry>
1361
1362 <varlistentry><term>EXECUTE DEVICE DIAGNOSTIC command</term>
1363 <listitem>
1364 <para>
1365 Although ATA/ATAPI standard doesn't describe exactly, EDD
1366 implies some level of resetting, possibly similar level
1367 with software reset. Host-side EDD protocol can be handled
1368 with normal command processing and most SATA controllers
1369 should be able to handle EDD's just like other commands.
1370 As in software reset, EDD affects both devices on a PATA
1371 bus.
1372 </para>
1373 <para>
1374 Although EDD does reset devices, this doesn't suit error
1375 handling as EDD cannot be issued while BSY is set and it's
1376 unclear how it will act when device is in unknown/weird
1377 state.
1378 </para>
1379 </listitem>
1380 </varlistentry>
1381
1382 <varlistentry><term>ATAPI DEVICE RESET command</term>
1383 <listitem>
1384 <para>
1385 This is very similar to software reset except that reset
1386 can be restricted to the selected device without affecting
1387 the other device sharing the cable.
1388 </para>
1389 </listitem>
1390 </varlistentry>
1391
1392 <varlistentry><term>SATA phy reset</term>
1393 <listitem>
1394 <para>
1395 This is the preferred way of resetting a SATA device. In
1396 effect, it's identical to PATA hardware reset. Note that
1397 this can be done with the standard SCR Control register.
1398 As such, it's usually easier to implement than software
1399 reset.
1400 </para>
1401 </listitem>
1402 </varlistentry>
1403
1404 </variablelist>
1405
1406 <para>
1407 One more thing to consider when resetting devices is that
1408 resetting clears certain configuration parameters and they
1409 need to be set to their previous or newly adjusted values
1410 after reset.
1411 </para>
1412
1413 <para>
1414 Parameters affected are.
1415 </para>
1416
1417 <itemizedlist>
1418
1419 <listitem>
1420 <para>
1421 CHS set up with INITIALIZE DEVICE PARAMETERS (seldomly used)
1422 </para>
1423 </listitem>
1424
1425 <listitem>
1426 <para>
1427 Parameters set with SET FEATURES including transfer mode setting
1428 </para>
1429 </listitem>
1430
1431 <listitem>
1432 <para>
1433 Block count set with SET MULTIPLE MODE
1434 </para>
1435 </listitem>
1436
1437 <listitem>
1438 <para>
1439 Other parameters (SET MAX, MEDIA LOCK...)
1440 </para>
1441 </listitem>
1442
1443 </itemizedlist>
1444
1445 <para>
1446 ATA/ATAPI standard specifies that some parameters must be
1447 maintained across hardware or software reset, but doesn't
1448 strictly specify all of them. Always reconfiguring needed
1449 parameters after reset is required for robustness. Note that
1450 this also applies when resuming from deep sleep (power-off).
1451 </para>
1452
1453 <para>
1454 Also, ATA/ATAPI standard requires that IDENTIFY DEVICE /
1455 IDENTIFY PACKET DEVICE is issued after any configuration
1456 parameter is updated or a hardware reset and the result used
1457 for further operation. OS driver is required to implement
1458 revalidation mechanism to support this.
1459 </para>
1460
1461 </sect2>
1462
1463 <sect2 id="exrecReconf">
1464 <title>Reconfigure transport</title>
1465
1466 <para>
1467 For both PATA and SATA, a lot of corners are cut for cheap
1468 connectors, cables or controllers and it's quite common to see
1469 high transmission error rate. This can be mitigated by
1470 lowering transmission speed.
1471 </para>
1472
1473 <para>
1474 The following is a possible scheme Jeff Garzik suggested.
1475 </para>
1476
1477 <blockquote>
1478 <para>
1479 If more than $N (3?) transmission errors happen in 15 minutes,
1480 </para>
1481 <itemizedlist>
1482 <listitem>
1483 <para>
1484 if SATA, decrease SATA PHY speed. if speed cannot be decreased,
1485 </para>
1486 </listitem>
1487 <listitem>
1488 <para>
1489 decrease UDMA xfer speed. if at UDMA0, switch to PIO4,
1490 </para>
1491 </listitem>
1492 <listitem>
1493 <para>
1494 decrease PIO xfer speed. if at PIO3, complain, but continue
1495 </para>
1496 </listitem>
1497 </itemizedlist>
1498 </blockquote>
1499
1500 </sect2>
1501
1502 </sect1>
1503
1504 </chapter>
1505
434 <chapter id="PiixInt"> 1506 <chapter id="PiixInt">
435 <title>ata_piix Internals</title> 1507 <title>ata_piix Internals</title>
436!Idrivers/scsi/ata_piix.c 1508!Idrivers/scsi/ata_piix.c
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 7f43b040311e..237d54c44bc5 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -301,8 +301,84 @@ now, but you can do this to mark internal company procedures or just
301point out some special detail about the sign-off. 301point out some special detail about the sign-off.
302 302
303 303
30412) The canonical patch format
304 305
30512) More references for submitting patches 306The canonical patch subject line is:
307
308 Subject: [PATCH 001/123] subsystem: summary phrase
309
310The canonical patch message body contains the following:
311
312 - A "from" line specifying the patch author.
313
314 - An empty line.
315
316 - The body of the explanation, which will be copied to the
317 permanent changelog to describe this patch.
318
319 - The "Signed-off-by:" lines, described above, which will
320 also go in the changelog.
321
322 - A marker line containing simply "---".
323
324 - Any additional comments not suitable for the changelog.
325
326 - The actual patch (diff output).
327
328The Subject line format makes it very easy to sort the emails
329alphabetically by subject line - pretty much any email reader will
330support that - since because the sequence number is zero-padded,
331the numerical and alphabetic sort is the same.
332
333The "subsystem" in the email's Subject should identify which
334area or subsystem of the kernel is being patched.
335
336The "summary phrase" in the email's Subject should concisely
337describe the patch which that email contains. The "summary
338phrase" should not be a filename. Do not use the same "summary
339phrase" for every patch in a whole patch series.
340
341Bear in mind that the "summary phrase" of your email becomes
342a globally-unique identifier for that patch. It propagates
343all the way into the git changelog. The "summary phrase" may
344later be used in developer discussions which refer to the patch.
345People will want to google for the "summary phrase" to read
346discussion regarding that patch.
347
348A couple of example Subjects:
349
350 Subject: [patch 2/5] ext2: improve scalability of bitmap searching
351 Subject: [PATCHv2 001/207] x86: fix eflags tracking
352
353The "from" line must be the very first line in the message body,
354and has the form:
355
356 From: Original Author <author@example.com>
357
358The "from" line specifies who will be credited as the author of the
359patch in the permanent changelog. If the "from" line is missing,
360then the "From:" line from the email header will be used to determine
361the patch author in the changelog.
362
363The explanation body will be committed to the permanent source
364changelog, so should make sense to a competent reader who has long
365since forgotten the immediate details of the discussion that might
366have led to this patch.
367
368The "---" marker line serves the essential purpose of marking for patch
369handling tools where the changelog message ends.
370
371One good use for the additional comments after the "---" marker is for
372a diffstat, to show what files have changed, and the number of inserted
373and deleted lines per file. A diffstat is especially useful on bigger
374patches. Other comments relevant only to the moment or the maintainer,
375not suitable for the permanent changelog, should also go here.
376
377See more details on the proper patch format in the following
378references.
379
380
38113) More references for submitting patches
306 382
307Andrew Morton, "The perfect patch" (tpp). 383Andrew Morton, "The perfect patch" (tpp).
308 <http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt> 384 <http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt>
@@ -310,6 +386,14 @@ Andrew Morton, "The perfect patch" (tpp).
310Jeff Garzik, "Linux kernel patch submission format." 386Jeff Garzik, "Linux kernel patch submission format."
311 <http://linux.yyz.us/patch-format.html> 387 <http://linux.yyz.us/patch-format.html>
312 388
389Greg KH, "How to piss off a kernel subsystem maintainer"
390 <http://www.kroah.com/log/2005/03/31/>
391
392Kernel Documentation/CodingStyle
393 <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle>
394
395Linus Torvald's mail on the canonical patch format:
396 <http://lkml.org/lkml/2005/4/7/183>
313 397
314 398
315----------------------------------- 399-----------------------------------
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index 6dd274d7e1cf..2d65c2182161 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -906,9 +906,20 @@ Aside:
906 906
907 907
9084. The I/O scheduler 9084. The I/O scheduler
909I/O schedulers are now per queue. They should be runtime switchable and modular 909I/O scheduler, a.k.a. elevator, is implemented in two layers. Generic dispatch
910but aren't yet. Jens has most bits to do this, but the sysfs implementation is 910queue and specific I/O schedulers. Unless stated otherwise, elevator is used
911missing. 911to refer to both parts and I/O scheduler to specific I/O schedulers.
912
913Block layer implements generic dispatch queue in ll_rw_blk.c and elevator.c.
914The generic dispatch queue is responsible for properly ordering barrier
915requests, requeueing, handling non-fs requests and all other subtleties.
916
917Specific I/O schedulers are responsible for ordering normal filesystem
918requests. They can also choose to delay certain requests to improve
919throughput or whatever purpose. As the plural form indicates, there are
920multiple I/O schedulers. They can be built as modules but at least one should
921be built inside the kernel. Each queue can choose different one and can also
922change to another one dynamically.
912 923
913A block layer call to the i/o scheduler follows the convention elv_xxx(). This 924A block layer call to the i/o scheduler follows the convention elv_xxx(). This
914calls elevator_xxx_fn in the elevator switch (drivers/block/elevator.c). Oh, 925calls elevator_xxx_fn in the elevator switch (drivers/block/elevator.c). Oh,
@@ -921,44 +932,36 @@ keeping work.
921The functions an elevator may implement are: (* are mandatory) 932The functions an elevator may implement are: (* are mandatory)
922elevator_merge_fn called to query requests for merge with a bio 933elevator_merge_fn called to query requests for merge with a bio
923 934
924elevator_merge_req_fn " " " with another request 935elevator_merge_req_fn called when two requests get merged. the one
936 which gets merged into the other one will be
937 never seen by I/O scheduler again. IOW, after
938 being merged, the request is gone.
925 939
926elevator_merged_fn called when a request in the scheduler has been 940elevator_merged_fn called when a request in the scheduler has been
927 involved in a merge. It is used in the deadline 941 involved in a merge. It is used in the deadline
928 scheduler for example, to reposition the request 942 scheduler for example, to reposition the request
929 if its sorting order has changed. 943 if its sorting order has changed.
930 944
931*elevator_next_req_fn returns the next scheduled request, or NULL 945elevator_dispatch_fn fills the dispatch queue with ready requests.
932 if there are none (or none are ready). 946 I/O schedulers are free to postpone requests by
947 not filling the dispatch queue unless @force
948 is non-zero. Once dispatched, I/O schedulers
949 are not allowed to manipulate the requests -
950 they belong to generic dispatch queue.
933 951
934*elevator_add_req_fn called to add a new request into the scheduler 952elevator_add_req_fn called to add a new request into the scheduler
935 953
936elevator_queue_empty_fn returns true if the merge queue is empty. 954elevator_queue_empty_fn returns true if the merge queue is empty.
937 Drivers shouldn't use this, but rather check 955 Drivers shouldn't use this, but rather check
938 if elv_next_request is NULL (without losing the 956 if elv_next_request is NULL (without losing the
939 request if one exists!) 957 request if one exists!)
940 958
941elevator_remove_req_fn This is called when a driver claims ownership of
942 the target request - it now belongs to the
943 driver. It must not be modified or merged.
944 Drivers must not lose the request! A subsequent
945 call of elevator_next_req_fn must return the
946 _next_ request.
947
948elevator_requeue_req_fn called to add a request to the scheduler. This
949 is used when the request has alrnadebeen
950 returned by elv_next_request, but hasn't
951 completed. If this is not implemented then
952 elevator_add_req_fn is called instead.
953
954elevator_former_req_fn 959elevator_former_req_fn
955elevator_latter_req_fn These return the request before or after the 960elevator_latter_req_fn These return the request before or after the
956 one specified in disk sort order. Used by the 961 one specified in disk sort order. Used by the
957 block layer to find merge possibilities. 962 block layer to find merge possibilities.
958 963
959elevator_completed_req_fn called when a request is completed. This might 964elevator_completed_req_fn called when a request is completed.
960 come about due to being merged with another or
961 when the device completes the request.
962 965
963elevator_may_queue_fn returns true if the scheduler wants to allow the 966elevator_may_queue_fn returns true if the scheduler wants to allow the
964 current context to queue a new request even if 967 current context to queue a new request even if
@@ -967,13 +970,33 @@ elevator_may_queue_fn returns true if the scheduler wants to allow the
967 970
968elevator_set_req_fn 971elevator_set_req_fn
969elevator_put_req_fn Must be used to allocate and free any elevator 972elevator_put_req_fn Must be used to allocate and free any elevator
970 specific storate for a request. 973 specific storage for a request.
974
975elevator_activate_req_fn Called when device driver first sees a request.
976 I/O schedulers can use this callback to
977 determine when actual execution of a request
978 starts.
979elevator_deactivate_req_fn Called when device driver decides to delay
980 a request by requeueing it.
971 981
972elevator_init_fn 982elevator_init_fn
973elevator_exit_fn Allocate and free any elevator specific storage 983elevator_exit_fn Allocate and free any elevator specific storage
974 for a queue. 984 for a queue.
975 985
9764.2 I/O scheduler implementation 9864.2 Request flows seen by I/O schedulers
987All requests seens by I/O schedulers strictly follow one of the following three
988flows.
989
990 set_req_fn ->
991
992 i. add_req_fn -> (merged_fn ->)* -> dispatch_fn -> activate_req_fn ->
993 (deactivate_req_fn -> activate_req_fn ->)* -> completed_req_fn
994 ii. add_req_fn -> (merged_fn ->)* -> merge_req_fn
995 iii. [none]
996
997 -> put_req_fn
998
9994.3 I/O scheduler implementation
977The generic i/o scheduler algorithm attempts to sort/merge/batch requests for 1000The generic i/o scheduler algorithm attempts to sort/merge/batch requests for
978optimal disk scan and request servicing performance (based on generic 1001optimal disk scan and request servicing performance (based on generic
979principles and device capabilities), optimized for: 1002principles and device capabilities), optimized for:
@@ -993,18 +1016,7 @@ request in sort order to prevent binary tree lookups.
993This arrangement is not a generic block layer characteristic however, so 1016This arrangement is not a generic block layer characteristic however, so
994elevators may implement queues as they please. 1017elevators may implement queues as they please.
995 1018
996ii. Last merge hint 1019ii. Merge hash
997The last merge hint is part of the generic queue layer. I/O schedulers must do
998some management on it. For the most part, the most important thing is to make
999sure q->last_merge is cleared (set to NULL) when the request on it is no longer
1000a candidate for merging (for example if it has been sent to the driver).
1001
1002The last merge performed is cached as a hint for the subsequent request. If
1003sequential data is being submitted, the hint is used to perform merges without
1004any scanning. This is not sufficient when there are multiple processes doing
1005I/O though, so a "merge hash" is used by some schedulers.
1006
1007iii. Merge hash
1008AS and deadline use a hash table indexed by the last sector of a request. This 1020AS and deadline use a hash table indexed by the last sector of a request. This
1009enables merging code to quickly look up "back merge" candidates, even when 1021enables merging code to quickly look up "back merge" candidates, even when
1010multiple I/O streams are being performed at once on one disk. 1022multiple I/O streams are being performed at once on one disk.
@@ -1013,29 +1025,8 @@ multiple I/O streams are being performed at once on one disk.
1013are far less common than "back merges" due to the nature of most I/O patterns. 1025are far less common than "back merges" due to the nature of most I/O patterns.
1014Front merges are handled by the binary trees in AS and deadline schedulers. 1026Front merges are handled by the binary trees in AS and deadline schedulers.
1015 1027
1016iv. Handling barrier cases 1028iii. Plugging the queue to batch requests in anticipation of opportunities for
1017A request with flags REQ_HARDBARRIER or REQ_SOFTBARRIER must not be ordered 1029 merge/sort optimizations
1018around. That is, they must be processed after all older requests, and before
1019any newer ones. This includes merges!
1020
1021In AS and deadline schedulers, barriers have the effect of flushing the reorder
1022queue. The performance cost of this will vary from nothing to a lot depending
1023on i/o patterns and device characteristics. Obviously they won't improve
1024performance, so their use should be kept to a minimum.
1025
1026v. Handling insertion position directives
1027A request may be inserted with a position directive. The directives are one of
1028ELEVATOR_INSERT_BACK, ELEVATOR_INSERT_FRONT, ELEVATOR_INSERT_SORT.
1029
1030ELEVATOR_INSERT_SORT is a general directive for non-barrier requests.
1031ELEVATOR_INSERT_BACK is used to insert a barrier to the back of the queue.
1032ELEVATOR_INSERT_FRONT is used to insert a barrier to the front of the queue, and
1033overrides the ordering requested by any previous barriers. In practice this is
1034harmless and required, because it is used for SCSI requeueing. This does not
1035require flushing the reorder queue, so does not impose a performance penalty.
1036
1037vi. Plugging the queue to batch requests in anticipation of opportunities for
1038 merge/sort optimizations
1039 1030
1040This is just the same as in 2.4 so far, though per-device unplugging 1031This is just the same as in 2.4 so far, though per-device unplugging
1041support is anticipated for 2.5. Also with a priority-based i/o scheduler, 1032support is anticipated for 2.5. Also with a priority-based i/o scheduler,
@@ -1069,7 +1060,7 @@ Aside:
1069 blk_kick_queue() to unplug a specific queue (right away ?) 1060 blk_kick_queue() to unplug a specific queue (right away ?)
1070 or optionally, all queues, is in the plan. 1061 or optionally, all queues, is in the plan.
1071 1062
10724.3 I/O contexts 10634.4 I/O contexts
1073I/O contexts provide a dynamically allocated per process data area. They may 1064I/O contexts provide a dynamically allocated per process data area. They may
1074be used in I/O schedulers, and in the block layer (could be used for IO statis, 1065be used in I/O schedulers, and in the block layer (could be used for IO statis,
1075priorities for example). See *io_context in drivers/block/ll_rw_blk.c, and 1066priorities for example). See *io_context in drivers/block/ll_rw_blk.c, and
diff --git a/Documentation/connector/connector.txt b/Documentation/connector/connector.txt
index 54a0a14bfbe3..57a314b14cf8 100644
--- a/Documentation/connector/connector.txt
+++ b/Documentation/connector/connector.txt
@@ -131,3 +131,47 @@ Netlink itself is not reliable protocol, that means that messages can
131be lost due to memory pressure or process' receiving queue overflowed, 131be lost due to memory pressure or process' receiving queue overflowed,
132so caller is warned must be prepared. That is why struct cn_msg [main 132so caller is warned must be prepared. That is why struct cn_msg [main
133connector's message header] contains u32 seq and u32 ack fields. 133connector's message header] contains u32 seq and u32 ack fields.
134
135/*****************************************/
136Userspace usage.
137/*****************************************/
1382.6.14 has a new netlink socket implementation, which by default does not
139allow to send data to netlink groups other than 1.
140So, if to use netlink socket (for example using connector)
141with different group number userspace application must subscribe to
142that group. It can be achieved by following pseudocode:
143
144s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR);
145
146l_local.nl_family = AF_NETLINK;
147l_local.nl_groups = 12345;
148l_local.nl_pid = 0;
149
150if (bind(s, (struct sockaddr *)&l_local, sizeof(struct sockaddr_nl)) == -1) {
151 perror("bind");
152 close(s);
153 return -1;
154}
155
156{
157 int on = l_local.nl_groups;
158 setsockopt(s, 270, 1, &on, sizeof(on));
159}
160
161Where 270 above is SOL_NETLINK, and 1 is a NETLINK_ADD_MEMBERSHIP socket
162option. To drop multicast subscription one should call above socket option
163with NETLINK_DROP_MEMBERSHIP parameter which is defined as 0.
164
1652.6.14 netlink code only allows to select a group which is less or equal to
166the maximum group number, which is used at netlink_kernel_create() time.
167In case of connector it is CN_NETLINK_USERS + 0xf, so if you want to use
168group number 12345, you must increment CN_NETLINK_USERS to that number.
169Additional 0xf numbers are allocated to be used by non-in-kernel users.
170
171Due to this limitation, group 0xffffffff does not work now, so one can
172not use add/remove connector's group notifications, but as far as I know,
173only cn_test.c test module used it.
174
175Some work in netlink area is still being done, so things can be changed in
1762.6.15 timeframe, if it will happen, documentation will be updated for that
177kernel.
diff --git a/Documentation/dell_rbu.txt b/Documentation/dell_rbu.txt
index 95d7f62e4dbc..941343a7a265 100644
--- a/Documentation/dell_rbu.txt
+++ b/Documentation/dell_rbu.txt
@@ -35,6 +35,7 @@ The driver load creates the following directories under the /sys file system.
35/sys/class/firmware/dell_rbu/data 35/sys/class/firmware/dell_rbu/data
36/sys/devices/platform/dell_rbu/image_type 36/sys/devices/platform/dell_rbu/image_type
37/sys/devices/platform/dell_rbu/data 37/sys/devices/platform/dell_rbu/data
38/sys/devices/platform/dell_rbu/packet_size
38 39
39The driver supports two types of update mechanism; monolithic and packetized. 40The driver supports two types of update mechanism; monolithic and packetized.
40These update mechanism depends upon the BIOS currently running on the system. 41These update mechanism depends upon the BIOS currently running on the system.
@@ -47,8 +48,26 @@ By default the driver uses monolithic memory for the update type. This can be
47changed to packets during the driver load time by specifying the load 48changed to packets during the driver load time by specifying the load
48parameter image_type=packet. This can also be changed later as below 49parameter image_type=packet. This can also be changed later as below
49echo packet > /sys/devices/platform/dell_rbu/image_type 50echo packet > /sys/devices/platform/dell_rbu/image_type
50Also echoing either mono ,packet or init in to image_type will free up the 51
51memory allocated by the driver. 52In packet update mode the packet size has to be given before any packets can
53be downloaded. It is done as below
54echo XXXX > /sys/devices/platform/dell_rbu/packet_size
55In the packet update mechanism, the user neesd to create a new file having
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
58placs it next to the packetheader; now, the packetheader + BIOS image chunk
59added to geather should match the specified packet_size. This makes one
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
62file.
63This file is then copied to /sys/class/firmware/dell_rbu/data.
64Once this file gets to the driver, the driver extracts packet_size data from
65the file and spreads it accross the physical memory in contiguous packet_sized
66space.
67This method makes sure that all the packets get to the driver in a single operation.
68
69In monolithic update the user simply get the BIOS image (.hdr file) and copies
70to the data file as is without any change to the BIOS image itself.
52 71
53Do the steps below to download the BIOS image. 72Do the steps below to download the BIOS image.
541) echo 1 > /sys/class/firmware/dell_rbu/loading 731) echo 1 > /sys/class/firmware/dell_rbu/loading
@@ -58,7 +77,10 @@ Do the steps below to download the BIOS image.
58The /sys/class/firmware/dell_rbu/ entries will remain till the following is 77The /sys/class/firmware/dell_rbu/ entries will remain till the following is
59done. 78done.
60echo -1 > /sys/class/firmware/dell_rbu/loading. 79echo -1 > /sys/class/firmware/dell_rbu/loading.
61Until this step is completed the drivr cannot be unloaded. 80Until this step is completed the driver cannot be unloaded.
81Also echoing either mono ,packet or init in to image_type will free up the
82memory allocated by the driver.
83
62If an user by accident executes steps 1 and 3 above without executing step 2; 84If an user by accident executes steps 1 and 3 above without executing step 2;
63it will make the /sys/class/firmware/dell_rbu/ entries to disappear. 85it will make the /sys/class/firmware/dell_rbu/ entries to disappear.
64The entries can be recreated by doing the following 86The entries can be recreated by doing the following
@@ -66,15 +88,11 @@ echo init > /sys/devices/platform/dell_rbu/image_type
66NOTE: echoing init in image_type does not change it original value. 88NOTE: echoing init in image_type does not change it original value.
67 89
68Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to 90Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
69read back the image downloaded. This is useful in case of packet update 91read back the image downloaded.
70mechanism where the above steps 1,2,3 will repeated for every packet.
71By reading the /sys/devices/platform/dell_rbu/data file all packet data
72downloaded can be verified in a single file.
73The packets are arranged in this file one after the other in a FIFO order.
74 92
75NOTE: 93NOTE:
76This driver requires a patch for firmware_class.c which has the addition 94This driver requires a patch for firmware_class.c which has the modified
77of request_firmware_nowait_nohotplug function to wortk 95request_firmware_nowait function.
78Also after updating the BIOS image an user mdoe application neeeds to execute 96Also after updating the BIOS image an user mdoe application neeeds to execute
79code which message the BIOS update request to the BIOS. So on the next reboot 97code which message the BIOS update request to the BIOS. So on the next reboot
80the BIOS knows about the new image downloaded and it updates it self. 98the BIOS knows about the new image downloaded and it updates it self.
diff --git a/Documentation/device-mapper/snapshot.txt b/Documentation/device-mapper/snapshot.txt
new file mode 100644
index 000000000000..dca274ff4005
--- /dev/null
+++ b/Documentation/device-mapper/snapshot.txt
@@ -0,0 +1,73 @@
1Device-mapper snapshot support
2==============================
3
4Device-mapper allows you, without massive data copying:
5
6*) To create snapshots of any block device i.e. mountable, saved states of
7the block device which are also writable without interfering with the
8original content;
9*) To create device "forks", i.e. multiple different versions of the
10same data stream.
11
12
13In both cases, dm copies only the chunks of data that get changed and
14uses a separate copy-on-write (COW) block device for storage.
15
16
17There are two dm targets available: snapshot and snapshot-origin.
18
19*) snapshot-origin <origin>
20
21which will normally have one or more snapshots based on it.
22You must create the snapshot-origin device before you can create snapshots.
23Reads will be mapped directly to the backing device. For each write, the
24original data will be saved in the <COW device> of each snapshot to keep
25its visible content unchanged, at least until the <COW device> fills up.
26
27
28*) snapshot <origin> <COW device> <persistent?> <chunksize>
29
30A snapshot is created of the <origin> block device. Changed chunks of
31<chunksize> sectors will be stored on the <COW device>. Writes will
32only go to the <COW device>. Reads will come from the <COW device> or
33from <origin> for unchanged data. <COW device> will often be
34smaller than the origin and if it fills up the snapshot will become
35useless and be disabled, returning errors. So it is important to monitor
36the amount of free space and expand the <COW device> before it fills up.
37
38<persistent?> is P (Persistent) or N (Not persistent - will not survive
39after reboot).
40
41
42How this is used by LVM2
43========================
44When you create the first LVM2 snapshot of a volume, four dm devices are used:
45
461) a device containing the original mapping table of the source volume;
472) a device used as the <COW device>;
483) a "snapshot" device, combining #1 and #2, which is the visible snapshot
49 volume;
504) the "original" volume (which uses the device number used by the original
51 source volume), whose table is replaced by a "snapshot-origin" mapping
52 from device #1.
53
54A fixed naming scheme is used, so with the following commands:
55
56lvcreate -L 1G -n base volumeGroup
57lvcreate -L 100M --snapshot -n snap volumeGroup/base
58
59we'll have this situation (with volumes in above order):
60
61# dmsetup table|grep volumeGroup
62
63volumeGroup-base-real: 0 2097152 linear 8:19 384
64volumeGroup-snap-cow: 0 204800 linear 8:19 2097536
65volumeGroup-snap: 0 2097152 snapshot 254:11 254:12 P 16
66volumeGroup-base: 0 2097152 snapshot-origin 254:11
67
68# ls -lL /dev/mapper/volumeGroup-*
69brw------- 1 root root 254, 11 29 ago 18:15 /dev/mapper/volumeGroup-base-real
70brw------- 1 root root 254, 12 29 ago 18:15 /dev/mapper/volumeGroup-snap-cow
71brw------- 1 root root 254, 13 29 ago 18:15 /dev/mapper/volumeGroup-snap
72brw------- 1 root root 254, 10 29 ago 18:14 /dev/mapper/volumeGroup-base
73
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 7086f0a90d14..971589a9752d 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -17,7 +17,7 @@ are specified on the kernel command line with the module name plus
17 17
18 usbcore.blinkenlights=1 18 usbcore.blinkenlights=1
19 19
20The text in square brackets at the beginning of the description state the 20The text in square brackets at the beginning of the description states the
21restrictions on the kernel for the said kernel parameter to be valid. The 21restrictions on the kernel for the said kernel parameter to be valid. The
22restrictions referred to are that the relevant option is valid if: 22restrictions referred to are that the relevant option is valid if:
23 23
@@ -27,8 +27,8 @@ restrictions referred to are that the relevant option is valid if:
27 APM Advanced Power Management support is enabled. 27 APM Advanced Power Management support is enabled.
28 AX25 Appropriate AX.25 support is enabled. 28 AX25 Appropriate AX.25 support is enabled.
29 CD Appropriate CD support is enabled. 29 CD Appropriate CD support is enabled.
30 DEVFS devfs support is enabled. 30 DEVFS devfs support is enabled.
31 DRM Direct Rendering Management support is enabled. 31 DRM Direct Rendering Management support is enabled.
32 EDD BIOS Enhanced Disk Drive Services (EDD) is enabled 32 EDD BIOS Enhanced Disk Drive Services (EDD) is enabled
33 EFI EFI Partitioning (GPT) is enabled 33 EFI EFI Partitioning (GPT) is enabled
34 EIDE EIDE/ATAPI support is enabled. 34 EIDE EIDE/ATAPI support is enabled.
@@ -71,7 +71,7 @@ restrictions referred to are that the relevant option is valid if:
71 SERIAL Serial support is enabled. 71 SERIAL Serial support is enabled.
72 SMP The kernel is an SMP kernel. 72 SMP The kernel is an SMP kernel.
73 SPARC Sparc architecture is enabled. 73 SPARC Sparc architecture is enabled.
74 SWSUSP Software suspension is enabled. 74 SWSUSP Software suspend is enabled.
75 TS Appropriate touchscreen support is enabled. 75 TS Appropriate touchscreen support is enabled.
76 USB USB support is enabled. 76 USB USB support is enabled.
77 USBHID USB Human Interface Device support is enabled. 77 USBHID USB Human Interface Device support is enabled.
@@ -105,13 +105,13 @@ running once the system is up.
105 See header of drivers/scsi/53c7xx.c. 105 See header of drivers/scsi/53c7xx.c.
106 See also Documentation/scsi/ncr53c7xx.txt. 106 See also Documentation/scsi/ncr53c7xx.txt.
107 107
108 acpi= [HW,ACPI] Advanced Configuration and Power Interface 108 acpi= [HW,ACPI] Advanced Configuration and Power Interface
109 Format: { force | off | ht | strict } 109 Format: { force | off | ht | strict | noirq }
110 force -- enable ACPI if default was off 110 force -- enable ACPI if default was off
111 off -- disable ACPI if default was on 111 off -- disable ACPI if default was on
112 noirq -- do not use ACPI for IRQ routing 112 noirq -- do not use ACPI for IRQ routing
113 ht -- run only enough ACPI to enable Hyper Threading 113 ht -- run only enough ACPI to enable Hyper Threading
114 strict -- Be less tolerant of platforms that are not 114 strict -- Be less tolerant of platforms that are not
115 strictly ACPI specification compliant. 115 strictly ACPI specification compliant.
116 116
117 See also Documentation/pm.txt, pci=noacpi 117 See also Documentation/pm.txt, pci=noacpi
@@ -119,20 +119,23 @@ running once the system is up.
119 acpi_sleep= [HW,ACPI] Sleep options 119 acpi_sleep= [HW,ACPI] Sleep options
120 Format: { s3_bios, s3_mode } 120 Format: { s3_bios, s3_mode }
121 See Documentation/power/video.txt 121 See Documentation/power/video.txt
122 122
123 acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode 123 acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
124 Format: { level | edge | high | low } 124 Format: { level | edge | high | low }
125 125
126 acpi_irq_balance [HW,ACPI] ACPI will balance active IRQs 126 acpi_irq_balance [HW,ACPI]
127 default in APIC mode 127 ACPI will balance active IRQs
128 default in APIC mode
128 129
129 acpi_irq_nobalance [HW,ACPI] ACPI will not move active IRQs (default) 130 acpi_irq_nobalance [HW,ACPI]
130 default in PIC mode 131 ACPI will not move active IRQs (default)
132 default in PIC mode
131 133
132 acpi_irq_pci= [HW,ACPI] If irq_balance, Clear listed IRQs for use by PCI 134 acpi_irq_pci= [HW,ACPI] If irq_balance, clear listed IRQs for
135 use by PCI
133 Format: <irq>,<irq>... 136 Format: <irq>,<irq>...
134 137
135 acpi_irq_isa= [HW,ACPI] If irq_balance, Mark listed IRQs used by ISA 138 acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA
136 Format: <irq>,<irq>... 139 Format: <irq>,<irq>...
137 140
138 acpi_osi= [HW,ACPI] empty param disables _OSI 141 acpi_osi= [HW,ACPI] empty param disables _OSI
@@ -145,14 +148,14 @@ running once the system is up.
145 148
146 acpi_dbg_layer= [HW,ACPI] 149 acpi_dbg_layer= [HW,ACPI]
147 Format: <int> 150 Format: <int>
148 Each bit of the <int> indicates an acpi debug layer, 151 Each bit of the <int> indicates an ACPI debug layer,
149 1: enable, 0: disable. It is useful for boot time 152 1: enable, 0: disable. It is useful for boot time
150 debugging. After system has booted up, it can be set 153 debugging. After system has booted up, it can be set
151 via /proc/acpi/debug_layer. 154 via /proc/acpi/debug_layer.
152 155
153 acpi_dbg_level= [HW,ACPI] 156 acpi_dbg_level= [HW,ACPI]
154 Format: <int> 157 Format: <int>
155 Each bit of the <int> indicates an acpi debug level, 158 Each bit of the <int> indicates an ACPI debug level,
156 1: enable, 0: disable. It is useful for boot time 159 1: enable, 0: disable. It is useful for boot time
157 debugging. After system has booted up, it can be set 160 debugging. After system has booted up, it can be set
158 via /proc/acpi/debug_level. 161 via /proc/acpi/debug_level.
@@ -161,12 +164,13 @@ running once the system is up.
161 164
162 acpi_generic_hotkey [HW,ACPI] 165 acpi_generic_hotkey [HW,ACPI]
163 Allow consolidated generic hotkey driver to 166 Allow consolidated generic hotkey driver to
164 over-ride platform specific driver. 167 override platform specific driver.
165 See also Documentation/acpi-hotkey.txt. 168 See also Documentation/acpi-hotkey.txt.
166 169
167 enable_timer_pin_1 [i386,x86-64] 170 enable_timer_pin_1 [i386,x86-64]
168 Enable PIN 1 of APIC timer 171 Enable PIN 1 of APIC timer
169 Can be useful to work around chipset bugs (in particular on some ATI chipsets) 172 Can be useful to work around chipset bugs
173 (in particular on some ATI chipsets).
170 The kernel tries to set a reasonable default. 174 The kernel tries to set a reasonable default.
171 175
172 disable_timer_pin_1 [i386,x86-64] 176 disable_timer_pin_1 [i386,x86-64]
@@ -182,7 +186,7 @@ running once the system is up.
182 186
183 adlib= [HW,OSS] 187 adlib= [HW,OSS]
184 Format: <io> 188 Format: <io>
185 189
186 advansys= [HW,SCSI] 190 advansys= [HW,SCSI]
187 See header of drivers/scsi/advansys.c. 191 See header of drivers/scsi/advansys.c.
188 192
@@ -192,7 +196,7 @@ running once the system is up.
192 aedsp16= [HW,OSS] Audio Excel DSP 16 196 aedsp16= [HW,OSS] Audio Excel DSP 16
193 Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq> 197 Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq>
194 See also header of sound/oss/aedsp16.c. 198 See also header of sound/oss/aedsp16.c.
195 199
196 aha152x= [HW,SCSI] 200 aha152x= [HW,SCSI]
197 See Documentation/scsi/aha152x.txt. 201 See Documentation/scsi/aha152x.txt.
198 202
@@ -205,10 +209,6 @@ running once the system is up.
205 aic79xx= [HW,SCSI] 209 aic79xx= [HW,SCSI]
206 See Documentation/scsi/aic79xx.txt. 210 See Documentation/scsi/aic79xx.txt.
207 211
208 AM53C974= [HW,SCSI]
209 Format: <host-scsi-id>,<target-scsi-id>,<max-rate>,<max-offset>
210 See also header of drivers/scsi/AM53C974.c.
211
212 amijoy.map= [HW,JOY] Amiga joystick support 212 amijoy.map= [HW,JOY] Amiga joystick support
213 Map of devices attached to JOY0DAT and JOY1DAT 213 Map of devices attached to JOY0DAT and JOY1DAT
214 Format: <a>,<b> 214 Format: <a>,<b>
@@ -219,23 +219,24 @@ running once the system is up.
219 connected to one of 16 gameports 219 connected to one of 16 gameports
220 Format: <type1>,<type2>,..<type16> 220 Format: <type1>,<type2>,..<type16>
221 221
222 apc= [HW,SPARC] Power management functions (SPARCstation-4/5 + deriv.) 222 apc= [HW,SPARC]
223 Power management functions (SPARCstation-4/5 + deriv.)
223 Format: noidle 224 Format: noidle
224 Disable APC CPU standby support. SPARCstation-Fox does 225 Disable APC CPU standby support. SPARCstation-Fox does
225 not play well with APC CPU idle - disable it if you have 226 not play well with APC CPU idle - disable it if you have
226 APC and your system crashes randomly. 227 APC and your system crashes randomly.
227 228
228 apic= [APIC,i386] Change the output verbosity whilst booting 229 apic= [APIC,i386] Change the output verbosity whilst booting
229 Format: { quiet (default) | verbose | debug } 230 Format: { quiet (default) | verbose | debug }
230 Change the amount of debugging information output 231 Change the amount of debugging information output
231 when initialising the APIC and IO-APIC components. 232 when initialising the APIC and IO-APIC components.
232 233
233 apm= [APM] Advanced Power Management 234 apm= [APM] Advanced Power Management
234 See header of arch/i386/kernel/apm.c. 235 See header of arch/i386/kernel/apm.c.
235 236
236 applicom= [HW] 237 applicom= [HW]
237 Format: <mem>,<irq> 238 Format: <mem>,<irq>
238 239
239 arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards 240 arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards
240 Format: <io>,<irq>,<nodeID> 241 Format: <io>,<irq>,<nodeID>
241 242
@@ -250,38 +251,40 @@ running once the system is up.
250 251
251 atkbd.reset= [HW] Reset keyboard during initialization 252 atkbd.reset= [HW] Reset keyboard during initialization
252 253
253 atkbd.set= [HW] Select keyboard code set 254 atkbd.set= [HW] Select keyboard code set
254 Format: <int> (2 = AT (default) 3 = PS/2) 255 Format: <int> (2 = AT (default), 3 = PS/2)
255 256
256 atkbd.scroll= [HW] Enable scroll wheel on MS Office and similar 257 atkbd.scroll= [HW] Enable scroll wheel on MS Office and similar
257 keyboards 258 keyboards
258 259
259 atkbd.softraw= [HW] Choose between synthetic and real raw mode 260 atkbd.softraw= [HW] Choose between synthetic and real raw mode
260 Format: <bool> (0 = real, 1 = synthetic (default)) 261 Format: <bool> (0 = real, 1 = synthetic (default))
261 262
262 atkbd.softrepeat= 263 atkbd.softrepeat= [HW]
263 [HW] Use software keyboard repeat 264 Use software keyboard repeat
264 265
265 autotest [IA64] 266 autotest [IA64]
266 267
267 awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth 268 awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth
268 Format: <io>,<memsize>,<isapnp> 269 Format: <io>,<memsize>,<isapnp>
269 270
270 aztcd= [HW,CD] Aztech CD268 CDROM driver 271 aztcd= [HW,CD] Aztech CD268 CDROM driver
271 Format: <io>,0x79 (?) 272 Format: <io>,0x79 (?)
272 273
273 baycom_epp= [HW,AX25] 274 baycom_epp= [HW,AX25]
274 Format: <io>,<mode> 275 Format: <io>,<mode>
275 276
276 baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem 277 baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem
277 Format: <io>,<mode> 278 Format: <io>,<mode>
278 See header of drivers/net/hamradio/baycom_par.c. 279 See header of drivers/net/hamradio/baycom_par.c.
279 280
280 baycom_ser_fdx= [HW,AX25] BayCom Serial Port AX.25 Modem (Full Duplex Mode) 281 baycom_ser_fdx= [HW,AX25]
282 BayCom Serial Port AX.25 Modem (Full Duplex Mode)
281 Format: <io>,<irq>,<mode>[,<baud>] 283 Format: <io>,<irq>,<mode>[,<baud>]
282 See header of drivers/net/hamradio/baycom_ser_fdx.c. 284 See header of drivers/net/hamradio/baycom_ser_fdx.c.
283 285
284 baycom_ser_hdx= [HW,AX25] BayCom Serial Port AX.25 Modem (Half Duplex Mode) 286 baycom_ser_hdx= [HW,AX25]
287 BayCom Serial Port AX.25 Modem (Half Duplex Mode)
285 Format: <io>,<irq>,<mode> 288 Format: <io>,<irq>,<mode>
286 See header of drivers/net/hamradio/baycom_ser_hdx.c. 289 See header of drivers/net/hamradio/baycom_ser_hdx.c.
287 290
@@ -292,7 +295,8 @@ running once the system is up.
292 blkmtd_count= 295 blkmtd_count=
293 296
294 bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) 297 bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards)
295 bttv.radio= Most important insmod options are available as kernel args too. 298 bttv.radio= Most important insmod options are available as
299 kernel args too.
296 bttv.pll= See Documentation/video4linux/bttv/Insmod-options 300 bttv.pll= See Documentation/video4linux/bttv/Insmod-options
297 bttv.tuner= and Documentation/video4linux/bttv/CARDLIST 301 bttv.tuner= and Documentation/video4linux/bttv/CARDLIST
298 302
@@ -318,15 +322,17 @@ running once the system is up.
318 checkreqprot [SELINUX] Set initial checkreqprot flag value. 322 checkreqprot [SELINUX] Set initial checkreqprot flag value.
319 Format: { "0" | "1" } 323 Format: { "0" | "1" }
320 See security/selinux/Kconfig help text. 324 See security/selinux/Kconfig help text.
321 0 -- check protection applied by kernel (includes any implied execute protection). 325 0 -- check protection applied by kernel (includes
326 any implied execute protection).
322 1 -- check protection requested by application. 327 1 -- check protection requested by application.
323 Default value is set via a kernel config option. 328 Default value is set via a kernel config option.
324 Value can be changed at runtime via /selinux/checkreqprot. 329 Value can be changed at runtime via
325 330 /selinux/checkreqprot.
326 clock= [BUGS=IA-32, HW] gettimeofday timesource override. 331
332 clock= [BUGS=IA-32,HW] gettimeofday timesource override.
327 Forces specified timesource (if avaliable) to be used 333 Forces specified timesource (if avaliable) to be used
328 when calculating gettimeofday(). If specicified timesource 334 when calculating gettimeofday(). If specicified
329 is not avalible, it defaults to PIT. 335 timesource is not avalible, it defaults to PIT.
330 Format: { pit | tsc | cyclone | pmtmr } 336 Format: { pit | tsc | cyclone | pmtmr }
331 337
332 hpet= [IA-32,HPET] option to disable HPET and use PIT. 338 hpet= [IA-32,HPET] option to disable HPET and use PIT.
@@ -336,17 +342,19 @@ running once the system is up.
336 Format: { auto | [<io>,][<irq>] } 342 Format: { auto | [<io>,][<irq>] }
337 343
338 com20020= [HW,NET] ARCnet - COM20020 chipset 344 com20020= [HW,NET] ARCnet - COM20020 chipset
339 Format: <io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]] 345 Format:
346 <io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]]
340 347
341 com90io= [HW,NET] ARCnet - COM90xx chipset (IO-mapped buffers) 348 com90io= [HW,NET] ARCnet - COM90xx chipset (IO-mapped buffers)
342 Format: <io>[,<irq>] 349 Format: <io>[,<irq>]
343 350
344 com90xx= [HW,NET] ARCnet - COM90xx chipset (memory-mapped buffers) 351 com90xx= [HW,NET]
352 ARCnet - COM90xx chipset (memory-mapped buffers)
345 Format: <io>[,<irq>[,<memstart>]] 353 Format: <io>[,<irq>[,<memstart>]]
346 354
347 condev= [HW,S390] console device 355 condev= [HW,S390] console device
348 conmode= 356 conmode=
349 357
350 console= [KNL] Output console device and options. 358 console= [KNL] Output console device and options.
351 359
352 tty<n> Use the virtual console device <n>. 360 tty<n> Use the virtual console device <n>.
@@ -367,7 +375,8 @@ running once the system is up.
367 options are the same as for ttyS, above. 375 options are the same as for ttyS, above.
368 376
369 cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver 377 cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver
370 Format: <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] 378 Format:
379 <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
371 380
372 cpia_pp= [HW,PPT] 381 cpia_pp= [HW,PPT]
373 Format: { parport<nr> | auto | none } 382 Format: { parport<nr> | auto | none }
@@ -384,10 +393,10 @@ running once the system is up.
384 393
385 cs89x0_media= [HW,NET] 394 cs89x0_media= [HW,NET]
386 Format: { rj45 | aui | bnc } 395 Format: { rj45 | aui | bnc }
387 396
388 cyclades= [HW,SERIAL] Cyclades multi-serial port adapter. 397 cyclades= [HW,SERIAL] Cyclades multi-serial port adapter.
389 398
390 dasd= [HW,NET] 399 dasd= [HW,NET]
391 See header of drivers/s390/block/dasd_devmap.c. 400 See header of drivers/s390/block/dasd_devmap.c.
392 401
393 db9.dev[2|3]= [HW,JOY] Multisystem joystick support via parallel port 402 db9.dev[2|3]= [HW,JOY] Multisystem joystick support via parallel port
@@ -406,7 +415,7 @@ running once the system is up.
406 415
407 dhash_entries= [KNL] 416 dhash_entries= [KNL]
408 Set number of hash buckets for dentry cache. 417 Set number of hash buckets for dentry cache.
409 418
410 digi= [HW,SERIAL] 419 digi= [HW,SERIAL]
411 IO parameters + enable/disable command. 420 IO parameters + enable/disable command.
412 421
@@ -424,11 +433,11 @@ running once the system is up.
424 433
425 dtc3181e= [HW,SCSI] 434 dtc3181e= [HW,SCSI]
426 435
427 earlyprintk= [IA-32, X86-64] 436 earlyprintk= [IA-32,X86-64]
428 earlyprintk=vga 437 earlyprintk=vga
429 earlyprintk=serial[,ttySn[,baudrate]] 438 earlyprintk=serial[,ttySn[,baudrate]]
430 439
431 Append ,keep to not disable it when the real console 440 Append ",keep" to not disable it when the real console
432 takes over. 441 takes over.
433 442
434 Only vga or serial at a time, not both. 443 Only vga or serial at a time, not both.
@@ -451,7 +460,7 @@ running once the system is up.
451 Format: {"of[f]" | "sk[ipmbr]"} 460 Format: {"of[f]" | "sk[ipmbr]"}
452 See comment in arch/i386/boot/edd.S 461 See comment in arch/i386/boot/edd.S
453 462
454 eicon= [HW,ISDN] 463 eicon= [HW,ISDN]
455 Format: <id>,<membase>,<irq> 464 Format: <id>,<membase>,<irq>
456 465
457 eisa_irq_edge= [PARISC,HW] 466 eisa_irq_edge= [PARISC,HW]
@@ -462,12 +471,13 @@ running once the system is up.
462 arch/i386/kernel/cpu/cpufreq/elanfreq.c. 471 arch/i386/kernel/cpu/cpufreq/elanfreq.c.
463 472
464 elevator= [IOSCHED] 473 elevator= [IOSCHED]
465 Format: {"as"|"cfq"|"deadline"|"noop"} 474 Format: {"as" | "cfq" | "deadline" | "noop"}
466 See Documentation/block/as-iosched.txt 475 See Documentation/block/as-iosched.txt and
467 and Documentation/block/deadline-iosched.txt for details. 476 Documentation/block/deadline-iosched.txt for details.
477
468 elfcorehdr= [IA-32] 478 elfcorehdr= [IA-32]
469 Specifies physical address of start of kernel core image 479 Specifies physical address of start of kernel core
470 elf header. 480 image elf header.
471 See Documentation/kdump.txt for details. 481 See Documentation/kdump.txt for details.
472 482
473 enforcing [SELINUX] Set initial enforcing status. 483 enforcing [SELINUX] Set initial enforcing status.
@@ -485,7 +495,7 @@ running once the system is up.
485 es1371= [HW,OSS] 495 es1371= [HW,OSS]
486 Format: <spdif>,[<nomix>,[<amplifier>]] 496 Format: <spdif>,[<nomix>,[<amplifier>]]
487 See also header of sound/oss/es1371.c. 497 See also header of sound/oss/es1371.c.
488 498
489 ether= [HW,NET] Ethernet cards parameters 499 ether= [HW,NET] Ethernet cards parameters
490 This option is obsoleted by the "netdev=" option, which 500 This option is obsoleted by the "netdev=" option, which
491 has equivalent usage. See its documentation for details. 501 has equivalent usage. See its documentation for details.
@@ -526,12 +536,13 @@ running once the system is up.
526 536
527 gus= [HW,OSS] 537 gus= [HW,OSS]
528 Format: <io>,<irq>,<dma>,<dma16> 538 Format: <io>,<irq>,<dma>,<dma16>
529 539
530 gvp11= [HW,SCSI] 540 gvp11= [HW,SCSI]
531 541
532 hashdist= [KNL,NUMA] Large hashes allocated during boot 542 hashdist= [KNL,NUMA] Large hashes allocated during boot
533 are distributed across NUMA nodes. Defaults on 543 are distributed across NUMA nodes. Defaults on
534 for IA-64, off otherwise. 544 for IA-64, off otherwise.
545 Format: 0 | 1 (for off | on)
535 546
536 hcl= [IA-64] SGI's Hardware Graph compatibility layer 547 hcl= [IA-64] SGI's Hardware Graph compatibility layer
537 548
@@ -595,13 +606,13 @@ running once the system is up.
595 ide?= [HW] (E)IDE subsystem 606 ide?= [HW] (E)IDE subsystem
596 Format: ide?=noprobe or chipset specific parameters. 607 Format: ide?=noprobe or chipset specific parameters.
597 See Documentation/ide.txt. 608 See Documentation/ide.txt.
598 609
599 idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed 610 idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed
600 See Documentation/ide.txt. 611 See Documentation/ide.txt.
601 612
602 idle= [HW] 613 idle= [HW]
603 Format: idle=poll or idle=halt 614 Format: idle=poll or idle=halt
604 615
605 ihash_entries= [KNL] 616 ihash_entries= [KNL]
606 Set number of hash buckets for inode cache. 617 Set number of hash buckets for inode cache.
607 618
@@ -649,7 +660,7 @@ running once the system is up.
649 firmware running. 660 firmware running.
650 661
651 isapnp= [ISAPNP] 662 isapnp= [ISAPNP]
652 Format: <RDP>, <reset>, <pci_scan>, <verbosity> 663 Format: <RDP>,<reset>,<pci_scan>,<verbosity>
653 664
654 isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler. 665 isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler.
655 Format: <cpu number>,...,<cpu number> 666 Format: <cpu number>,...,<cpu number>
@@ -661,32 +672,33 @@ running once the system is up.
661 "number of CPUs in system - 1". 672 "number of CPUs in system - 1".
662 673
663 This option is the preferred way to isolate CPUs. The 674 This option is the preferred way to isolate CPUs. The
664 alternative - manually setting the CPU mask of all tasks 675 alternative -- manually setting the CPU mask of all
665 in the system can cause problems and suboptimal load 676 tasks in the system -- can cause problems and
666 balancer performance. 677 suboptimal load balancer performance.
667 678
668 isp16= [HW,CD] 679 isp16= [HW,CD]
669 Format: <io>,<irq>,<dma>,<setup> 680 Format: <io>,<irq>,<dma>,<setup>
670 681
671 iucv= [HW,NET] 682 iucv= [HW,NET]
672 683
673 js= [HW,JOY] Analog joystick 684 js= [HW,JOY] Analog joystick
674 See Documentation/input/joystick.txt. 685 See Documentation/input/joystick.txt.
675 686
676 keepinitrd [HW,ARM] 687 keepinitrd [HW,ARM]
677 688
678 kstack=N [IA-32, X86-64] Print N words from the kernel stack 689 kstack=N [IA-32,X86-64] Print N words from the kernel stack
679 in oops dumps. 690 in oops dumps.
680 691
681 l2cr= [PPC] 692 l2cr= [PPC]
682 693
683 lapic [IA-32,APIC] Enable the local APIC even if BIOS disabled it. 694 lapic [IA-32,APIC] Enable the local APIC even if BIOS
695 disabled it.
684 696
685 lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip 697 lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip
686 Format: addr:<io>,irq:<irq> 698 Format: addr:<io>,irq:<irq>
687 699
688 llsc*= [IA64] 700 llsc*= [IA64] See function print_params() in
689 See function print_params() in arch/ia64/sn/kernel/llsc4.c. 701 arch/ia64/sn/kernel/llsc4.c.
690 702
691 load_ramdisk= [RAM] List of ramdisks to load from floppy 703 load_ramdisk= [RAM] List of ramdisks to load from floppy
692 See Documentation/ramdisk.txt. 704 See Documentation/ramdisk.txt.
@@ -713,8 +725,9 @@ running once the system is up.
713 7 (KERN_DEBUG) debug-level messages 725 7 (KERN_DEBUG) debug-level messages
714 726
715 log_buf_len=n Sets the size of the printk ring buffer, in bytes. 727 log_buf_len=n Sets the size of the printk ring buffer, in bytes.
716 Format is n, nk, nM. n must be a power of two. The 728 Format: { n | nk | nM }
717 default is set in kernel config. 729 n must be a power of two. The default size
730 is set in the kernel config file.
718 731
719 lp=0 [LP] Specify parallel ports to use, e.g, 732 lp=0 [LP] Specify parallel ports to use, e.g,
720 lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses 733 lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses
@@ -750,23 +763,23 @@ running once the system is up.
750 ltpc= [NET] 763 ltpc= [NET]
751 Format: <io>,<irq>,<dma> 764 Format: <io>,<irq>,<dma>
752 765
753 mac5380= [HW,SCSI] 766 mac5380= [HW,SCSI] Format:
754 Format: <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> 767 <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
755 768
756 mac53c9x= [HW,SCSI] 769 mac53c9x= [HW,SCSI] Format:
757 Format: <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> 770 <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags>
758 771
759 machvec= [IA64] 772 machvec= [IA64] Force the use of a particular machine-vector
760 Force the use of a particular machine-vector (machvec) in a generic 773 (machvec) in a generic kernel.
761 kernel. Example: machvec=hpzx1_swiotlb 774 Example: machvec=hpzx1_swiotlb
762 775
763 mad16= [HW,OSS] 776 mad16= [HW,OSS] Format:
764 Format: <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick> 777 <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick>
765 778
766 maui= [HW,OSS] 779 maui= [HW,OSS]
767 Format: <io>,<irq> 780 Format: <io>,<irq>
768 781
769 max_loop= [LOOP] Maximum number of loopback devices that can 782 max_loop= [LOOP] Maximum number of loopback devices that can
770 be mounted 783 be mounted
771 Format: <1-256> 784 Format: <1-256>
772 785
@@ -776,11 +789,11 @@ running once the system is up.
776 max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or 789 max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
777 equal to this physical address is ignored. 790 equal to this physical address is ignored.
778 791
779 max_luns= [SCSI] Maximum number of LUNs to probe 792 max_luns= [SCSI] Maximum number of LUNs to probe.
780 Should be between 1 and 2^32-1. 793 Should be between 1 and 2^32-1.
781 794
782 max_report_luns= 795 max_report_luns=
783 [SCSI] Maximum number of LUNs received 796 [SCSI] Maximum number of LUNs received.
784 Should be between 1 and 16384. 797 Should be between 1 and 16384.
785 798
786 mca-pentium [BUGS=IA-32] 799 mca-pentium [BUGS=IA-32]
@@ -796,11 +809,11 @@ running once the system is up.
796 809
797 md= [HW] RAID subsystems devices and level 810 md= [HW] RAID subsystems devices and level
798 See Documentation/md.txt. 811 See Documentation/md.txt.
799 812
800 mdacon= [MDA] 813 mdacon= [MDA]
801 Format: <first>,<last> 814 Format: <first>,<last>
802 Specifies range of consoles to be captured by the MDA. 815 Specifies range of consoles to be captured by the MDA.
803 816
804 mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory 817 mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
805 Amount of memory to be used when the kernel is not able 818 Amount of memory to be used when the kernel is not able
806 to see the whole system memory or for test. 819 to see the whole system memory or for test.
@@ -851,15 +864,15 @@ running once the system is up.
851 MTD_Partition= [MTD] 864 MTD_Partition= [MTD]
852 Format: <name>,<region-number>,<size>,<offset> 865 Format: <name>,<region-number>,<size>,<offset>
853 866
854 MTD_Region= [MTD] 867 MTD_Region= [MTD] Format:
855 Format: <name>,<region-number>[,<base>,<size>,<buswidth>,<altbuswidth>] 868 <name>,<region-number>[,<base>,<size>,<buswidth>,<altbuswidth>]
856 869
857 mtdparts= [MTD] 870 mtdparts= [MTD]
858 See drivers/mtd/cmdline.c. 871 See drivers/mtd/cmdline.c.
859 872
860 mtouchusb.raw_coordinates= 873 mtouchusb.raw_coordinates=
861 [HW] Make the MicroTouch USB driver use raw coordinates ('y', default) 874 [HW] Make the MicroTouch USB driver use raw coordinates
862 or cooked coordinates ('n') 875 ('y', default) or cooked coordinates ('n')
863 876
864 n2= [NET] SDL Inc. RISCom/N2 synchronous serial card 877 n2= [NET] SDL Inc. RISCom/N2 synchronous serial card
865 878
@@ -880,7 +893,9 @@ running once the system is up.
880 Format: <irq>,<io>,<mem_start>,<mem_end>,<name> 893 Format: <irq>,<io>,<mem_start>,<mem_end>,<name>
881 Note that mem_start is often overloaded to mean 894 Note that mem_start is often overloaded to mean
882 something different and driver-specific. 895 something different and driver-specific.
883 896 This usage is only documented in each driver source
897 file if at all.
898
884 nfsaddrs= [NFS] 899 nfsaddrs= [NFS]
885 See Documentation/nfsroot.txt. 900 See Documentation/nfsroot.txt.
886 901
@@ -893,8 +908,8 @@ running once the system is up.
893 emulation library even if a 387 maths coprocessor 908 emulation library even if a 387 maths coprocessor
894 is present. 909 is present.
895 910
896 noalign [KNL,ARM] 911 noalign [KNL,ARM]
897 912
898 noapic [SMP,APIC] Tells the kernel to not make use of any 913 noapic [SMP,APIC] Tells the kernel to not make use of any
899 IOAPICs that may be present in the system. 914 IOAPICs that may be present in the system.
900 915
@@ -905,19 +920,19 @@ running once the system is up.
905 on "Classic" PPC cores. 920 on "Classic" PPC cores.
906 921
907 nocache [ARM] 922 nocache [ARM]
908 923
909 nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. 924 nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects.
910 925
911 noexec [IA-64] 926 noexec [IA-64]
912 927
913 noexec [IA-32, X86-64] 928 noexec [IA-32,X86-64]
914 noexec=on: enable non-executable mappings (default) 929 noexec=on: enable non-executable mappings (default)
915 noexec=off: disable nn-executable mappings 930 noexec=off: disable nn-executable mappings
916 931
917 nofxsr [BUGS=IA-32] 932 nofxsr [BUGS=IA-32]
918 933
919 nohlt [BUGS=ARM] 934 nohlt [BUGS=ARM]
920 935
921 no-hlt [BUGS=IA-32] Tells the kernel that the hlt 936 no-hlt [BUGS=IA-32] Tells the kernel that the hlt
922 instruction doesn't work correctly and not to 937 instruction doesn't work correctly and not to
923 use it. 938 use it.
@@ -948,8 +963,9 @@ running once the system is up.
948 963
949 noresidual [PPC] Don't use residual data on PReP machines. 964 noresidual [PPC] Don't use residual data on PReP machines.
950 965
951 noresume [SWSUSP] Disables resume and restore original swap space. 966 noresume [SWSUSP] Disables resume and restores original swap
952 967 space.
968
953 no-scroll [VGA] Disables scrollback. 969 no-scroll [VGA] Disables scrollback.
954 This is required for the Braillex ib80-piezo Braille 970 This is required for the Braillex ib80-piezo Braille
955 reader made by F.H. Papenmeier (Germany). 971 reader made by F.H. Papenmeier (Germany).
@@ -965,16 +981,16 @@ running once the system is up.
965 nousb [USB] Disable the USB subsystem 981 nousb [USB] Disable the USB subsystem
966 982
967 nowb [ARM] 983 nowb [ARM]
968 984
969 opl3= [HW,OSS] 985 opl3= [HW,OSS]
970 Format: <io> 986 Format: <io>
971 987
972 opl3sa= [HW,OSS] 988 opl3sa= [HW,OSS]
973 Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq> 989 Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq>
974 990
975 opl3sa2= [HW,OSS] 991 opl3sa2= [HW,OSS] Format:
976 Format: <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] 992 <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple]
977 993
978 oprofile.timer= [HW] 994 oprofile.timer= [HW]
979 Use timer interrupt instead of performance counters 995 Use timer interrupt instead of performance counters
980 996
@@ -993,36 +1009,33 @@ running once the system is up.
993 Format: <parport#> 1009 Format: <parport#>
994 parkbd.mode= [HW] Parallel port keyboard adapter mode of operation, 1010 parkbd.mode= [HW] Parallel port keyboard adapter mode of operation,
995 0 for XT, 1 for AT (default is AT). 1011 0 for XT, 1 for AT (default is AT).
996 Format: <mode> 1012 Format: <mode>
997 1013
998 parport=0 [HW,PPT] Specify parallel ports. 0 disables. 1014 parport= [HW,PPT] Specify parallel ports. 0 disables.
999 parport=auto Use 'auto' to force the driver to use 1015 Format: { 0 | auto | 0xBBB[,IRQ[,DMA]] }
1000 parport=0xBBB[,IRQ[,DMA]] any IRQ/DMA settings detected (the 1016 Use 'auto' to force the driver to use any
1001 default is to ignore detected IRQ/DMA 1017 IRQ/DMA settings detected (the default is to
1002 settings because of possible 1018 ignore detected IRQ/DMA settings because of
1003 conflicts). You can specify the base 1019 possible conflicts). You can specify the base
1004 address, IRQ, and DMA settings; IRQ and 1020 address, IRQ, and DMA settings; IRQ and DMA
1005 DMA should be numbers, or 'auto' (for 1021 should be numbers, or 'auto' (for using detected
1006 using detected settings on that 1022 settings on that particular port), or 'nofifo'
1007 particular port), or 'nofifo' (to avoid 1023 (to avoid using a FIFO even if it is detected).
1008 using a FIFO even if it is detected). 1024 Parallel ports are assigned in the order they
1009 Parallel ports are assigned in the 1025 are specified on the command line, starting
1010 order they are specified on the command 1026 with parport0.
1011 line, starting with parport0. 1027
1012 1028 parport_init_mode= [HW,PPT]
1013 parport_init_mode= 1029 Configure VIA parallel port to operate in
1014 [HW,PPT] Configure VIA parallel port to 1030 a specific mode. This is necessary on Pegasos
1015 operate in specific mode. This is 1031 computer where firmware has no options for setting
1016 necessary on Pegasos computer where 1032 up parallel port mode and sets it to spp.
1017 firmware has no options for setting up 1033 Currently this function knows 686a and 8231 chips.
1018 parallel port mode and sets it to
1019 spp. Currently this function knows
1020 686a and 8231 chips.
1021 Format: [spp|ps2|epp|ecp|ecpepp] 1034 Format: [spp|ps2|epp|ecp|ecpepp]
1022 1035
1023 pas2= [HW,OSS] 1036 pas2= [HW,OSS] Format:
1024 Format: <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16> 1037 <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16>
1025 1038
1026 pas16= [HW,SCSI] 1039 pas16= [HW,SCSI]
1027 See header of drivers/scsi/pas16.c. 1040 See header of drivers/scsi/pas16.c.
1028 1041
@@ -1032,64 +1045,67 @@ running once the system is up.
1032 See header of drivers/block/paride/pcd.c. 1045 See header of drivers/block/paride/pcd.c.
1033 See also Documentation/paride.txt. 1046 See also Documentation/paride.txt.
1034 1047
1035 pci=option[,option...] [PCI] various PCI subsystem options: 1048 pci=option[,option...] [PCI] various PCI subsystem options:
1036 off [IA-32] don't probe for the PCI bus 1049 off [IA-32] don't probe for the PCI bus
1037 bios [IA-32] force use of PCI BIOS, don't access 1050 bios [IA-32] force use of PCI BIOS, don't access
1038 the hardware directly. Use this if your machine 1051 the hardware directly. Use this if your machine
1039 has a non-standard PCI host bridge. 1052 has a non-standard PCI host bridge.
1040 nobios [IA-32] disallow use of PCI BIOS, only direct 1053 nobios [IA-32] disallow use of PCI BIOS, only direct
1041 hardware access methods are allowed. Use this 1054 hardware access methods are allowed. Use this
1042 if you experience crashes upon bootup and you 1055 if you experience crashes upon bootup and you
1043 suspect they are caused by the BIOS. 1056 suspect they are caused by the BIOS.
1044 conf1 [IA-32] Force use of PCI Configuration Mechanism 1. 1057 conf1 [IA-32] Force use of PCI Configuration
1045 conf2 [IA-32] Force use of PCI Configuration Mechanism 2. 1058 Mechanism 1.
1046 nosort [IA-32] Don't sort PCI devices according to 1059 conf2 [IA-32] Force use of PCI Configuration
1047 order given by the PCI BIOS. This sorting is done 1060 Mechanism 2.
1048 to get a device order compatible with older kernels. 1061 nosort [IA-32] Don't sort PCI devices according to
1049 biosirq [IA-32] Use PCI BIOS calls to get the interrupt 1062 order given by the PCI BIOS. This sorting is
1050 routing table. These calls are known to be buggy 1063 done to get a device order compatible with
1051 on several machines and they hang the machine when used, 1064 older kernels.
1052 but on other computers it's the only way to get the 1065 biosirq [IA-32] Use PCI BIOS calls to get the interrupt
1053 interrupt routing table. Try this option if the kernel 1066 routing table. These calls are known to be buggy
1054 is unable to allocate IRQs or discover secondary PCI 1067 on several machines and they hang the machine
1055 buses on your motherboard. 1068 when used, but on other computers it's the only
1056 rom [IA-32] Assign address space to expansion ROMs. 1069 way to get the interrupt routing table. Try
1057 Use with caution as certain devices share address 1070 this option if the kernel is unable to allocate
1058 decoders between ROMs and other resources. 1071 IRQs or discover secondary PCI buses on your
1059 irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be assigned 1072 motherboard.
1060 automatically to PCI devices. You can make the kernel 1073 rom [IA-32] Assign address space to expansion ROMs.
1061 exclude IRQs of your ISA cards this way. 1074 Use with caution as certain devices share
1075 address decoders between ROMs and other
1076 resources.
1077 irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be
1078 assigned automatically to PCI devices. You can
1079 make the kernel exclude IRQs of your ISA cards
1080 this way.
1062 pirqaddr=0xAAAAA [IA-32] Specify the physical address 1081 pirqaddr=0xAAAAA [IA-32] Specify the physical address
1063 of the PIRQ table (normally generated 1082 of the PIRQ table (normally generated
1064 by the BIOS) if it is outside the 1083 by the BIOS) if it is outside the
1065 F0000h-100000h range. 1084 F0000h-100000h range.
1066 lastbus=N [IA-32] Scan all buses till bus #N. Can be useful 1085 lastbus=N [IA-32] Scan all buses thru bus #N. Can be
1067 if the kernel is unable to find your secondary buses 1086 useful if the kernel is unable to find your
1068 and you want to tell it explicitly which ones they are. 1087 secondary buses and you want to tell it
1069 assign-busses [IA-32] Always assign all PCI bus 1088 explicitly which ones they are.
1070 numbers ourselves, overriding 1089 assign-busses [IA-32] Always assign all PCI bus
1071 whatever the firmware may have 1090 numbers ourselves, overriding
1072 done. 1091 whatever the firmware may have done.
1073 usepirqmask [IA-32] Honor the possible IRQ mask 1092 usepirqmask [IA-32] Honor the possible IRQ mask stored
1074 stored in the BIOS $PIR table. This is 1093 in the BIOS $PIR table. This is needed on
1075 needed on some systems with broken 1094 some systems with broken BIOSes, notably
1076 BIOSes, notably some HP Pavilion N5400 1095 some HP Pavilion N5400 and Omnibook XE3
1077 and Omnibook XE3 notebooks. This will 1096 notebooks. This will have no effect if ACPI
1078 have no effect if ACPI IRQ routing is 1097 IRQ routing is enabled.
1079 enabled. 1098 noacpi [IA-32] Do not use ACPI for IRQ routing
1080 noacpi [IA-32] Do not use ACPI for IRQ routing 1099 or for PCI scanning.
1081 or for PCI scanning. 1100 routeirq Do IRQ routing for all PCI devices.
1082 routeirq Do IRQ routing for all PCI devices. 1101 This is normally done in pci_enable_device(),
1083 This is normally done in pci_enable_device(), 1102 so this option is a temporary workaround
1084 so this option is a temporary workaround 1103 for broken drivers that don't call it.
1085 for broken drivers that don't call it. 1104 firmware [ARM] Do not re-enumerate the bus but instead
1086 1105 just use the configuration from the
1087 firmware [ARM] Do not re-enumerate the bus but 1106 bootloader. This is currently used on
1088 instead just use the configuration 1107 IXP2000 systems where the bus has to be
1089 from the bootloader. This is currently 1108 configured a certain way for adjunct CPUs.
1090 used on IXP2000 systems where the
1091 bus has to be configured a certain way
1092 for adjunct CPUs.
1093 1109
1094 pcmv= [HW,PCMCIA] BadgePAD 4 1110 pcmv= [HW,PCMCIA] BadgePAD 4
1095 1111
@@ -1127,19 +1143,20 @@ running once the system is up.
1127 [ISAPNP] Exclude DMAs for the autoconfiguration 1143 [ISAPNP] Exclude DMAs for the autoconfiguration
1128 1144
1129 pnp_reserve_io= [ISAPNP] Exclude I/O ports for the autoconfiguration 1145 pnp_reserve_io= [ISAPNP] Exclude I/O ports for the autoconfiguration
1130 Ranges are in pairs (I/O port base and size). 1146 Ranges are in pairs (I/O port base and size).
1131 1147
1132 pnp_reserve_mem= 1148 pnp_reserve_mem=
1133 [ISAPNP] Exclude memory regions for the autoconfiguration 1149 [ISAPNP] Exclude memory regions for the
1150 autoconfiguration.
1134 Ranges are in pairs (memory base and size). 1151 Ranges are in pairs (memory base and size).
1135 1152
1136 profile= [KNL] Enable kernel profiling via /proc/profile 1153 profile= [KNL] Enable kernel profiling via /proc/profile
1137 { schedule | <number> } 1154 Format: [schedule,]<number>
1138 (param: schedule - profile schedule points} 1155 Param: "schedule" - profile schedule points.
1139 (param: profile step/bucket size as a power of 2 for 1156 Param: <number> - step/bucket size as a power of 2 for
1140 statistical time based profiling) 1157 statistical time based profiling.
1141 1158
1142 processor.max_cstate= [HW, ACPI] 1159 processor.max_cstate= [HW,ACPI]
1143 Limit processor to maximum C-state 1160 Limit processor to maximum C-state
1144 max_cstate=9 overrides any DMI blacklist limit. 1161 max_cstate=9 overrides any DMI blacklist limit.
1145 1162
@@ -1147,27 +1164,28 @@ running once the system is up.
1147 before loading. 1164 before loading.
1148 See Documentation/ramdisk.txt. 1165 See Documentation/ramdisk.txt.
1149 1166
1150 psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to 1167 psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
1151 probe for (bare|imps|exps|lifebook|any). 1168 probe for; one of (bare|imps|exps|lifebook|any).
1152 psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports 1169 psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports
1153 per second. 1170 per second.
1154 psmouse.resetafter= 1171 psmouse.resetafter= [HW,MOUSE]
1155 [HW,MOUSE] Try to reset the device after so many bad packets 1172 Try to reset the device after so many bad packets
1156 (0 = never). 1173 (0 = never).
1157 psmouse.resolution= 1174 psmouse.resolution=
1158 [HW,MOUSE] Set desired mouse resolution, in dpi. 1175 [HW,MOUSE] Set desired mouse resolution, in dpi.
1159 psmouse.smartscroll= 1176 psmouse.smartscroll=
1160 [HW,MOUSE] Controls Logitech smartscroll autorepeat, 1177 [HW,MOUSE] Controls Logitech smartscroll autorepeat.
1161 0 = disabled, 1 = enabled (default). 1178 0 = disabled, 1 = enabled (default).
1162 1179
1163 pss= [HW,OSS] Personal Sound System (ECHO ESC614) 1180 pss= [HW,OSS] Personal Sound System (ECHO ESC614)
1164 Format: <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq> 1181 Format:
1182 <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq>
1165 1183
1166 pt. [PARIDE] 1184 pt. [PARIDE]
1167 See Documentation/paride.txt. 1185 See Documentation/paride.txt.
1168 1186
1169 quiet= [KNL] Disable log messages 1187 quiet= [KNL] Disable log messages
1170 1188
1171 r128= [HW,DRM] 1189 r128= [HW,DRM]
1172 1190
1173 raid= [HW,RAID] 1191 raid= [HW,RAID]
@@ -1176,10 +1194,9 @@ running once the system is up.
1176 ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated] 1194 ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated]
1177 See Documentation/ramdisk.txt. 1195 See Documentation/ramdisk.txt.
1178 1196
1179 ramdisk_blocksize= 1197 ramdisk_blocksize= [RAM]
1180 [RAM]
1181 See Documentation/ramdisk.txt. 1198 See Documentation/ramdisk.txt.
1182 1199
1183 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes 1200 ramdisk_size= [RAM] Sizes of RAM disks in kilobytes
1184 New name for the ramdisk parameter. 1201 New name for the ramdisk parameter.
1185 See Documentation/ramdisk.txt. 1202 See Documentation/ramdisk.txt.
@@ -1195,7 +1212,8 @@ running once the system is up.
1195 1212
1196 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area 1213 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
1197 1214
1198 resume= [SWSUSP] Specify the partition device for software suspension 1215 resume= [SWSUSP]
1216 Specify the partition device for software suspend
1199 1217
1200 rhash_entries= [KNL,NET] 1218 rhash_entries= [KNL,NET]
1201 Set number of hash buckets for route cache 1219 Set number of hash buckets for route cache
@@ -1225,7 +1243,7 @@ running once the system is up.
1225 Format: <io>,<irq>,<dma>,<dma2> 1243 Format: <io>,<irq>,<dma>,<dma2>
1226 1244
1227 sbni= [NET] Granch SBNI12 leased line adapter 1245 sbni= [NET] Granch SBNI12 leased line adapter
1228 1246
1229 sbpcd= [HW,CD] Soundblaster CD adapter 1247 sbpcd= [HW,CD] Soundblaster CD adapter
1230 Format: <io>,<type> 1248 Format: <io>,<type>
1231 See a comment before function sbpcd_setup() in 1249 See a comment before function sbpcd_setup() in
@@ -1258,21 +1276,20 @@ running once the system is up.
1258 1276
1259 serialnumber [BUGS=IA-32] 1277 serialnumber [BUGS=IA-32]
1260 1278
1261 sg_def_reserved_size= 1279 sg_def_reserved_size= [SCSI]
1262 [SCSI] 1280
1263
1264 sgalaxy= [HW,OSS] 1281 sgalaxy= [HW,OSS]
1265 Format: <io>,<irq>,<dma>,<dma2>,<sgbase> 1282 Format: <io>,<irq>,<dma>,<dma2>,<sgbase>
1266 1283
1267 shapers= [NET] 1284 shapers= [NET]
1268 Maximal number of shapers. 1285 Maximal number of shapers.
1269 1286
1270 sim710= [SCSI,HW] 1287 sim710= [SCSI,HW]
1271 See header of drivers/scsi/sim710.c. 1288 See header of drivers/scsi/sim710.c.
1272 1289
1273 simeth= [IA-64] 1290 simeth= [IA-64]
1274 simscsi= 1291 simscsi=
1275 1292
1276 sjcd= [HW,CD] 1293 sjcd= [HW,CD]
1277 Format: <io>,<irq>,<dma> 1294 Format: <io>,<irq>,<dma>
1278 See header of drivers/cdrom/sjcd.c. 1295 See header of drivers/cdrom/sjcd.c.
@@ -1403,10 +1420,10 @@ running once the system is up.
1403 snd-wavefront= [HW,ALSA] 1420 snd-wavefront= [HW,ALSA]
1404 1421
1405 snd-ymfpci= [HW,ALSA] 1422 snd-ymfpci= [HW,ALSA]
1406 1423
1407 sonicvibes= [HW,OSS] 1424 sonicvibes= [HW,OSS]
1408 Format: <reverb> 1425 Format: <reverb>
1409 1426
1410 sonycd535= [HW,CD] 1427 sonycd535= [HW,CD]
1411 Format: <io>[,<irq>] 1428 Format: <io>[,<irq>]
1412 1429
@@ -1423,7 +1440,7 @@ running once the system is up.
1423 1440
1424 sscape= [HW,OSS] 1441 sscape= [HW,OSS]
1425 Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq> 1442 Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq>
1426 1443
1427 st= [HW,SCSI] SCSI tape parameters (buffers, etc.) 1444 st= [HW,SCSI] SCSI tape parameters (buffers, etc.)
1428 See Documentation/scsi/st.txt. 1445 See Documentation/scsi/st.txt.
1429 1446
@@ -1446,7 +1463,7 @@ running once the system is up.
1446 stram_swap= [HW,M68k] 1463 stram_swap= [HW,M68k]
1447 1464
1448 swiotlb= [IA-64] Number of I/O TLB slabs 1465 swiotlb= [IA-64] Number of I/O TLB slabs
1449 1466
1450 switches= [HW,M68k] 1467 switches= [HW,M68k]
1451 1468
1452 sym53c416= [HW,SCSI] 1469 sym53c416= [HW,SCSI]
@@ -1479,14 +1496,16 @@ running once the system is up.
1479 tp720= [HW,PS2] 1496 tp720= [HW,PS2]
1480 1497
1481 trix= [HW,OSS] MediaTrix AudioTrix Pro 1498 trix= [HW,OSS] MediaTrix AudioTrix Pro
1482 Format: <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> 1499 Format:
1483 1500 <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
1501
1484 tsdev.xres= [TS] Horizontal screen resolution. 1502 tsdev.xres= [TS] Horizontal screen resolution.
1485 tsdev.yres= [TS] Vertical screen resolution. 1503 tsdev.yres= [TS] Vertical screen resolution.
1486 1504
1487 turbografx.map[2|3]= 1505 turbografx.map[2|3]= [HW,JOY]
1488 [HW,JOY] TurboGraFX parallel port interface 1506 TurboGraFX parallel port interface
1489 Format: <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7> 1507 Format:
1508 <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7>
1490 See also Documentation/input/joystick-parport.txt 1509 See also Documentation/input/joystick-parport.txt
1491 1510
1492 u14-34f= [HW,SCSI] UltraStor 14F/34F SCSI host adapter 1511 u14-34f= [HW,SCSI] UltraStor 14F/34F SCSI host adapter
@@ -1502,17 +1521,18 @@ running once the system is up.
1502 1521
1503 usbhid.mousepoll= 1522 usbhid.mousepoll=
1504 [USBHID] The interval which mice are to be polled at. 1523 [USBHID] The interval which mice are to be polled at.
1505 1524
1506 video= [FB] Frame buffer configuration 1525 video= [FB] Frame buffer configuration
1507 See Documentation/fb/modedb.txt. 1526 See Documentation/fb/modedb.txt.
1508 1527
1509 vga= [BOOT,IA-32] Select a particular video mode 1528 vga= [BOOT,IA-32] Select a particular video mode
1510 See Documentation/i386/boot.txt and Documentation/svga.txt. 1529 See Documentation/i386/boot.txt and
1530 Documentation/svga.txt.
1511 Use vga=ask for menu. 1531 Use vga=ask for menu.
1512 This is actually a boot loader parameter; the value is 1532 This is actually a boot loader parameter; the value is
1513 passed to the kernel using a special protocol. 1533 passed to the kernel using a special protocol.
1514 1534
1515 vmalloc=nn[KMG] [KNL,BOOT] forces the vmalloc area to have an exact 1535 vmalloc=nn[KMG] [KNL,BOOT] Forces the vmalloc area to have an exact
1516 size of <nn>. This can be used to increase the 1536 size of <nn>. This can be used to increase the
1517 minimum size (128MB on x86). It can also be used to 1537 minimum size (128MB on x86). It can also be used to
1518 decrease the size and leave more room for directly 1538 decrease the size and leave more room for directly
@@ -1520,11 +1540,11 @@ running once the system is up.
1520 1540
1521 vmhalt= [KNL,S390] 1541 vmhalt= [KNL,S390]
1522 1542
1523 vmpoff= [KNL,S390] 1543 vmpoff= [KNL,S390]
1524 1544
1525 waveartist= [HW,OSS] 1545 waveartist= [HW,OSS]
1526 Format: <io>,<irq>,<dma>,<dma2> 1546 Format: <io>,<irq>,<dma>,<dma2>
1527 1547
1528 wd33c93= [HW,SCSI] 1548 wd33c93= [HW,SCSI]
1529 See header of drivers/scsi/wd33c93.c. 1549 See header of drivers/scsi/wd33c93.c.
1530 1550
@@ -1538,21 +1558,25 @@ running once the system is up.
1538 xd_geo= See header of drivers/block/xd.c. 1558 xd_geo= See header of drivers/block/xd.c.
1539 1559
1540 xirc2ps_cs= [NET,PCMCIA] 1560 xirc2ps_cs= [NET,PCMCIA]
1541 Format: <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] 1561 Format:
1542 1562 <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
1543 1563
1544 1564
1565______________________________________________________________________
1545Changelog: 1566Changelog:
1546 1567
15682000-06-?? Mr. Unknown
1547 The last known update (for 2.4.0) - the changelog was not kept before. 1569 The last known update (for 2.4.0) - the changelog was not kept before.
1548 2000-06-?? Mr. Unknown
1549 1570
15712002-11-24 Petr Baudis <pasky@ucw.cz>
1572 Randy Dunlap <randy.dunlap@verizon.net>
1550 Update for 2.5.49, description for most of the options introduced, 1573 Update for 2.5.49, description for most of the options introduced,
1551 references to other documentation (C files, READMEs, ..), added S390, 1574 references to other documentation (C files, READMEs, ..), added S390,
1552 PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and 1575 PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and
1553 reformatting. 1576 reformatting.
1554 2002-11-24 Petr Baudis <pasky@ucw.cz> 1577
1555 Randy Dunlap <randy.dunlap@verizon.net> 15782005-10-19 Randy Dunlap <rdunlap@xenotime.net>
1579 Lots of typos, whitespace, some reformatting.
1556 1580
1557TODO: 1581TODO:
1558 1582
diff --git a/Documentation/keys-request-key.txt b/Documentation/keys-request-key.txt
new file mode 100644
index 000000000000..5f2b9c5edbb5
--- /dev/null
+++ b/Documentation/keys-request-key.txt
@@ -0,0 +1,161 @@
1 ===================
2 KEY REQUEST SERVICE
3 ===================
4
5The key request service is part of the key retention service (refer to
6Documentation/keys.txt). This document explains more fully how that the
7requesting algorithm works.
8
9The process starts by either the kernel requesting a service by calling
10request_key():
11
12 struct key *request_key(const struct key_type *type,
13 const char *description,
14 const char *callout_string);
15
16Or by userspace invoking the request_key system call:
17
18 key_serial_t request_key(const char *type,
19 const char *description,
20 const char *callout_info,
21 key_serial_t dest_keyring);
22
23The main difference between the two access points is that the in-kernel
24interface does not need to link the key to a keyring to prevent it from being
25immediately destroyed. The kernel interface returns a pointer directly to the
26key, and it's up to the caller to destroy the key.
27
28The userspace interface links the key to a keyring associated with the process
29to prevent the key from going away, and returns the serial number of the key to
30the caller.
31
32
33===========
34THE PROCESS
35===========
36
37A request proceeds in the following manner:
38
39 (1) Process A calls request_key() [the userspace syscall calls the kernel
40 interface].
41
42 (2) request_key() searches the process's subscribed keyrings to see if there's
43 a suitable key there. If there is, it returns the key. If there isn't, and
44 callout_info is not set, an error is returned. Otherwise the process
45 proceeds to the next step.
46
47 (3) request_key() sees that A doesn't have the desired key yet, so it creates
48 two things:
49
50 (a) An uninstantiated key U of requested type and description.
51
52 (b) An authorisation key V that refers to key U and notes that process A
53 is the context in which key U should be instantiated and secured, and
54 from which associated key requests may be satisfied.
55
56 (4) request_key() then forks and executes /sbin/request-key with a new session
57 keyring that contains a link to auth key V.
58
59 (5) /sbin/request-key execs an appropriate program to perform the actual
60 instantiation.
61
62 (6) The program may want to access another key from A's context (say a
63 Kerberos TGT key). It just requests the appropriate key, and the keyring
64 search notes that the session keyring has auth key V in its bottom level.
65
66 This will permit it to then search the keyrings of process A with the
67 UID, GID, groups and security info of process A as if it was process A,
68 and come up with key W.
69
70 (7) The program then does what it must to get the data with which to
71 instantiate key U, using key W as a reference (perhaps it contacts a
72 Kerberos server using the TGT) and then instantiates key U.
73
74 (8) Upon instantiating key U, auth key V is automatically revoked so that it
75 may not be used again.
76
77 (9) The program then exits 0 and request_key() deletes key V and returns key
78 U to the caller.
79
80This also extends further. If key W (step 5 above) didn't exist, key W would be
81created uninstantiated, another auth key (X) would be created [as per step 3]
82and another copy of /sbin/request-key spawned [as per step 4]; but the context
83specified by auth key X will still be process A, as it was in auth key V.
84
85This is because process A's keyrings can't simply be attached to
86/sbin/request-key at the appropriate places because (a) execve will discard two
87of them, and (b) it requires the same UID/GID/Groups all the way through.
88
89
90======================
91NEGATIVE INSTANTIATION
92======================
93
94Rather than instantiating a key, it is possible for the possessor of an
95authorisation key to negatively instantiate a key that's under construction.
96This is a short duration placeholder that causes any attempt at re-requesting
97the key whilst it exists to fail with error ENOKEY.
98
99This is provided to prevent excessive repeated spawning of /sbin/request-key
100processes for a key that will never be obtainable.
101
102Should the /sbin/request-key process exit anything other than 0 or die on a
103signal, the key under construction will be automatically negatively
104instantiated for a short amount of time.
105
106
107====================
108THE SEARCH ALGORITHM
109====================
110
111A search of any particular keyring proceeds in the following fashion:
112
113 (1) When the key management code searches for a key (keyring_search_aux) it
114 firstly calls key_permission(SEARCH) on the keyring it's starting with,
115 if this denies permission, it doesn't search further.
116
117 (2) It considers all the non-keyring keys within that keyring and, if any key
118 matches the criteria specified, calls key_permission(SEARCH) on it to see
119 if the key is allowed to be found. If it is, that key is returned; if
120 not, the search continues, and the error code is retained if of higher
121 priority than the one currently set.
122
123 (3) It then considers all the keyring-type keys in the keyring it's currently
124 searching. It calls key_permission(SEARCH) on each keyring, and if this
125 grants permission, it recurses, executing steps (2) and (3) on that
126 keyring.
127
128The process stops immediately a valid key is found with permission granted to
129use it. Any error from a previous match attempt is discarded and the key is
130returned.
131
132When search_process_keyrings() is invoked, it performs the following searches
133until one succeeds:
134
135 (1) If extant, the process's thread keyring is searched.
136
137 (2) If extant, the process's process keyring is searched.
138
139 (3) The process's session keyring is searched.
140
141 (4) If the process has a request_key() authorisation key in its session
142 keyring then:
143
144 (a) If extant, the calling process's thread keyring is searched.
145
146 (b) If extant, the calling process's process keyring is searched.
147
148 (c) The calling process's session keyring is searched.
149
150The moment one succeeds, all pending errors are discarded and the found key is
151returned.
152
153Only if all these fail does the whole thing fail with the highest priority
154error. Note that several errors may have come from LSM.
155
156The error priority is:
157
158 EKEYREVOKED > EKEYEXPIRED > ENOKEY
159
160EACCES/EPERM are only returned on a direct search of a specific keyring where
161the basal keyring does not grant Search permission.
diff --git a/Documentation/keys.txt b/Documentation/keys.txt
index 0321ded4b9ae..4afe03a58c5b 100644
--- a/Documentation/keys.txt
+++ b/Documentation/keys.txt
@@ -195,8 +195,8 @@ KEY ACCESS PERMISSIONS
195====================== 195======================
196 196
197Keys have an owner user ID, a group access ID, and a permissions mask. The mask 197Keys have an owner user ID, a group access ID, and a permissions mask. The mask
198has up to eight bits each for user, group and other access. Only five of each 198has up to eight bits each for possessor, user, group and other access. Only
199set of eight bits are defined. These permissions granted are: 199five of each set of eight bits are defined. These permissions granted are:
200 200
201 (*) View 201 (*) View
202 202
@@ -241,16 +241,16 @@ about the status of the key service:
241 type, description and permissions. The payload of the key is not available 241 type, description and permissions. The payload of the key is not available
242 this way: 242 this way:
243 243
244 SERIAL FLAGS USAGE EXPY PERM UID GID TYPE DESCRIPTION: SUMMARY 244 SERIAL FLAGS USAGE EXPY PERM UID GID TYPE DESCRIPTION: SUMMARY
245 00000001 I----- 39 perm 1f0000 0 0 keyring _uid_ses.0: 1/4 245 00000001 I----- 39 perm 1f1f0000 0 0 keyring _uid_ses.0: 1/4
246 00000002 I----- 2 perm 1f0000 0 0 keyring _uid.0: empty 246 00000002 I----- 2 perm 1f1f0000 0 0 keyring _uid.0: empty
247 00000007 I----- 1 perm 1f0000 0 0 keyring _pid.1: empty 247 00000007 I----- 1 perm 1f1f0000 0 0 keyring _pid.1: empty
248 0000018d I----- 1 perm 1f0000 0 0 keyring _pid.412: empty 248 0000018d I----- 1 perm 1f1f0000 0 0 keyring _pid.412: empty
249 000004d2 I--Q-- 1 perm 1f0000 32 -1 keyring _uid.32: 1/4 249 000004d2 I--Q-- 1 perm 1f1f0000 32 -1 keyring _uid.32: 1/4
250 000004d3 I--Q-- 3 perm 1f0000 32 -1 keyring _uid_ses.32: empty 250 000004d3 I--Q-- 3 perm 1f1f0000 32 -1 keyring _uid_ses.32: empty
251 00000892 I--QU- 1 perm 1f0000 0 0 user metal:copper: 0 251 00000892 I--QU- 1 perm 1f000000 0 0 user metal:copper: 0
252 00000893 I--Q-N 1 35s 1f0000 0 0 user metal:silver: 0 252 00000893 I--Q-N 1 35s 1f1f0000 0 0 user metal:silver: 0
253 00000894 I--Q-- 1 10h 1f0000 0 0 user metal:gold: 0 253 00000894 I--Q-- 1 10h 001f0000 0 0 user metal:gold: 0
254 254
255 The flags are: 255 The flags are:
256 256
@@ -361,6 +361,8 @@ The main syscalls are:
361 /sbin/request-key will be invoked in an attempt to obtain a key. The 361 /sbin/request-key will be invoked in an attempt to obtain a key. The
362 callout_info string will be passed as an argument to the program. 362 callout_info string will be passed as an argument to the program.
363 363
364 See also Documentation/keys-request-key.txt.
365
364 366
365The keyctl syscall functions are: 367The keyctl syscall functions are:
366 368
@@ -533,8 +535,8 @@ The keyctl syscall functions are:
533 535
534 (*) Read the payload data from a key: 536 (*) Read the payload data from a key:
535 537
536 key_serial_t keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer, 538 long keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer,
537 size_t buflen); 539 size_t buflen);
538 540
539 This function attempts to read the payload data from the specified key 541 This function attempts to read the payload data from the specified key
540 into the buffer. The process must have read permission on the key to 542 into the buffer. The process must have read permission on the key to
@@ -555,9 +557,9 @@ The keyctl syscall functions are:
555 557
556 (*) Instantiate a partially constructed key. 558 (*) Instantiate a partially constructed key.
557 559
558 key_serial_t keyctl(KEYCTL_INSTANTIATE, key_serial_t key, 560 long keyctl(KEYCTL_INSTANTIATE, key_serial_t key,
559 const void *payload, size_t plen, 561 const void *payload, size_t plen,
560 key_serial_t keyring); 562 key_serial_t keyring);
561 563
562 If the kernel calls back to userspace to complete the instantiation of a 564 If the kernel calls back to userspace to complete the instantiation of a
563 key, userspace should use this call to supply data for the key before the 565 key, userspace should use this call to supply data for the key before the
@@ -576,8 +578,8 @@ The keyctl syscall functions are:
576 578
577 (*) Negatively instantiate a partially constructed key. 579 (*) Negatively instantiate a partially constructed key.
578 580
579 key_serial_t keyctl(KEYCTL_NEGATE, key_serial_t key, 581 long keyctl(KEYCTL_NEGATE, key_serial_t key,
580 unsigned timeout, key_serial_t keyring); 582 unsigned timeout, key_serial_t keyring);
581 583
582 If the kernel calls back to userspace to complete the instantiation of a 584 If the kernel calls back to userspace to complete the instantiation of a
583 key, userspace should use this call mark the key as negative before the 585 key, userspace should use this call mark the key as negative before the
@@ -637,6 +639,34 @@ call, and the key released upon close. How to deal with conflicting keys due to
637two different users opening the same file is left to the filesystem author to 639two different users opening the same file is left to the filesystem author to
638solve. 640solve.
639 641
642Note that there are two different types of pointers to keys that may be
643encountered:
644
645 (*) struct key *
646
647 This simply points to the key structure itself. Key structures will be at
648 least four-byte aligned.
649
650 (*) key_ref_t
651
652 This is equivalent to a struct key *, but the least significant bit is set
653 if the caller "possesses" the key. By "possession" it is meant that the
654 calling processes has a searchable link to the key from one of its
655 keyrings. There are three functions for dealing with these:
656
657 key_ref_t make_key_ref(const struct key *key,
658 unsigned long possession);
659
660 struct key *key_ref_to_ptr(const key_ref_t key_ref);
661
662 unsigned long is_key_possessed(const key_ref_t key_ref);
663
664 The first function constructs a key reference from a key pointer and
665 possession information (which must be 0 or 1 and not any other value).
666
667 The second function retrieves the key pointer from a reference and the
668 third retrieves the possession flag.
669
640When accessing a key's payload contents, certain precautions must be taken to 670When accessing a key's payload contents, certain precautions must be taken to
641prevent access vs modification races. See the section "Notes on accessing 671prevent access vs modification races. See the section "Notes on accessing
642payload contents" for more information. 672payload contents" for more information.
@@ -660,12 +690,18 @@ payload contents" for more information.
660 If successful, the key will have been attached to the default keyring for 690 If successful, the key will have been attached to the default keyring for
661 implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING. 691 implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING.
662 692
693 See also Documentation/keys-request-key.txt.
694
663 695
664(*) When it is no longer required, the key should be released using: 696(*) When it is no longer required, the key should be released using:
665 697
666 void key_put(struct key *key); 698 void key_put(struct key *key);
667 699
668 This can be called from interrupt context. If CONFIG_KEYS is not set then 700 Or:
701
702 void key_ref_put(key_ref_t key_ref);
703
704 These can be called from interrupt context. If CONFIG_KEYS is not set then
669 the argument will not be parsed. 705 the argument will not be parsed.
670 706
671 707
@@ -689,13 +725,17 @@ payload contents" for more information.
689 725
690(*) If a keyring was found in the search, this can be further searched by: 726(*) If a keyring was found in the search, this can be further searched by:
691 727
692 struct key *keyring_search(struct key *keyring, 728 key_ref_t keyring_search(key_ref_t keyring_ref,
693 const struct key_type *type, 729 const struct key_type *type,
694 const char *description) 730 const char *description)
695 731
696 This searches the keyring tree specified for a matching key. Error ENOKEY 732 This searches the keyring tree specified for a matching key. Error ENOKEY
697 is returned upon failure. If successful, the returned key will need to be 733 is returned upon failure (use IS_ERR/PTR_ERR to determine). If successful,
698 released. 734 the returned key will need to be released.
735
736 The possession attribute from the keyring reference is used to control
737 access through the permissions mask and is propagated to the returned key
738 reference pointer if successful.
699 739
700 740
701(*) To check the validity of a key, this function can be called: 741(*) To check the validity of a key, this function can be called:
@@ -732,7 +772,7 @@ More complex payload contents must be allocated and a pointer to them set in
732key->payload.data. One of the following ways must be selected to access the 772key->payload.data. One of the following ways must be selected to access the
733data: 773data:
734 774
735 (1) Unmodifyable key type. 775 (1) Unmodifiable key type.
736 776
737 If the key type does not have a modify method, then the key's payload can 777 If the key type does not have a modify method, then the key's payload can
738 be accessed without any form of locking, provided that it's known to be 778 be accessed without any form of locking, provided that it's known to be
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index a55f0f95b171..b0fe41da007b 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -777,7 +777,7 @@ doing so is the same as described in the "Configuring Multiple Bonds
777Manually" section, below. 777Manually" section, below.
778 778
779 NOTE: It has been observed that some Red Hat supplied kernels 779 NOTE: It has been observed that some Red Hat supplied kernels
780are apparently unable to rename modules at load time (the "-obonding1" 780are apparently unable to rename modules at load time (the "-o bond1"
781part). Attempts to pass that option to modprobe will produce an 781part). Attempts to pass that option to modprobe will produce an
782"Operation not permitted" error. This has been reported on some 782"Operation not permitted" error. This has been reported on some
783Fedora Core kernels, and has been seen on RHEL 4 as well. On kernels 783Fedora Core kernels, and has been seen on RHEL 4 as well. On kernels
@@ -883,7 +883,8 @@ the above does not work, and the second bonding instance never sees
883its options. In that case, the second options line can be substituted 883its options. In that case, the second options line can be substituted
884as follows: 884as follows:
885 885
886install bonding1 /sbin/modprobe bonding -obond1 mode=balance-alb miimon=50 886install bond1 /sbin/modprobe --ignore-install bonding -o bond1 \
887 mode=balance-alb miimon=50
887 888
888 This may be repeated any number of times, specifying a new and 889 This may be repeated any number of times, specifying a new and
889unique name in place of bond1 for each subsequent instance. 890unique name in place of bond1 for each subsequent instance.
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index ab65714d95fc..b433c8a27e2d 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -355,10 +355,14 @@ ip_dynaddr - BOOLEAN
355 Default: 0 355 Default: 0
356 356
357icmp_echo_ignore_all - BOOLEAN 357icmp_echo_ignore_all - BOOLEAN
358 If set non-zero, then the kernel will ignore all ICMP ECHO
359 requests sent to it.
360 Default: 0
361
358icmp_echo_ignore_broadcasts - BOOLEAN 362icmp_echo_ignore_broadcasts - BOOLEAN
359 If either is set to true, then the kernel will ignore either all 363 If set non-zero, then the kernel will ignore all ICMP ECHO and
360 ICMP ECHO requests sent to it or just those to broadcast/multicast 364 TIMESTAMP requests sent to it via broadcast/multicast.
361 addresses, respectively. 365 Default: 1
362 366
363icmp_ratelimit - INTEGER 367icmp_ratelimit - INTEGER
364 Limit the maximal rates for sending ICMP packets whose type matches 368 Limit the maximal rates for sending ICMP packets whose type matches
diff --git a/Documentation/sparse.txt b/Documentation/sparse.txt
index 5df44dc894e5..1829009db771 100644
--- a/Documentation/sparse.txt
+++ b/Documentation/sparse.txt
@@ -51,9 +51,9 @@ or you don't get any checking at all.
51Where to get sparse 51Where to get sparse
52~~~~~~~~~~~~~~~~~~~ 52~~~~~~~~~~~~~~~~~~~
53 53
54With BK, you can just get it from 54With git, you can just get it from
55 55
56 bk://sparse.bkbits.net/sparse 56 rsync://rsync.kernel.org/pub/scm/devel/sparse/sparse.git
57 57
58and DaveJ has tar-balls at 58and DaveJ has tar-balls at
59 59
diff --git a/Documentation/usb/URB.txt b/Documentation/usb/URB.txt
index d59b95cc6f1b..a49e5f2c2b46 100644
--- a/Documentation/usb/URB.txt
+++ b/Documentation/usb/URB.txt
@@ -1,5 +1,6 @@
1Revised: 2000-Dec-05. 1Revised: 2000-Dec-05.
2Again: 2002-Jul-06 2Again: 2002-Jul-06
3Again: 2005-Sep-19
3 4
4 NOTE: 5 NOTE:
5 6
@@ -18,8 +19,8 @@ called USB Request Block, or URB for short.
18 and deliver the data and status back. 19 and deliver the data and status back.
19 20
20- Execution of an URB is inherently an asynchronous operation, i.e. the 21- Execution of an URB is inherently an asynchronous operation, i.e. the
21 usb_submit_urb(urb) call returns immediately after it has successfully queued 22 usb_submit_urb(urb) call returns immediately after it has successfully
22 the requested action. 23 queued the requested action.
23 24
24- Transfers for one URB can be canceled with usb_unlink_urb(urb) at any time. 25- Transfers for one URB can be canceled with usb_unlink_urb(urb) at any time.
25 26
@@ -94,8 +95,9 @@ To free an URB, use
94 95
95 void usb_free_urb(struct urb *urb) 96 void usb_free_urb(struct urb *urb)
96 97
97You may not free an urb that you've submitted, but which hasn't yet been 98You may free an urb that you've submitted, but which hasn't yet been
98returned to you in a completion callback. 99returned to you in a completion callback. It will automatically be
100deallocated when it is no longer in use.
99 101
100 102
1011.4. What has to be filled in? 1031.4. What has to be filled in?
@@ -145,30 +147,36 @@ to get seamless ISO streaming.
145 147
1461.6. How to cancel an already running URB? 1481.6. How to cancel an already running URB?
147 149
148For an URB which you've submitted, but which hasn't been returned to 150There are two ways to cancel an URB you've submitted but which hasn't
149your driver by the host controller, call 151been returned to your driver yet. For an asynchronous cancel, call
150 152
151 int usb_unlink_urb(struct urb *urb) 153 int usb_unlink_urb(struct urb *urb)
152 154
153It removes the urb from the internal list and frees all allocated 155It removes the urb from the internal list and frees all allocated
154HW descriptors. The status is changed to reflect unlinking. After 156HW descriptors. The status is changed to reflect unlinking. Note
155usb_unlink_urb() returns with that status code, you can free the URB 157that the URB will not normally have finished when usb_unlink_urb()
156with usb_free_urb(). 158returns; you must still wait for the completion handler to be called.
157 159
158There is also an asynchronous unlink mode. To use this, set the 160To cancel an URB synchronously, call
159the URB_ASYNC_UNLINK flag in urb->transfer flags before calling 161
160usb_unlink_urb(). When using async unlinking, the URB will not 162 void usb_kill_urb(struct urb *urb)
161normally be unlinked when usb_unlink_urb() returns. Instead, wait 163
162for the completion handler to be called. 164It does everything usb_unlink_urb does, and in addition it waits
165until after the URB has been returned and the completion handler
166has finished. It also marks the URB as temporarily unusable, so
167that if the completion handler or anyone else tries to resubmit it
168they will get a -EPERM error. Thus you can be sure that when
169usb_kill_urb() returns, the URB is totally idle.
163 170
164 171
1651.7. What about the completion handler? 1721.7. What about the completion handler?
166 173
167The handler is of the following type: 174The handler is of the following type:
168 175
169 typedef void (*usb_complete_t)(struct urb *); 176 typedef void (*usb_complete_t)(struct urb *, struct pt_regs *)
170 177
171i.e. it gets just the URB that caused the completion call. 178I.e., it gets the URB that caused the completion call, plus the
179register values at the time of the corresponding interrupt (if any).
172In the completion handler, you should have a look at urb->status to 180In the completion handler, you should have a look at urb->status to
173detect any USB errors. Since the context parameter is included in the URB, 181detect any USB errors. Since the context parameter is included in the URB,
174you can pass information to the completion handler. 182you can pass information to the completion handler.
@@ -176,17 +184,11 @@ you can pass information to the completion handler.
176Note 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
177transferred. That's because USB transfers are packetized; it might take 185transferred. That's because USB transfers are packetized; it might take
178sixteen packets to transfer your 1KByte buffer, and ten of them might 186sixteen packets to transfer your 1KByte buffer, and ten of them might
179have transferred succesfully before the completion is called. 187have transferred succesfully before the completion was called.
180 188
181 189
182NOTE: ***** WARNING ***** 190NOTE: ***** WARNING *****
183Don't use urb->dev field in your completion handler; it's cleared 191NEVER SLEEP IN A COMPLETION HANDLER. These are normally called
184as part of giving urbs back to drivers. (Addressing an issue with
185ownership of periodic URBs, which was otherwise ambiguous.) Instead,
186use urb->context to hold all the data your driver needs.
187
188NOTE: ***** WARNING *****
189Also, NEVER SLEEP IN A COMPLETION HANDLER. These are normally called
190during hardware interrupt processing. If you can, defer substantial 192during hardware interrupt processing. If you can, defer substantial
191work to a tasklet (bottom half) to keep system latencies low. You'll 193work to a tasklet (bottom half) to keep system latencies low. You'll
192probably need to use spinlocks to protect data structures you manipulate 194probably need to use spinlocks to protect data structures you manipulate
@@ -229,24 +231,10 @@ ISO data with some other event stream.
229Interrupt transfers, like isochronous transfers, are periodic, and happen 231Interrupt transfers, like isochronous transfers, are periodic, and happen
230in intervals that are powers of two (1, 2, 4 etc) units. Units are frames 232in intervals that are powers of two (1, 2, 4 etc) units. Units are frames
231for full and low speed devices, and microframes for high speed ones. 233for full and low speed devices, and microframes for high speed ones.
232
233Currently, after you submit one interrupt URB, that urb is owned by the
234host controller driver until you cancel it with usb_unlink_urb(). You
235may unlink interrupt urbs in their completion handlers, if you need to.
236
237After a transfer completion is called, the URB is automagically resubmitted.
238THIS BEHAVIOR IS EXPECTED TO BE REMOVED!!
239
240Interrupt transfers may only send (or receive) the "maxpacket" value for
241the given interrupt endpoint; if you need more data, you will need to
242copy that data out of (or into) another buffer. Similarly, you can't
243queue interrupt transfers.
244THESE RESTRICTIONS ARE EXPECTED TO BE REMOVED!!
245
246Note that this automagic resubmission model does make it awkward to use
247interrupt OUT transfers. The portable solution involves unlinking those
248OUT urbs after the data is transferred, and perhaps submitting a final
249URB for a short packet.
250
251The usb_submit_urb() call modifies urb->interval to the implemented interval 234The usb_submit_urb() call modifies urb->interval to the implemented interval
252value that is less than or equal to the requested interval value. 235value that is less than or equal to the requested interval value.
236
237In Linux 2.6, unlike earlier versions, interrupt URBs are not automagically
238restarted when they complete. They end when the completion handler is
239called, just like other URBs. If you want an interrupt URB to be restarted,
240your completion handler must resubmit it.