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