submit-checklist.rst 4.7 KB
Newer Older
1 2
.. _submitchecklist:

3
Linux Kernel patch submission checklist
4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
R
Randy Dunlap 已提交
5

A
Andrew Morton 已提交
6 7
Here are some basic things that developers should do if they want to see their
kernel patch submissions accepted more quickly.
R
Randy Dunlap 已提交
8

A
Andrew Morton 已提交
9
These are all above and beyond the documentation that is provided in
10
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
11
and elsewhere regarding submitting Linux kernel patches.
R
Randy Dunlap 已提交
12 13


14
1) If you use a facility then #include the file that defines/declares
15 16 17
   that facility.  Don't depend on other header files pulling in ones
   that you use.

18
2) Builds cleanly:
R
Randy Dunlap 已提交
19

20 21
  a) with applicable or modified ``CONFIG`` options ``=y``, ``=m``, and
     ``=n``.  No ``gcc`` warnings/errors, no linker warnings/errors.
R
Randy Dunlap 已提交
22

23
  b) Passes ``allnoconfig``, ``allmodconfig``
24

25 26 27
  c) Builds successfully when using ``O=builddir``

3) Builds on multiple CPU architectures by using local cross-compile tools
28
   or some other build farm.
R
Randy Dunlap 已提交
29

30 31
4) ppc64 is a good architecture for cross-compilation checking because it
   tends to use ``unsigned long`` for 64-bit quantities.
R
Randy Dunlap 已提交
32

33
5) Check your patch for general style as detailed in
34
   :ref:`Documentation/process/coding-style.rst <codingstyle>`.
35 36
   Check for trivial violations with the patch style checker prior to
   submission (``scripts/checkpatch.pl``).
37 38
   You should be able to justify all violations that remain in
   your patch.
R
Randy Dunlap 已提交
39

40
6) Any new or modified ``CONFIG`` options don't muck up the config menu.
R
Randy Dunlap 已提交
41

42
7) All new ``Kconfig`` options have help text.
R
Randy Dunlap 已提交
43

44
8) Has been carefully reviewed with respect to relevant ``Kconfig``
A
Andrew Morton 已提交
45 46
   combinations.  This is very hard to get right with testing -- brainpower
   pays off here.
R
Randy Dunlap 已提交
47

48 49 50 51 52 53
9) Check cleanly with sparse.

10) Use ``make checkstack`` and ``make namespacecheck`` and fix any problems
    that they find.

    .. note::
R
Randy Dunlap 已提交
54

55 56 57
       ``checkstack`` does not point out problems explicitly,
       but any one function that uses more than 512 bytes on the stack is a
       candidate for change.
R
Randy Dunlap 已提交
58

59
11) Include :ref:`kernel-doc <kernel_doc>` to document global  kernel APIs.
60 61 62
    (Not required for static functions, but OK there also.) Use
    ``make htmldocs`` or ``make pdfdocs`` to check the
    :ref:`kernel-doc <kernel_doc>` and fix any issues.
R
Randy Dunlap 已提交
63

64 65 66 67 68
12) Has been tested with ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
    ``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``,
    ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``,
    ``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` all
    simultaneously enabled.
R
Randy Dunlap 已提交
69

70 71
13) Has been build- and runtime tested with and without ``CONFIG_SMP`` and
    ``CONFIG_PREEMPT.``
R
Randy Dunlap 已提交
72

73 74
14) If the patch affects IO/Disk, etc: has been tested with and without
    ``CONFIG_LBDAF.``
R
Randy Dunlap 已提交
75

76
15) All codepaths have been exercised with all lockdep features enabled.
R
Randy Dunlap 已提交
77

78
16) All new ``/proc`` entries are documented under ``Documentation/``
A
Andrew Morton 已提交
79

80
17) All new kernel boot parameters are documented in
81
    ``Documentation/admin-guide/kernel-parameters.rst``.
A
Andrew Morton 已提交
82

83
18) All new module parameters are documented with ``MODULE_PARM_DESC()``
84

85 86
19) All new userspace interfaces are documented in ``Documentation/ABI/``.
    See ``Documentation/ABI/README`` for more information.
87 88
    Patches that change userspace interfaces should be CCed to
    linux-api@vger.kernel.org.
89

90
20) Check that it all passes ``make headers_check``.
A
Andrew Morton 已提交
91

92 93
21) Has been checked with injection of at least slab and page-allocation
    failures.  See ``Documentation/fault-injection/``.
A
Andrew Morton 已提交
94 95 96

    If the new code is substantial, addition of subsystem-specific fault
    injection might be appropriate.
A
Andrew Morton 已提交
97

98 99 100
22) Newly-added code has been compiled with ``gcc -W`` (use
    ``make EXTRA_CFLAGS=-W``).  This will generate lots of noise, but is good
    for finding bugs like "warning: comparison between signed and unsigned".
101

102
23) Tested after it has been merged into the -mm patchset to make sure
103 104
    that it still works with all of the other queued patches and various
    changes in the VM, VFS, and other subsystems.
105

106 107 108
24) All memory barriers {e.g., ``barrier()``, ``rmb()``, ``wmb()``} need a
    comment in the source code that explains the logic of what they are doing
    and why.
109

110 111
25) If any ioctl's are added by the patch, then also update
    ``Documentation/ioctl/ioctl-number.txt``.
112

113 114 115 116
26) If your modified source code depends on or uses any of the kernel
    APIs or features that are related to the following ``Kconfig`` symbols,
    then test multiple builds with the related ``Kconfig`` symbols disabled
    and/or ``=m`` (if that option is available) [not all of these at the
117 118
    same time, just various/random combinations of them]:

119 120
    ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``, ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
    ``CONFIG_NET``, ``CONFIG_INET=n`` (but latter with ``CONFIG_NET=y``).