SubmitChecklist 4.3 KB
Newer Older
1
Linux Kernel patch submission checklist
R
Randy Dunlap 已提交
2 3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

A
Andrew Morton 已提交
7 8 9
These are all above and beyond the documentation that is provided in
Documentation/SubmittingPatches and elsewhere regarding submitting Linux
kernel patches.
R
Randy Dunlap 已提交
10 11


12 13 14 15 16
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
A
Andrew Morton 已提交
17
   =n.  No gcc warnings/errors, no linker warnings/errors.
R
Randy Dunlap 已提交
18

19
2b: Passes allnoconfig, allmodconfig
R
Randy Dunlap 已提交
20

21 22
2c: Builds successfully when using O=builddir

A
Andrew Morton 已提交
23
3: Builds on multiple CPU architectures by using local cross-compile tools
24
   or some other build farm.
R
Randy Dunlap 已提交
25

A
Andrew Morton 已提交
26 27
4: ppc64 is a good architecture for cross-compilation checking because it
   tends to use `unsigned long' for 64-bit quantities.
R
Randy Dunlap 已提交
28

29 30 31 32 33
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.
R
Randy Dunlap 已提交
34

A
Andrew Morton 已提交
35
6: Any new or modified CONFIG options don't muck up the config menu.
R
Randy Dunlap 已提交
36

A
Andrew Morton 已提交
37
7: All new Kconfig options have help text.
R
Randy Dunlap 已提交
38

A
Andrew Morton 已提交
39 40 41
8: Has been carefully reviewed with respect to relevant Kconfig
   combinations.  This is very hard to get right with testing -- brainpower
   pays off here.
R
Randy Dunlap 已提交
42

A
Andrew Morton 已提交
43
9: Check cleanly with sparse.
R
Randy Dunlap 已提交
44

A
Andrew Morton 已提交
45 46 47 48
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.
R
Randy Dunlap 已提交
49

A
Andrew Morton 已提交
50 51 52
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.
R
Randy Dunlap 已提交
53

A
Andrew Morton 已提交
54 55 56 57
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.
R
Randy Dunlap 已提交
58

A
Andrew Morton 已提交
59 60
13: Has been build- and runtime tested with and without CONFIG_SMP and
    CONFIG_PREEMPT.
R
Randy Dunlap 已提交
61

A
Andrew Morton 已提交
62
14: If the patch affects IO/Disk, etc: has been tested with and without
63
    CONFIG_LBDAF.
R
Randy Dunlap 已提交
64

A
Andrew Morton 已提交
65
15: All codepaths have been exercised with all lockdep features enabled.
R
Randy Dunlap 已提交
66

A
Andrew Morton 已提交
67 68 69 70 71 72
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()
73 74 75

19: All new userspace interfaces are documented in Documentation/ABI/.
    See Documentation/ABI/README for more information.
76 77
    Patches that change userspace interfaces should be CCed to
    linux-api@vger.kernel.org.
78 79

20: Check that it all passes `make headers_check'.
A
Andrew Morton 已提交
80 81

21: Has been checked with injection of at least slab and page-allocation
82
    failures.  See Documentation/fault-injection/.
A
Andrew Morton 已提交
83 84 85

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

A
Andrew Morton 已提交
87 88 89
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".
90 91 92 93

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.
94 95 96

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.
97 98 99

25: If any ioctl's are added by the patch, then also update
    Documentation/ioctl/ioctl-number.txt.
100 101 102 103 104 105 106 107 108 109

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
    same time, just various/random combinations of them]:

    CONFIG_SMP, CONFIG_SYSFS, CONFIG_PROC_FS, CONFIG_INPUT, CONFIG_PCI,
    CONFIG_BLOCK, CONFIG_PM, CONFIG_HOTPLUG, CONFIG_MAGIC_SYSRQ,
    CONFIG_NET, CONFIG_INET=n (but latter with CONFIG_NET=y)