Blame view
Documentation/SubmitChecklist
4.71 KB
dca22a63f docs-rst: add int... |
1 |
.. _submitchecklist: |
8b7ecb113 SubmitChecklist u... |
2 |
Linux Kernel patch submission checklist |
7a71a8095 Documentation/Sub... |
3 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
915a56d23 [PATCH] add Doc/S... |
4 |
|
e54695a59 [PATCH] checklist... |
5 6 |
Here are some basic things that developers should do if they want to see their kernel patch submissions accepted more quickly. |
915a56d23 [PATCH] add Doc/S... |
7 |
|
e54695a59 [PATCH] checklist... |
8 |
These are all above and beyond the documentation that is provided in |
dca22a63f docs-rst: add int... |
9 |
:ref:`Documentation/SubmittingPatches <submittingpatches>` |
7a71a8095 Documentation/Sub... |
10 |
and elsewhere regarding submitting Linux kernel patches. |
915a56d23 [PATCH] add Doc/S... |
11 |
|
7a71a8095 Documentation/Sub... |
12 |
1) If you use a facility then #include the file that defines/declares |
b5247c854 Documentation/Sub... |
13 14 |
that facility. Don't depend on other header files pulling in ones that you use. |
7a71a8095 Documentation/Sub... |
15 |
2) Builds cleanly: |
915a56d23 [PATCH] add Doc/S... |
16 |
|
7a71a8095 Documentation/Sub... |
17 18 |
a) with applicable or modified ``CONFIG`` options ``=y``, ``=m``, and ``=n``. No ``gcc`` warnings/errors, no linker warnings/errors. |
915a56d23 [PATCH] add Doc/S... |
19 |
|
7a71a8095 Documentation/Sub... |
20 |
b) Passes ``allnoconfig``, ``allmodconfig`` |
85f9642e3 Documentation: up... |
21 |
|
7a71a8095 Documentation/Sub... |
22 23 24 |
c) Builds successfully when using ``O=builddir`` 3) Builds on multiple CPU architectures by using local cross-compile tools |
7de3369c1 doc: SubmitCheckl... |
25 |
or some other build farm. |
915a56d23 [PATCH] add Doc/S... |
26 |
|
7a71a8095 Documentation/Sub... |
27 28 |
4) ppc64 is a good architecture for cross-compilation checking because it tends to use ``unsigned long`` for 64-bit quantities. |
915a56d23 [PATCH] add Doc/S... |
29 |
|
dca22a63f docs-rst: add int... |
30 31 |
5) Check your patch for general style as detailed in :ref:`Documentation/CodingStyle <codingstyle>`. |
7a71a8095 Documentation/Sub... |
32 33 |
Check for trivial violations with the patch style checker prior to submission (``scripts/checkpatch.pl``). |
df24d9a6a Documentation: pr... |
34 35 |
You should be able to justify all violations that remain in your patch. |
915a56d23 [PATCH] add Doc/S... |
36 |
|
7a71a8095 Documentation/Sub... |
37 |
6) Any new or modified ``CONFIG`` options don't muck up the config menu. |
915a56d23 [PATCH] add Doc/S... |
38 |
|
7a71a8095 Documentation/Sub... |
39 |
7) All new ``Kconfig`` options have help text. |
915a56d23 [PATCH] add Doc/S... |
40 |
|
7a71a8095 Documentation/Sub... |
41 |
8) Has been carefully reviewed with respect to relevant ``Kconfig`` |
e54695a59 [PATCH] checklist... |
42 43 |
combinations. This is very hard to get right with testing -- brainpower pays off here. |
915a56d23 [PATCH] add Doc/S... |
44 |
|
7a71a8095 Documentation/Sub... |
45 46 47 48 49 50 |
9) Check cleanly with sparse. 10) Use ``make checkstack`` and ``make namespacecheck`` and fix any problems that they find. .. note:: |
915a56d23 [PATCH] add Doc/S... |
51 |
|
7a71a8095 Documentation/Sub... |
52 53 54 |
``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. |
915a56d23 [PATCH] add Doc/S... |
55 |
|
dca22a63f docs-rst: add int... |
56 |
11) Include :ref:`kernel-doc <kernel_doc>` to document global kernel APIs. |
0cef67aa6 Documentation/Sub... |
57 58 59 |
(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. |
915a56d23 [PATCH] add Doc/S... |
60 |
|
7a71a8095 Documentation/Sub... |
61 62 63 64 65 |
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. |
915a56d23 [PATCH] add Doc/S... |
66 |
|
7a71a8095 Documentation/Sub... |
67 68 |
13) Has been build- and runtime tested with and without ``CONFIG_SMP`` and ``CONFIG_PREEMPT.`` |
915a56d23 [PATCH] add Doc/S... |
69 |
|
7a71a8095 Documentation/Sub... |
70 71 |
14) If the patch affects IO/Disk, etc: has been tested with and without ``CONFIG_LBDAF.`` |
915a56d23 [PATCH] add Doc/S... |
72 |
|
7a71a8095 Documentation/Sub... |
73 |
15) All codepaths have been exercised with all lockdep features enabled. |
915a56d23 [PATCH] add Doc/S... |
74 |
|
7a71a8095 Documentation/Sub... |
75 |
16) All new ``/proc`` entries are documented under ``Documentation/`` |
e54695a59 [PATCH] checklist... |
76 |
|
7a71a8095 Documentation/Sub... |
77 78 |
17) All new kernel boot parameters are documented in ``Documentation/kernel-parameters.txt``. |
e54695a59 [PATCH] checklist... |
79 |
|
7a71a8095 Documentation/Sub... |
80 |
18) All new module parameters are documented with ``MODULE_PARM_DESC()`` |
1a036cdd9 [PATCH] Mention D... |
81 |
|
7a71a8095 Documentation/Sub... |
82 83 |
19) All new userspace interfaces are documented in ``Documentation/ABI/``. See ``Documentation/ABI/README`` for more information. |
1d992ce90 SubmitChecklist: ... |
84 85 |
Patches that change userspace interfaces should be CCed to linux-api@vger.kernel.org. |
ce584f913 [PATCH] submit ch... |
86 |
|
7a71a8095 Documentation/Sub... |
87 |
20) Check that it all passes ``make headers_check``. |
0dd4e5b8e [PATCH] submit ch... |
88 |
|
7a71a8095 Documentation/Sub... |
89 90 |
21) Has been checked with injection of at least slab and page-allocation failures. See ``Documentation/fault-injection/``. |
0dd4e5b8e [PATCH] submit ch... |
91 92 93 |
If the new code is substantial, addition of subsystem-specific fault injection might be appropriate. |
a517b9f9f [PATCH] SubmitChe... |
94 |
|
7a71a8095 Documentation/Sub... |
95 96 97 |
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". |
244474b21 [PATCH] add -mm t... |
98 |
|
7a71a8095 Documentation/Sub... |
99 |
23) Tested after it has been merged into the -mm patchset to make sure |
244474b21 [PATCH] add -mm t... |
100 101 |
that it still works with all of the other queued patches and various changes in the VM, VFS, and other subsystems. |
8033fe65a documentation: ex... |
102 |
|
7a71a8095 Documentation/Sub... |
103 104 105 |
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. |
7de3369c1 doc: SubmitCheckl... |
106 |
|
7a71a8095 Documentation/Sub... |
107 108 |
25) If any ioctl's are added by the patch, then also update ``Documentation/ioctl/ioctl-number.txt``. |
85f9642e3 Documentation: up... |
109 |
|
7a71a8095 Documentation/Sub... |
110 111 112 113 |
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 |
85f9642e3 Documentation: up... |
114 |
same time, just various/random combinations of them]: |
7a71a8095 Documentation/Sub... |
115 116 |
``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``). |