Merge tag '6.4-rc-smb3-client-fixes-part1' of git://git.samba.org/sfrench/cifs-2.6
[linux-block.git] / Documentation / process / submit-checklist.rst
CommitLineData
dca22a63
MCC
1.. _submitchecklist:
2
8b7ecb11 3Linux Kernel patch submission checklist
7a71a809 4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
915a56d2 5
e54695a5
AM
6Here are some basic things that developers should do if they want to see their
7kernel patch submissions accepted more quickly.
915a56d2 8
e54695a5 9These are all above and beyond the documentation that is provided in
8c27ceff 10:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
7a71a809 11and elsewhere regarding submitting Linux kernel patches.
915a56d2
RD
12
13
7a71a809 141) If you use a facility then #include the file that defines/declares
b5247c85
RD
15 that facility. Don't depend on other header files pulling in ones
16 that you use.
17
7a71a809 182) Builds cleanly:
915a56d2 19
7a71a809
MCC
20 a) with applicable or modified ``CONFIG`` options ``=y``, ``=m``, and
21 ``=n``. No ``gcc`` warnings/errors, no linker warnings/errors.
915a56d2 22
7a71a809 23 b) Passes ``allnoconfig``, ``allmodconfig``
85f9642e 24
7a71a809
MCC
25 c) Builds successfully when using ``O=builddir``
26
9334e34f
RD
27 d) Any Documentation/ changes build successfully without new warnings/errors.
28 Use ``make htmldocs`` or ``make pdfdocs`` to check the build and
29 fix any issues.
30
7a71a809 313) Builds on multiple CPU architectures by using local cross-compile tools
7de3369c 32 or some other build farm.
915a56d2 33
7a71a809
MCC
344) ppc64 is a good architecture for cross-compilation checking because it
35 tends to use ``unsigned long`` for 64-bit quantities.
915a56d2 36
dca22a63 375) Check your patch for general style as detailed in
8c27ceff 38 :ref:`Documentation/process/coding-style.rst <codingstyle>`.
7a71a809
MCC
39 Check for trivial violations with the patch style checker prior to
40 submission (``scripts/checkpatch.pl``).
df24d9a6
BF
41 You should be able to justify all violations that remain in
42 your patch.
915a56d2 43
241f67c8 446) Any new or modified ``CONFIG`` options do not muck up the config menu and
012e93cb 45 default to off unless they meet the exception criteria documented in
cd238eff 46 ``Documentation/kbuild/kconfig-language.rst`` Menu attributes: default value.
915a56d2 47
7a71a809 487) All new ``Kconfig`` options have help text.
915a56d2 49
7a71a809 508) Has been carefully reviewed with respect to relevant ``Kconfig``
e54695a5
AM
51 combinations. This is very hard to get right with testing -- brainpower
52 pays off here.
915a56d2 53
7a71a809
MCC
549) Check cleanly with sparse.
55
7dfbea4c 5610) Use ``make checkstack`` and fix any problems that it finds.
7a71a809
MCC
57
58 .. note::
915a56d2 59
7a71a809
MCC
60 ``checkstack`` does not point out problems explicitly,
61 but any one function that uses more than 512 bytes on the stack is a
62 candidate for change.
915a56d2 63
dca22a63 6411) Include :ref:`kernel-doc <kernel_doc>` to document global kernel APIs.
0cef67aa
MCC
65 (Not required for static functions, but OK there also.) Use
66 ``make htmldocs`` or ``make pdfdocs`` to check the
67 :ref:`kernel-doc <kernel_doc>` and fix any issues.
915a56d2 68
7a71a809
MCC
6912) Has been tested with ``CONFIG_PREEMPT``, ``CONFIG_DEBUG_PREEMPT``,
70 ``CONFIG_DEBUG_SLAB``, ``CONFIG_DEBUG_PAGEALLOC``, ``CONFIG_DEBUG_MUTEXES``,
71 ``CONFIG_DEBUG_SPINLOCK``, ``CONFIG_DEBUG_ATOMIC_SLEEP``,
72 ``CONFIG_PROVE_RCU`` and ``CONFIG_DEBUG_OBJECTS_RCU_HEAD`` all
73 simultaneously enabled.
915a56d2 74
7a71a809
MCC
7513) Has been build- and runtime tested with and without ``CONFIG_SMP`` and
76 ``CONFIG_PREEMPT.``
915a56d2 77
27ab873e 7814) All codepaths have been exercised with all lockdep features enabled.
915a56d2 79
27ab873e 8015) All new ``/proc`` entries are documented under ``Documentation/``
915a56d2 81
27ab873e 8216) All new kernel boot parameters are documented in
8c27ceff 83 ``Documentation/admin-guide/kernel-parameters.rst``.
e54695a5 84
27ab873e 8517) All new module parameters are documented with ``MODULE_PARM_DESC()``
1a036cdd 86
27ab873e 8718) All new userspace interfaces are documented in ``Documentation/ABI/``.
7a71a809 88 See ``Documentation/ABI/README`` for more information.
1d992ce9
MK
89 Patches that change userspace interfaces should be CCed to
90 linux-api@vger.kernel.org.
ce584f91 91
1a63f9cc 9219) Has been checked with injection of at least slab and page-allocation
7a71a809 93 failures. See ``Documentation/fault-injection/``.
0dd4e5b8
AM
94
95 If the new code is substantial, addition of subsystem-specific fault
96 injection might be appropriate.
a517b9f9 97
1a63f9cc 9820) Newly-added code has been compiled with ``gcc -W`` (use
163ba35f 99 ``make KCFLAGS=-W``). This will generate lots of noise, but is good
7a71a809 100 for finding bugs like "warning: comparison between signed and unsigned".
244474b2 101
1a63f9cc 10221) Tested after it has been merged into the -mm patchset to make sure
244474b2
RD
103 that it still works with all of the other queued patches and various
104 changes in the VM, VFS, and other subsystems.
8033fe65 105
1a63f9cc 10622) All memory barriers {e.g., ``barrier()``, ``rmb()``, ``wmb()``} need a
7a71a809
MCC
107 comment in the source code that explains the logic of what they are doing
108 and why.
7de3369c 109
1a63f9cc 11023) If any ioctl's are added by the patch, then also update
72ef5e52 111 ``Documentation/userspace-api/ioctl/ioctl-number.rst``.
85f9642e 112
1a63f9cc 11324) If your modified source code depends on or uses any of the kernel
7a71a809
MCC
114 APIs or features that are related to the following ``Kconfig`` symbols,
115 then test multiple builds with the related ``Kconfig`` symbols disabled
116 and/or ``=m`` (if that option is available) [not all of these at the
85f9642e
RD
117 same time, just various/random combinations of them]:
118
7a71a809
MCC
119 ``CONFIG_SMP``, ``CONFIG_SYSFS``, ``CONFIG_PROC_FS``, ``CONFIG_INPUT``, ``CONFIG_PCI``, ``CONFIG_BLOCK``, ``CONFIG_PM``, ``CONFIG_MAGIC_SYSRQ``,
120 ``CONFIG_NET``, ``CONFIG_INET=n`` (but latter with ``CONFIG_NET=y``).