~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/process/submit-checklist.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/process/submit-checklist.rst (Architecture sparc) and /Documentation/process/submit-checklist.rst (Architecture i386)


  1 .. _submitchecklist:                                1 .. _submitchecklist:
  2                                                     2 
  3 =======================================             3 =======================================
  4 Linux Kernel patch submission checklist             4 Linux Kernel patch submission checklist
  5 =======================================             5 =======================================
  6                                                     6 
  7 Here are some basic things that developers sho      7 Here are some basic things that developers should do if they want to see their
  8 kernel patch submissions accepted more quickly      8 kernel patch submissions accepted more quickly.
  9                                                     9 
 10 These are all above and beyond the documentati     10 These are all above and beyond the documentation that is provided in
 11 :ref:`Documentation/process/submitting-patches     11 :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
 12 and elsewhere regarding submitting Linux kerne     12 and elsewhere regarding submitting Linux kernel patches.
 13                                                    13 
 14 Review your code                                   14 Review your code
 15 ================                                   15 ================
 16                                                    16 
 17 1) If you use a facility then #include the fil     17 1) If you use a facility then #include the file that defines/declares
 18    that facility.  Don't depend on other heade     18    that facility.  Don't depend on other header files pulling in ones
 19    that you use.                                   19    that you use.
 20                                                    20 
 21 2) Check your patch for general style as detai     21 2) Check your patch for general style as detailed in
 22    :ref:`Documentation/process/coding-style.rs     22    :ref:`Documentation/process/coding-style.rst <codingstyle>`.
 23                                                    23 
 24 3) All memory barriers {e.g., ``barrier()``, `     24 3) All memory barriers {e.g., ``barrier()``, ``rmb()``, ``wmb()``} need a
 25    comment in the source code that explains th     25    comment in the source code that explains the logic of what they are doing
 26    and why.                                        26    and why.
 27                                                    27 
 28 Review Kconfig changes                             28 Review Kconfig changes
 29 ======================                             29 ======================
 30                                                    30 
 31 1) Any new or modified ``CONFIG`` options do n     31 1) Any new or modified ``CONFIG`` options do not muck up the config menu and
 32    default to off unless they meet the excepti     32    default to off unless they meet the exception criteria documented in
 33    ``Documentation/kbuild/kconfig-language.rst     33    ``Documentation/kbuild/kconfig-language.rst`` Menu attributes: default value.
 34                                                    34 
 35 2) All new ``Kconfig`` options have help text.     35 2) All new ``Kconfig`` options have help text.
 36                                                    36 
 37 3) Has been carefully reviewed with respect to     37 3) Has been carefully reviewed with respect to relevant ``Kconfig``
 38    combinations.  This is very hard to get rig     38    combinations.  This is very hard to get right with testing---brainpower
 39    pays off here.                                  39    pays off here.
 40                                                    40 
 41 Provide documentation                              41 Provide documentation
 42 =====================                              42 =====================
 43                                                    43 
 44 1) Include :ref:`kernel-doc <kernel_doc>` to d     44 1) Include :ref:`kernel-doc <kernel_doc>` to document global kernel APIs.
 45    (Not required for static functions, but OK      45    (Not required for static functions, but OK there also.)
 46                                                    46 
 47 2) All new ``/proc`` entries are documented un     47 2) All new ``/proc`` entries are documented under ``Documentation/``
 48                                                    48 
 49 3) All new kernel boot parameters are document     49 3) All new kernel boot parameters are documented in
 50    ``Documentation/admin-guide/kernel-paramete     50    ``Documentation/admin-guide/kernel-parameters.rst``.
 51                                                    51 
 52 4) All new module parameters are documented wi     52 4) All new module parameters are documented with ``MODULE_PARM_DESC()``
 53                                                    53 
 54 5) All new userspace interfaces are documented     54 5) All new userspace interfaces are documented in ``Documentation/ABI/``.
 55    See ``Documentation/ABI/README`` for more i     55    See ``Documentation/ABI/README`` for more information.
 56    Patches that change userspace interfaces sh     56    Patches that change userspace interfaces should be CCed to
 57    linux-api@vger.kernel.org.                      57    linux-api@vger.kernel.org.
 58                                                    58 
 59 6) If any ioctl's are added by the patch, then     59 6) If any ioctl's are added by the patch, then also update
 60    ``Documentation/userspace-api/ioctl/ioctl-n     60    ``Documentation/userspace-api/ioctl/ioctl-number.rst``.
 61                                                    61 
 62 Check your code with tools                         62 Check your code with tools
 63 ==========================                         63 ==========================
 64                                                    64 
 65 1) Check for trivial violations with the patch     65 1) Check for trivial violations with the patch style checker prior to
 66    submission (``scripts/checkpatch.pl``).         66    submission (``scripts/checkpatch.pl``).
 67    You should be able to justify all violation     67    You should be able to justify all violations that remain in
 68    your patch.                                     68    your patch.
 69                                                    69 
 70 2) Check cleanly with sparse.                      70 2) Check cleanly with sparse.
 71                                                    71 
 72 3) Use ``make checkstack`` and fix any problem     72 3) Use ``make checkstack`` and fix any problems that it finds.
 73    Note that ``checkstack`` does not point out     73    Note that ``checkstack`` does not point out problems explicitly,
 74    but any one function that uses more than 51     74    but any one function that uses more than 512 bytes on the stack is a
 75    candidate for change.                           75    candidate for change.
 76                                                    76 
 77 Build your code                                    77 Build your code
 78 ===============                                    78 ===============
 79                                                    79 
 80 1) Builds cleanly:                                 80 1) Builds cleanly:
 81                                                    81 
 82   a) with applicable or modified ``CONFIG`` op     82   a) with applicable or modified ``CONFIG`` options ``=y``, ``=m``, and
 83      ``=n``.  No ``gcc`` warnings/errors, no l     83      ``=n``.  No ``gcc`` warnings/errors, no linker warnings/errors.
 84                                                    84 
 85   b) Passes ``allnoconfig``, ``allmodconfig``      85   b) Passes ``allnoconfig``, ``allmodconfig``
 86                                                    86 
 87   c) Builds successfully when using ``O=buildd     87   c) Builds successfully when using ``O=builddir``
 88                                                    88 
 89   d) Any Documentation/ changes build successf     89   d) Any Documentation/ changes build successfully without new warnings/errors.
 90      Use ``make htmldocs`` or ``make pdfdocs``     90      Use ``make htmldocs`` or ``make pdfdocs`` to check the build and
 91      fix any issues.                               91      fix any issues.
 92                                                    92 
 93 2) Builds on multiple CPU architectures by usi     93 2) Builds on multiple CPU architectures by using local cross-compile tools
 94    or some other build farm. Note that ppc64 i     94    or some other build farm. Note that ppc64 is a good architecture for
 95    cross-compilation checking because it tends     95    cross-compilation checking because it tends to use ``unsigned long`` for
 96    64-bit quantities.                              96    64-bit quantities.
 97                                                    97 
 98 3) Newly-added code has been compiled with ``g     98 3) Newly-added code has been compiled with ``gcc -W`` (use
 99    ``make KCFLAGS=-W``).  This will generate l     99    ``make KCFLAGS=-W``).  This will generate lots of noise, but is good
100    for finding bugs like "warning: comparison     100    for finding bugs like "warning: comparison between signed and unsigned".
101                                                   101 
102 4) If your modified source code depends on or     102 4) If your modified source code depends on or uses any of the kernel
103    APIs or features that are related to the fo    103    APIs or features that are related to the following ``Kconfig`` symbols,
104    then test multiple builds with the related     104    then test multiple builds with the related ``Kconfig`` symbols disabled
105    and/or ``=m`` (if that option is available)    105    and/or ``=m`` (if that option is available) [not all of these at the
106    same time, just various/random combinations    106    same time, just various/random combinations of them]:
107                                                   107 
108    ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_    108    ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``,
109    ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_    109    ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
110    ``CONFIG_NET``, ``CONFIG_INET=n`` (but latt    110    ``CONFIG_NET``, ``CONFIG_INET=n`` (but latter with ``CONFIG_NET=y``).
111                                                   111 
112 Test your code                                    112 Test your code
113 ==============                                    113 ==============
114                                                   114 
115 1) Has been tested with ``CONFIG_PREEMPT``, ``    115 1) Has been tested with ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
116    ``CONFIG_SLUB_DEBUG``, ``CONFIG_DEBUG_PAGEA    116    ``CONFIG_SLUB_DEBUG``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``,
117    ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_A    117    ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``,
118    ``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJ    118    ``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` all
119    simultaneously enabled.                        119    simultaneously enabled.
120                                                   120 
121 2) Has been build- and runtime tested with and    121 2) Has been build- and runtime tested with and without ``CONFIG_SMP`` and
122    ``CONFIG_PREEMPT.``                            122    ``CONFIG_PREEMPT.``
123                                                   123 
124 3) All codepaths have been exercised with all     124 3) All codepaths have been exercised with all lockdep features enabled.
125                                                   125 
126 4) Has been checked with injection of at least    126 4) Has been checked with injection of at least slab and page-allocation
127    failures.  See ``Documentation/fault-inject    127    failures.  See ``Documentation/fault-injection/``.
128    If the new code is substantial, addition of    128    If the new code is substantial, addition of subsystem-specific fault
129    injection might be appropriate.                129    injection might be appropriate.
130                                                   130 
131 5) Tested with the most recent tag of linux-ne    131 5) Tested with the most recent tag of linux-next to make sure that it still
132    works with all of the other queued patches     132    works with all of the other queued patches and various changes in the VM,
133    VFS, and other subsystems.                     133    VFS, and other subsystems.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php