On 16/02/2024 15:58, Jonathan Corbet wrote:
Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> writes:
On Fri, Feb 16, 2024 at 10:28:39AM +0200, Jani Nikula wrote:
rst basically allows any order of the heading underlines, and their
relative hierarchy is determined by how they show up in each document,
it's not specified by rst. However, it would be much easier for everyone
if all the kernel documents followed the same style.
Agreed, someone should pick a style and sweep the whole directory and
sync them up to the agreed formatting. :)
Somebody did pick a style, it's in Documentation/doc-guide/sphinx.rst :)
I have a (very long and ugly) script that can fix these up to a
consistent style, the attached patch is the result of running it on
Documentation/process/ only.
I've done builds before and after the patch and diffed the resulting
HTML files, they show no difference. (HOWEVER, you do need a 'make
cleandocs' in between, as it seems doing 'make htmldocs; find
Documentation | xargs touch; make htmldocs' is going to change the
generated HTML for the sidebar -- another issue to look into at some
point, I guess; maybe it's specific to the Sphinx version I used here,
4.3.2.)
The script will leave alone any file that it doesn't quite understand
(e.g. for a lot of the translations there are way more underlines than
characters in the heading and it doesn't match up with the byte count
either).
Anyway, the question is: Is this worth doing in the first place, or is
it just churn? I assume just after -rc1 would be the ideal time to
submit these to avoid conflicts.
Vegard
From e19b7143843b0935cb53f55e8a386f8bac230de6 Mon Sep 17 00:00:00 2001
From: Vegard Nossum <vegard.nossum@xxxxxxxxxx>
Date: Fri, 16 Feb 2024 21:58:09 +0100
Subject: [PATCH] docs: process: make reST headings consistent
Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxxx>
---
Documentation/process/1.Intro.rst | 11 ++--
Documentation/process/2.Process.rst | 17 +++---
Documentation/process/3.Early-stage.rst | 11 ++--
Documentation/process/5.Posting.rst | 11 ++--
Documentation/process/7.AdvancedTopics.rst | 5 +-
Documentation/process/8.Conclusion.rst | 2 +
Documentation/process/adding-syscalls.rst | 29 +++++-----
Documentation/process/applying-patches.rst | 7 +--
Documentation/process/botching-up-ioctls.rst | 12 ++---
Documentation/process/clang-format.rst | 9 ++--
.../code-of-conduct-interpretation.rst | 9 ++--
Documentation/process/code-of-conduct.rst | 3 +-
Documentation/process/deprecated.rst | 22 ++++----
Documentation/process/development-process.rst | 1 +
.../process/handling-regressions.rst | 3 +-
Documentation/process/howto.rst | 35 ++++++------
Documentation/process/index.rst | 12 ++---
Documentation/process/kernel-docs.rst | 9 ++--
.../process/kernel-driver-statement.rst | 3 +-
.../process/kernel-enforcement-statement.rst | 3 +-
Documentation/process/license-rules.rst | 7 +--
Documentation/process/magic-number.rst | 1 +
.../process/maintainer-handbooks.rst | 1 +
Documentation/process/maintainer-kvm-x86.rst | 51 +++++++++---------
Documentation/process/maintainer-netdev.rst | 54 +++++++++----------
.../process/maintainer-soc-clean-dts.rst | 4 +-
Documentation/process/maintainer-soc.rst | 14 ++---
Documentation/process/management-style.rst | 13 ++---
.../process/programming-language.rst | 5 +-
.../process/researcher-guidelines.rst | 3 +-
Documentation/process/security-bugs.rst | 11 ++--
Documentation/process/submit-checklist.rst | 3 +-
.../process/volatile-considered-harmful.rst | 3 +-
33 files changed, 206 insertions(+), 178 deletions(-)
diff --git a/Documentation/process/1.Intro.rst b/Documentation/process/1.Intro.rst
index c3d0270bbfb3..05f59d742823 100644
--- a/Documentation/process/1.Intro.rst
+++ b/Documentation/process/1.Intro.rst
@@ -1,10 +1,11 @@
.. _development_process_intro:
+============
Introduction
============
Executive summary
------------------
+=================
The rest of this section covers the scope of the kernel development process
and the kinds of frustrations that developers and their employers can
@@ -48,7 +49,7 @@ managing patches with git and reviewing patches posted by others.
for more information on kernel development.
What this document is about
----------------------------
+===========================
The Linux kernel, at over 8 million lines of code and well over 1000
contributors to each release, is one of the largest and most active free
@@ -103,7 +104,7 @@ better; the following text should help you - or those who work for you -
join our community.
Credits
--------
+=======
This document was written by Jonathan Corbet, corbet@xxxxxxx. It has been
improved by comments from Johannes Berg, James Berry, Alex Chiang, Roland
@@ -115,7 +116,7 @@ This work was supported by the Linux Foundation; thanks especially to
Amanda McPherson, who saw the value of this effort and made it all happen.
The importance of getting code into the mainline
-------------------------------------------------
+================================================
Some companies and developers occasionally wonder why they should bother
learning how to work with the kernel community and get their code into the
@@ -228,7 +229,7 @@ point, vendors whose code is in the mainline and well maintained will be
much better positioned to get the new product ready for market quickly.
Licensing
----------
+=========
Code is contributed to the Linux kernel under a number of licenses, but all
code must be compatible with version 2 of the GNU General Public License
diff --git a/Documentation/process/2.Process.rst b/Documentation/process/2.Process.rst
index 613a01da4717..d178c1b74514 100644
--- a/Documentation/process/2.Process.rst
+++ b/Documentation/process/2.Process.rst
@@ -1,5 +1,6 @@
.. _development_process:
+=================================
How the development process works
=================================
@@ -11,7 +12,7 @@ processes to keep development happening smoothly. A solid understanding of
how the process works is required in order to be an effective part of it.
The big picture
----------------
+===============
The kernel developers use a loosely time-based release process, with a new
major kernel release happening every two or three months. The recent
@@ -138,7 +139,7 @@ release.
The lifecycle of a patch
-------------------------
+========================
Patches do not go directly from the developer's keyboard into the mainline
kernel. There is, instead, a somewhat involved (if somewhat informal)
@@ -207,7 +208,7 @@ step. This approach invariably leads to frustration for everybody
involved.
How patches get into the Kernel
--------------------------------
+===============================
There is exactly one person who can merge patches into the mainline kernel
repository: Linus Torvalds. But, for example, of the over 9,500 patches
@@ -254,7 +255,7 @@ normally the right way to go.
Next trees
-----------
+==========
The chain of subsystem trees guides the flow of patches into the kernel,
but it also raises an interesting question: what if somebody wants to look
@@ -307,7 +308,7 @@ their way into linux-next some time before the merge window opens.
Staging trees
--------------
+=============
The kernel source tree contains the drivers/staging/ directory, where
many sub-directories for drivers or filesystems that are on their way to
@@ -336,7 +337,7 @@ a proper mainline driver.
Tools
------
+=====
As can be seen from the above text, the kernel development process depends
heavily on the ability to herd collections of patches in various
@@ -383,7 +384,7 @@ quilt is the best tool for the job.
Mailing lists
--------------
+=============
A great deal of Linux kernel development work is done by way of mailing
lists. It is hard to be a fully-functioning member of the community
@@ -453,7 +454,7 @@ in the MAINTAINERS file packaged with the kernel source.
Getting started with Kernel development
----------------------------------------
+=======================================
Questions about how to get started with the kernel development process are
common - from both individuals and companies. Equally common are missteps
diff --git a/Documentation/process/3.Early-stage.rst b/Documentation/process/3.Early-stage.rst
index 894a920041c6..57c9690f2f02 100644
--- a/Documentation/process/3.Early-stage.rst
+++ b/Documentation/process/3.Early-stage.rst
@@ -1,5 +1,6 @@
.. _development_early_stage:
+====================
Early-stage planning
====================
@@ -11,7 +12,7 @@ communication can save far more time later on.
Specifying the problem
-----------------------
+======================
Like any engineering project, a successful kernel enhancement starts with a
clear description of the problem to be solved. In some cases, this step is
@@ -69,7 +70,7 @@ Only then does it make sense to start considering possible solutions.
Early discussion
-----------------
+================
When planning a kernel development project, it makes great sense to hold
discussions with the community before launching into implementation. Early
@@ -123,7 +124,7 @@ avoided with some early discussion with the kernel developers.
Who do you talk to?
--------------------
+===================
When developers decide to take their plans public, the next question will
be: where do we start? The answer is to find the right mailing list(s) and
@@ -165,7 +166,7 @@ track down a maintainer for a specific piece of code.
When to post?
--------------
+=============
If possible, posting your plans during the early stages can only be
helpful. Describe the problem being solved and any plans that have been
@@ -190,7 +191,7 @@ community informed as you go.
Getting official buy-in
------------------------
+=======================
If your work is being done in a corporate environment - as most Linux
kernel work is - you must, obviously, have permission from suitably
diff --git a/Documentation/process/5.Posting.rst b/Documentation/process/5.Posting.rst
index de4edd42d5c0..42a6a029c173 100644
--- a/Documentation/process/5.Posting.rst
+++ b/Documentation/process/5.Posting.rst
@@ -1,5 +1,6 @@
.. _development_posting:
+===============
Posting patches
===============
@@ -15,7 +16,7 @@ and :ref:`Documentation/process/submit-checklist.rst <submitchecklist>`.
When to post
-------------
+============
There is a constant temptation to avoid posting patches before they are
completely "ready." For simple patches, that is not a problem. If the
@@ -32,7 +33,7 @@ with the idea that they can help you drive the work in the right direction.
Before creating patches
------------------------
+=======================
There are a number of things which should be done before you consider
sending patches to the development community. These include:
@@ -58,7 +59,7 @@ always pays back the effort in short order.
Patch preparation
------------------
+=================
The preparation of patches for posting can be a surprising amount of work,
but, once again, attempting to save time here is not generally advisable
@@ -129,7 +130,7 @@ done. When done properly, though, it is time well spent.
Patch formatting and changelogs
--------------------------------
+===============================
So now you have a perfect series of patches for posting, but the work is
not done quite yet. Each patch needs to be formatted into a message which
@@ -276,7 +277,7 @@ the bug was reported in private.
Sending the patch
------------------
+=================
Before you mail your patches, there are a couple of other things you should
take care of:
diff --git a/Documentation/process/7.AdvancedTopics.rst b/Documentation/process/7.AdvancedTopics.rst
index 43291704338e..9f0ec5bec15e 100644
--- a/Documentation/process/7.AdvancedTopics.rst
+++ b/Documentation/process/7.AdvancedTopics.rst
@@ -1,5 +1,6 @@
.. _development_advancedtopics:
+===============
Advanced topics
===============
@@ -9,7 +10,7 @@ number of topics which can be helpful for developers wanting to become a
regular part of the Linux kernel development process.
Managing patches with git
--------------------------
+=========================
The use of distributed version control for the kernel began in early 2002,
when Linus first started playing with the proprietary BitKeeper
@@ -149,7 +150,7 @@ sure that you have remembered to push those changes to the public server.
.. _development_advancedtopics_reviews:
Reviewing patches
------------------
+=================
Some readers will certainly object to putting this section with "advanced
topics" on the grounds that even beginning kernel developers should be
diff --git a/Documentation/process/8.Conclusion.rst b/Documentation/process/8.Conclusion.rst
index 8c847dffe76b..593ee94c8ec1 100644
--- a/Documentation/process/8.Conclusion.rst
+++ b/Documentation/process/8.Conclusion.rst
@@ -1,5 +1,6 @@
.. _development_conclusion:
+====================
For more information
====================
@@ -49,6 +50,7 @@ Documentation for git can be found at:
https://www.kernel.org/pub/software/scm/git/docs/user-manual.html
+==========
Conclusion
==========
diff --git a/Documentation/process/adding-syscalls.rst b/Documentation/process/adding-syscalls.rst
index 906c47f1a9e5..00e6712a7e3d 100644
--- a/Documentation/process/adding-syscalls.rst
+++ b/Documentation/process/adding-syscalls.rst
@@ -1,6 +1,7 @@
.. _addsyscalls:
+========================
Adding a New System Call
========================
@@ -10,7 +11,7 @@ Linux kernel, over and above the normal submission advice in
System Call Alternatives
-------------------------
+========================
The first thing to consider when adding a new system call is whether one of
the alternatives might be suitable instead. Although system calls are the
@@ -52,7 +53,7 @@ interface.
Designing the API: Planning for Extension
------------------------------------------
+=========================================
A new system call forms part of the API of the kernel, and has to be supported
indefinitely. As such, it's a very good idea to explicitly discuss the
@@ -104,7 +105,7 @@ See :manpage:`perf_event_open(2)` and the ``perf_copy_attr()`` function (in
Designing the API: Other Considerations
----------------------------------------
+=======================================
If your new system call allows userspace to refer to a kernel object, it
should use a file descriptor as the handle for that object -- don't invent a
@@ -174,7 +175,7 @@ structure that's passed in by pointer.)
Proposing the API
------------------
+=================
To make new system calls easy to review, it's best to divide up the patchset
into separate chunks. These should include at least the following items as
@@ -194,7 +195,7 @@ be cc'ed to linux-api@xxxxxxxxxxxxxxx.
Generic System Call Implementation
-----------------------------------
+==================================
The main entry point for your new :manpage:`xyzzy(2)` system call will be called
``sys_xyzzy()``, but you add this entry point with the appropriate
@@ -249,7 +250,7 @@ To summarize, you need a commit that includes:
x86 System Call Implementation
-------------------------------
+==============================
To wire up your new system call for x86 platforms, you need to update the
master syscall tables. Assuming your new system call isn't special in some
@@ -267,7 +268,7 @@ relevant merge window.
Compatibility System Calls (Generic)
-------------------------------------
+====================================
For most system calls the same 64-bit implementation can be invoked even when
the userspace program is itself 32-bit; even if the system call's parameters
@@ -354,7 +355,7 @@ To summarize, you need:
Compatibility System Calls (x86)
---------------------------------
+================================
To wire up the x86 architecture of a system call with a compatibility version,
the entries in the syscall tables need to be adjusted.
@@ -388,7 +389,7 @@ layout do indeed map exactly from x32 (-mx32) to either the 32-bit (-m32) or
System Calls Returning Elsewhere
---------------------------------
+================================
For most system calls, once the system call is complete the user program
continues exactly where it left off -- at the next instruction, with the
@@ -438,7 +439,7 @@ simulates registers etc). Fixing this is as simple as adding a #define to
Other Details
--------------
+=============
Most of the kernel treats system calls in a generic way, but there is the
occasional exception that may need updating for your particular system call.
@@ -455,7 +456,7 @@ call to check there are no other special cases.
Testing
--------
+=======
A new system call should obviously be tested; it is also useful to provide
reviewers with a demonstration of how user space programs will use the system
@@ -480,7 +481,7 @@ for filesystem-related changes.
Man Page
---------
+========
All new system calls should come with a complete man page, ideally using groff
markup, but plain text will do. If groff is used, it's helpful to include a
@@ -492,7 +493,7 @@ For more details, see https://www.kernel.org/doc/man-pages/patches.html
Do not call System Calls in the Kernel
---------------------------------------
+======================================
System calls are, as stated above, interaction points between userspace and
the kernel. Therefore, system call functions such as ``sys_xyzzy()`` or
@@ -523,7 +524,7 @@ architecture-specific compatibility wrappers, or other code in arch/.
References and Sources
-----------------------
+======================
- LWN article from Michael Kerrisk on use of flags argument in system calls:
https://lwn.net/Articles/585415/
diff --git a/Documentation/process/applying-patches.rst b/Documentation/process/applying-patches.rst
index c269f5e1a0a3..11f5cbe4de39 100644
--- a/Documentation/process/applying-patches.rst
+++ b/Documentation/process/applying-patches.rst
@@ -1,7 +1,8 @@
.. _applying_patches:
+====================================
Applying Patches To The Linux Kernel
-++++++++++++++++++++++++++++++++++++
+====================================
Original by:
Jesper Juhl, August 2005
@@ -316,7 +317,7 @@ The -stable team provides normal as well as incremental patches. Below is
how to apply these patches.
Normal patches
-~~~~~~~~~~~~~~
+--------------
These patches are not incremental, meaning that for example the 5.7.3
patch does not apply on top of the 5.7.2 kernel source, but rather on top
@@ -335,7 +336,7 @@ Here's a small example::
$ mv linux-5.7.2 linux-5.7.3 # rename the kernel source dir
Incremental patches
-~~~~~~~~~~~~~~~~~~~
+-------------------
Incremental patches are different: instead of being applied on top
of base 5.x kernel, they are applied on top of previous stable kernel
diff --git a/Documentation/process/botching-up-ioctls.rst b/Documentation/process/botching-up-ioctls.rst
index a05e8401de1c..44ab68408377 100644
--- a/Documentation/process/botching-up-ioctls.rst
+++ b/Documentation/process/botching-up-ioctls.rst
@@ -22,7 +22,7 @@ something every GPU driver has to do on its own.
Prerequisites
--------------
+=============
First the prerequisites. Without these you have already failed, because you
will need to add a 32-bit compat layer:
@@ -50,7 +50,7 @@ will need to add a 32-bit compat layer:
Basics
-------
+======
With the joys of writing a compat layer avoided we can take a look at the basic
fumbles. Neglecting these will make backward and forward compatibility a real
@@ -82,7 +82,7 @@ will have a second iteration or at least an extension for any given interface.
Fun with Error Paths
---------------------
+====================
Nowadays we don't have any excuse left any more for drm drivers being neat
little root exploits. This means we both need full input validation and solid
@@ -125,7 +125,7 @@ anyway:
Time, Waiting and Missing it
-----------------------------
+============================
GPUs do most everything asynchronously, so we have a need to time operations and
wait for outstanding ones. This is really tricky business; at the moment none of
@@ -166,7 +166,7 @@ still tons more lessons to learn here.
Leaking Resources, Not
-----------------------
+======================
A full-blown drm driver essentially implements a little OS, but specialized to
the given GPU platforms. This means a driver needs to expose tons of handles
@@ -200,7 +200,7 @@ entails its own little set of pitfalls:
Last, but not Least
--------------------
+===================
Not every problem needs a new ioctl:
diff --git a/Documentation/process/clang-format.rst b/Documentation/process/clang-format.rst
index 1d089a847c1b..2ced44df2277 100644
--- a/Documentation/process/clang-format.rst
+++ b/Documentation/process/clang-format.rst
@@ -1,5 +1,6 @@
.. _clangformat:
+============
clang-format
============
@@ -44,7 +45,7 @@ See more information about the tool at:
.. _clangformatreview:
Review files and patches for coding style
------------------------------------------
+=========================================
By running the tool in its inline mode, you can review full subsystems,
folders or individual files for code style mistakes, typos or improvements.
@@ -84,7 +85,7 @@ at least until we see if ``clang-format`` becomes commonplace.
.. _clangformatreformat:
Reformatting blocks of code
----------------------------
+===========================
By using an integration with your text editor, you can reformat arbitrary
blocks (selections) of code with a single keystroke. This is specially
@@ -111,7 +112,7 @@ so that you can tweak a few options. See clangformatextra_.
.. _clangformatmissing:
Missing support
----------------
+===============
``clang-format`` is missing support for some things that are common
in kernel code. They are easy to remember, so if you use the tool
@@ -157,7 +158,7 @@ In particular, some very common ones you will notice are:
.. _clangformatextra:
Extra features/options
-----------------------
+======================
Some features/style options are not enabled by default in the configuration
file in order to minimize the differences between the output and the current
diff --git a/Documentation/process/code-of-conduct-interpretation.rst b/Documentation/process/code-of-conduct-interpretation.rst
index 66b07f14714c..3abf86d261c6 100644
--- a/Documentation/process/code-of-conduct-interpretation.rst
+++ b/Documentation/process/code-of-conduct-interpretation.rst
@@ -1,5 +1,6 @@
.. _code_of_conduct_interpretation:
+================================================================
Linux Kernel Contributor Covenant Code of Conduct Interpretation
================================================================
@@ -22,7 +23,7 @@ system kernel ever, and we do not want to do anything to cause the
quality of submission and eventual result to ever decrease.
Maintainers
------------
+===========
The Code of Conduct uses the term "maintainers" numerous times. In the
kernel community, a "maintainer" is anyone who is responsible for a
@@ -30,7 +31,7 @@ subsystem, driver, or file, and is listed in the MAINTAINERS file in the
kernel source tree.
Responsibilities
-----------------
+================
The Code of Conduct mentions rights and responsibilities for
maintainers, and this needs some further clarifications.
@@ -84,7 +85,7 @@ the Code of Conduct. The kernel community is aware of that and provides
entry level programs in various forms like kernelnewbies.org.
Scope
------
+=====
The Linux kernel community primarily interacts on a set of public email
lists distributed around a number of different servers controlled by a
@@ -119,7 +120,7 @@ part of the user/kernel API, or reflect terminology used in published
standards or specifications, are not considered bugs.
Enforcement
------------
+===========
The address listed in the Code of Conduct goes to the Code of Conduct
Committee. The exact members receiving these emails at any given time
diff --git a/Documentation/process/code-of-conduct.rst b/Documentation/process/code-of-conduct.rst
index be50294aebd5..17213ae2f6ee 100644
--- a/Documentation/process/code-of-conduct.rst
+++ b/Documentation/process/code-of-conduct.rst
@@ -1,7 +1,8 @@
.. _code_of_conduct:
+====================================
Contributor Covenant Code of Conduct
-++++++++++++++++++++++++++++++++++++
+====================================
Our Pledge
==========
diff --git a/Documentation/process/deprecated.rst b/Documentation/process/deprecated.rst
index 1f7f3e6c9cda..42c8a3f8d5f4 100644
--- a/Documentation/process/deprecated.rst
+++ b/Documentation/process/deprecated.rst
@@ -18,7 +18,7 @@ point when uses of deprecated things are proposed for inclusion in the
kernel.
__deprecated
-------------
+============
While this attribute does visually mark an interface as deprecated,
it `does not produce warnings during builds any more
<https://git.kernel.org/linus/771c035372a036f83353eef46dbb829780330234>`_
@@ -30,7 +30,7 @@ be fully removed from the kernel, or added to this file to discourage
others from using them in the future.
BUG() and BUG_ON()
-------------------
+==================
Use WARN() and WARN_ON() instead, and handle the "impossible"
error condition as gracefully as possible. While the BUG()-family
of APIs were originally designed to act as an "impossible situation"
@@ -52,7 +52,7 @@ to make sure their systems do not continue running in the face of
<https://git.kernel.org/linus/d4689846881d160a4d12a514e991a740bcb5d65a>`_.)
open-coded arithmetic in allocator arguments
---------------------------------------------
+============================================
Dynamic size calculations (especially multiplication) should not be
performed in memory allocator (or similar) function arguments due to the
risk of them overflowing. This could lead to values wrapping around and a
@@ -110,7 +110,7 @@ as well as the related check_mul_overflow(), check_add_overflow(),
check_sub_overflow(), and check_shl_overflow() family of functions.
simple_strtol(), simple_strtoll(), simple_strtoul(), simple_strtoull()
-----------------------------------------------------------------------
+======================================================================
The simple_strtol(), simple_strtoll(),
simple_strtoul(), and simple_strtoull() functions
explicitly ignore overflows, which may lead to unexpected results
@@ -120,7 +120,7 @@ correct replacements, though note that those require the string to be
NUL or newline terminated.
strcpy()
---------
+========
strcpy() performs no bounds checking on the destination buffer. This
could result in linear overflows beyond the end of the buffer, leading to
all kinds of misbehaviors. While `CONFIG_FORTIFY_SOURCE=y` and various
@@ -132,7 +132,7 @@ the destination, but rather a count of non-NUL bytes copied (or negative
errno when it truncates).
strncpy() on NUL-terminated strings
------------------------------------
+===================================
Use of strncpy() does not guarantee that the destination buffer will
be NUL terminated. This can lead to various linear read overflows and
other misbehavior due to the missing termination. It also NUL-pads
@@ -154,7 +154,7 @@ attribute to avoid future compiler warnings. For cases still needing
NUL-padding, strtomem_pad() can be used.
strlcpy()
----------
+=========
strlcpy() reads the entire source buffer first (since the return value
is meant to match that of strlen()). This read may exceed the destination
size limit. This is both inefficient and can lead to linear read overflows
@@ -163,7 +163,7 @@ though care must be given to any cases where the return value of strlcpy()
is used, since strscpy() will return negative errno values when it truncates.
%p format specifier
--------------------
+===================
Traditionally, using "%p" in format strings would lead to regular address
exposure flaws in dmesg, proc, sysfs, etc. Instead of leaving these to
be exploitable, all "%p" uses in the kernel are being printed as a hashed
@@ -187,7 +187,7 @@ you can temporarily boot with the debug flag "`no_hash_pointers
<https://git.kernel.org/linus/5ead723a20e0447bc7db33dc3070b420e5f80aa6>`_".
Variable Length Arrays (VLAs)
------------------------------
+=============================
Using stack VLAs produces much worse machine code than statically
sized stack arrays. While these non-trivial `performance issues
<https://git.kernel.org/linus/02361bc77888>`_ are reason enough to
@@ -198,7 +198,7 @@ stack (when built without `CONFIG_THREAD_INFO_IN_TASK=y`), or overwriting
memory adjacent to the stack (when built without `CONFIG_VMAP_STACK=y`)
Implicit switch case fall-through
----------------------------------
+=================================
The C language allows switch cases to fall through to the next case
when a "break" statement is missing at the end of a case. This, however,
introduces ambiguity in the code, as it's not always clear if the missing
@@ -235,7 +235,7 @@ All switch/case blocks must end in one of:
* return [expression];
Zero-length and one-element arrays
-----------------------------------
+==================================
There is a regular need in the kernel to provide a way to declare having
a dynamically sized set of trailing elements in a structure. Kernel code
should always use `"flexible array members" <https://en.wikipedia.org/wiki/Flexible_array_member>`_
diff --git a/Documentation/process/development-process.rst b/Documentation/process/development-process.rst
index e34d7da58b7f..3d17099ce94f 100644
--- a/Documentation/process/development-process.rst
+++ b/Documentation/process/development-process.rst
@@ -1,5 +1,6 @@
.. _development_process_main:
+=========================================
A guide to the Kernel Development Process
=========================================
diff --git a/Documentation/process/handling-regressions.rst b/Documentation/process/handling-regressions.rst
index 5d3c3de3f4ec..7854f5ebbb66 100644
--- a/Documentation/process/handling-regressions.rst
+++ b/Documentation/process/handling-regressions.rst
@@ -1,8 +1,9 @@
.. SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)
.. See the bottom of this file for additional redistribution information.
+====================
Handling regressions
-++++++++++++++++++++
+====================
*We don't cause regressions* -- this document describes what this "first rule of
Linux kernel development" means in practice for developers. It complements
diff --git a/Documentation/process/howto.rst b/Documentation/process/howto.rst
index eebda4910a88..1c4e370225b4 100644
--- a/Documentation/process/howto.rst
+++ b/Documentation/process/howto.rst
@@ -1,5 +1,6 @@
.. _process_howto:
+=================================
HOWTO do Linux kernel development
=================================
@@ -15,7 +16,7 @@ document.
Introduction
-------------
+============
So, you want to learn how to become a Linux kernel developer? Or you
have been told by your manager, "Go write a Linux driver for this
@@ -57,7 +58,7 @@ of doing things.
Legal Issues
-------------
+============
The Linux kernel source code is released under the GPL. Please see the file
COPYING in the main directory of the source tree. The Linux kernel licensing
@@ -73,7 +74,7 @@ For common questions and answers about the GPL, please see:
Documentation
--------------
+=============
The Linux kernel source tree has a large range of documents that are
invaluable for learning how to interact with the kernel community. When
@@ -183,7 +184,7 @@ They can also be generated on LaTeX and ePub formats with::
make epubdocs
Becoming A Kernel Developer
----------------------------
+===========================
If you do not know anything about Linux kernel development, you should
look at the Linux KernelNewbies project:
@@ -228,7 +229,7 @@ repository of the kernel code may be found at:
The development process
------------------------
+=======================
Linux kernel development process currently consists of a few different
main kernel "branches" and lots of different subsystem-specific kernel
@@ -240,7 +241,7 @@ branches. These different branches are:
- linux-next integration testing tree
Mainline tree
-~~~~~~~~~~~~~
+-------------
The mainline tree is maintained by Linus Torvalds, and can be found at
https://kernel.org or in the repo. Its development process is as follows:
@@ -276,7 +277,7 @@ mailing list about kernel releases:
preconceived timeline."*
Various stable trees with multiple major numbers
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------------------------------
Kernels with 3-part versions are -stable kernels. They contain
relatively small and critical fixes for security problems or significant
@@ -299,7 +300,7 @@ in the kernel tree documents what kinds of changes are acceptable for
the -stable tree, and how the release process works.
Subsystem-specific trees
-~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------
The maintainers of the various kernel subsystems --- and also many
kernel subsystem developers --- expose their current state of
@@ -324,7 +325,7 @@ accepted, or rejected. Most of these patchwork sites are listed at
https://patchwork.kernel.org/.
linux-next integration testing tree
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-----------------------------------
Before updates from subsystem trees are merged into the mainline tree,
they need to be integration-tested. For this purpose, a special
@@ -339,7 +340,7 @@ Adventurous testers are very welcome to runtime-test the linux-next.
Bug Reporting
--------------
+=============
The file 'Documentation/admin-guide/reporting-issues.rst' in the main kernel
source directory describes how to report a possible kernel bug, and details
@@ -348,7 +349,7 @@ down the problem.
Managing bug reports
---------------------
+====================
One of the best ways to put into practice your hacking skills is by fixing
bugs reported by other people. Not only will you help to make the kernel
@@ -367,7 +368,7 @@ kernel get filed there.
Mailing lists
--------------
+=============
As some of the above documents describe, the majority of the core kernel
developers participate on the Linux Kernel Mailing list. Details on how
@@ -426,7 +427,7 @@ Above all, please remember to show respect to other subscribers.
Working with the community
---------------------------
+==========================
The goal of the kernel community is to provide the best possible kernel
there is. When you submit a patch for acceptance, it will be reviewed
@@ -468,7 +469,7 @@ resend it.
Differences between the kernel community and corporate structures
------------------------------------------------------------------
+=================================================================
The kernel community works differently than most traditional corporate
development environments. Here are a list of things that you can try to
@@ -515,7 +516,7 @@ English before sending them.
Break up your changes
----------------------
+=====================
The Linux kernel community does not gladly accept large chunks of code
dropped on it all at once. The changes need to be properly introduced,
@@ -571,7 +572,7 @@ that are unfinished and will be "fixed up later."
Justify your change
--------------------
+===================
Along with breaking up your patches, it is very important for you to let
the Linux community know why they should add this change. New features
@@ -579,7 +580,7 @@ must be justified as being needed and useful.
Document your change
---------------------
+====================
When sending in your patches, pay special attention to what you say in
the text in your email. This information will become the ChangeLog
diff --git a/Documentation/process/index.rst b/Documentation/process/index.rst
index 6cb732dfcc72..265ee20eb7dd 100644
--- a/Documentation/process/index.rst
+++ b/Documentation/process/index.rst
@@ -16,7 +16,7 @@ it much easier for you to get your changes merged with a minimum of
trouble.
An introduction to how kernel development works
------------------------------------------------
+===============================================
Read these documents first: an understanding of the material here will ease
your entry into the kernel community.
@@ -30,7 +30,7 @@ your entry into the kernel community.
submit-checklist
Tools and technical guides for kernel developers
-------------------------------------------------
+================================================
This is a collection of material that kernel developers should be familiar
with.
@@ -50,7 +50,7 @@ with.
botching-up-ioctls
Policy guides and developer statements
---------------------------------------
+======================================
These are the rules that we try to live by in the kernel community (and
beyond).
@@ -70,7 +70,7 @@ beyond).
researcher-guidelines
Dealing with bugs
------------------
+=================
Bugs are a fact of life; it is important that we handle them properly.
The documents below describe our policies around the handling of a couple
@@ -84,7 +84,7 @@ of special classes of bugs: regressions and security problems.
embargoed-hardware-issues
Maintainer information
-----------------------
+======================
How to find the people who will accept your patches.
@@ -95,7 +95,7 @@ How to find the people who will accept your patches.
maintainers
Other material
---------------
+==============
Here are some other guides to the community that are of interest to most
developers:
diff --git a/Documentation/process/kernel-docs.rst b/Documentation/process/kernel-docs.rst
index 8660493b91d0..3d2874365ba0 100644
--- a/Documentation/process/kernel-docs.rst
+++ b/Documentation/process/kernel-docs.rst
@@ -1,5 +1,6 @@
.. _kernel_docs:
+=====================================
Index of Further Kernel Documentation
=====================================
@@ -33,7 +34,7 @@ All documents are cataloged with the following fields: the document's
the exception of foundational books.
Docs at the Linux Kernel tree
------------------------------
+=============================
The Sphinx books should be built with ``make {htmldocs | pdfdocs | epubdocs}``.
@@ -48,7 +49,7 @@ The Sphinx books should be built with ``make {htmldocs | pdfdocs | epubdocs}``.
be more up to date than the web version.
On-line docs
-------------
+============
* Title: **Linux Kernel Mailing List Glossary**
@@ -73,7 +74,7 @@ On-line docs
actively maintained at https://github.com/sysprog21/lkmpg.
Published books
----------------
+===============
* Title: **Linux Kernel Debugging: Leverage proven tools and advanced techniques to effectively debug Linux kernels and kernel modules**
@@ -150,7 +151,7 @@ Published books
:Notes: Foundational book
Miscellaneous
--------------
+=============
* Name: **Cross-Referencing Linux**
diff --git a/Documentation/process/kernel-driver-statement.rst b/Documentation/process/kernel-driver-statement.rst
index a849790a68bc..7746fdeaa0cb 100644
--- a/Documentation/process/kernel-driver-statement.rst
+++ b/Documentation/process/kernel-driver-statement.rst
@@ -1,7 +1,8 @@
.. _process_statement_driver:
+=======================
Kernel Driver Statement
------------------------
+=======================
Position Statement on Linux Kernel Modules
==========================================
diff --git a/Documentation/process/kernel-enforcement-statement.rst b/Documentation/process/kernel-enforcement-statement.rst
index dc2d813b2e79..5bda031af067 100644
--- a/Documentation/process/kernel-enforcement-statement.rst
+++ b/Documentation/process/kernel-enforcement-statement.rst
@@ -1,7 +1,8 @@
.. _process_statement_kernel:
+==================================
Linux Kernel Enforcement Statement
-----------------------------------
+==================================
As developers of the Linux kernel, we have a keen interest in how our software
is used and how the license for our software is enforced. Compliance with the
diff --git a/Documentation/process/license-rules.rst b/Documentation/process/license-rules.rst
index 2ef44ada3f11..8a773de46549 100644
--- a/Documentation/process/license-rules.rst
+++ b/Documentation/process/license-rules.rst
@@ -2,6 +2,7 @@
.. _kernel_licensing:
+============================
Linux kernel licensing rules
============================
@@ -56,7 +57,7 @@ The valid identifiers used in the kernel are explained in the section
license list at https://spdx.org/licenses/ along with the license texts.
License identifier syntax
--------------------------
+=========================
1. Placement:
@@ -149,7 +150,7 @@ License identifier syntax
// SPDX-License-Identifier: GPL-1.0+ AND LGPL-2.1+
License identifiers
--------------------
+===================
The licenses currently used, as well as the licenses for code added to the
kernel, can be broken down into:
@@ -423,7 +424,7 @@ and extract right from the source, which is recommended by various FOSS
organizations, e.g. the `FSFE REUSE initiative <https://reuse.software/>`_.
_`MODULE_LICENSE`
------------------
+=================
Loadable kernel modules also require a MODULE_LICENSE() tag. This tag is
neither a replacement for proper source code license information
diff --git a/Documentation/process/magic-number.rst b/Documentation/process/magic-number.rst
index 7029c3c084ee..3237dcb9eedb 100644
--- a/Documentation/process/magic-number.rst
+++ b/Documentation/process/magic-number.rst
@@ -1,5 +1,6 @@
.. _magicnumbers:
+===================
Linux magic numbers
===================
diff --git a/Documentation/process/maintainer-handbooks.rst b/Documentation/process/maintainer-handbooks.rst
index 976391cec528..00068032ed47 100644
--- a/Documentation/process/maintainer-handbooks.rst
+++ b/Documentation/process/maintainer-handbooks.rst
@@ -2,6 +2,7 @@
.. _maintainer_handbooks_main:
+================================================================
Subsystem and maintainer tree specific development process notes
================================================================
diff --git a/Documentation/process/maintainer-kvm-x86.rst b/Documentation/process/maintainer-kvm-x86.rst
index 9183bd449762..0e3271e9f054 100644
--- a/Documentation/process/maintainer-kvm-x86.rst
+++ b/Documentation/process/maintainer-kvm-x86.rst
@@ -1,10 +1,11 @@
.. SPDX-License-Identifier: GPL-2.0
+=======
KVM x86
=======
Foreword
---------
+========
KVM strives to be a welcoming community; contributions from newcomers are
valued and encouraged. Please do not be discouraged or intimidated by the
length of this document and the many rules/guidelines it contains. Everyone
@@ -14,11 +15,11 @@ and learn from any mistakes you make, you will be welcomed with open arms, not
torches and pitchforks.
TL;DR
------
+=====
Testing is mandatory. Be consistent with established styles and patterns.
Trees
------
+=====
KVM x86 is currently in a transition period from being part of the main KVM
tree, to being "just another KVM arch". As such, KVM x86 is split across the
main KVM tree, ``git.kernel.org/pub/scm/virt/kvm/kvm.git``, and a KVM x86
@@ -34,7 +35,7 @@ Note, this transition period is expected to last quite some time, i.e. will be
the status quo for the foreseeable future.
Branches
-~~~~~~~~
+--------
The KVM x86 tree is organized into multiple topic branches. The purpose of
using finer-grained topic branches is to make it easier to keep tabs on an area
of development, and to limit the collateral damage of human errors and/or buggy
@@ -47,7 +48,7 @@ via a Cthulhu merge on an as-needed basis, i.e. when a topic branch is updated.
As a result, force pushes to ``next`` are common.
Lifecycle
-~~~~~~~~~
+---------
Fixes that target the current release, a.k.a. mainline, are typically applied
directly to the main KVM tree, i.e. do not route through the KVM x86 tree.
@@ -62,7 +63,7 @@ close around rc5 for new features, and a soft close around rc6 for fixes (for
the next release; see above for fixes that target the current release).
Timeline
-~~~~~~~~
+--------
Submissions are typically reviewed and applied in FIFO order, with some wiggle
room for the size of a series, patches that are "cache hot", etc. Fixes,
especially for the current release and or stable trees, get to jump the queue.
@@ -80,10 +81,10 @@ can, within reason, to ensure that your patches are ready to be merged! Pings
on series that break the build or fail tests lead to unhappy maintainers!
Development
------------
+===========
Base Tree/Branch
-~~~~~~~~~~~~~~~~
+----------------
Fixes that target the current release, a.k.a. mainline, should be based on
``git://git.kernel.org/pub/scm/virt/kvm/kvm.git master``. Note, fixes do not
automatically warrant inclusion in the current release. There is no singular
@@ -104,7 +105,7 @@ you're unsure whether a patch/series is truly multi-arch, err on the side of
caution and treat it as multi-arch, i.e. use a common base.
Coding Style
-~~~~~~~~~~~~
+------------
When it comes to style, naming, patterns, etc., consistency is the number one
priority in KVM x86. If all else fails, match what already exists.
@@ -121,14 +122,14 @@ they are intended only for KVM-internal consumption (there are plans to
privatize KVM's headers and exports to enforce this).
Comments
-~~~~~~~~
+--------
Write comments using imperative mood and avoid pronouns. Use comments to
provide a high level overview of the code, and/or to explain why the code does
what it does. Do not reiterate what the code literally does; let the code
speak for itself. If the code itself is inscrutable, comments will not help.
SDM and APM References
-~~~~~~~~~~~~~~~~~~~~~~
+----------------------
Much of KVM's code base is directly tied to architectural behavior defined in
Intel's Software Development Manual (SDM) and AMD's Architecture Programmer’s
Manual (APM). Use of "Intel's SDM" and "AMD's APM", or even just "SDM" or
@@ -146,7 +147,7 @@ Note, referencing the SDM/APM in changelogs to justify the change and provide
context is perfectly ok and encouraged.
Shortlog
-~~~~~~~~
+--------
The preferred prefix format is ``KVM: <topic>:``, where ``<topic>`` is one of::
- x86
@@ -191,7 +192,7 @@ limit. I.e. let the shortlog run a few characters over the standard limit if
you have good reason to do so.
Changelog
-~~~~~~~~~
+---------
Most importantly, write changelogs using imperative mood and avoid pronouns.
See :ref:`describe_changes` for more information, with one amendment: lead with
@@ -224,7 +225,7 @@ preference. E.g. having to skip one sentence to get to the context is less
painful than having to skip three paragraphs to get to "what's changing".
Fixes
-~~~~~
+-----
If a change fixes a KVM/kernel bug, add a Fixes: tag even if the change doesn't
need to be backported to stable kernels, and even if the change fixes a bug in
an older release.
@@ -235,13 +236,13 @@ KVM x86 opts out of backporting Fixes: by default. Some auto-selected patches
do get backported, but require explicit maintainer approval (search MANUALSEL).
Function References
-~~~~~~~~~~~~~~~~~~~
+-------------------
When a function is mentioned in a comment, changelog, or shortlog (or anywhere
for that matter), use the format ``function_name()``. The parentheses provide
context and disambiguate the reference.
Testing
--------
+=======
At a bare minimum, *all* patches in a series must build cleanly for KVM_INTEL=m
KVM_AMD=m, and KVM_WERROR=y. Building every possible combination of Kconfigs
isn't feasible, but the more the merrier. KVM_SMM, KVM_XEN, PROVE_LOCKING, and
@@ -270,7 +271,7 @@ If you can't fully test a change, e.g. due to lack of hardware, clearly state
what level of testing you were able to do, e.g. in the cover letter.
New Features
-~~~~~~~~~~~~
+------------
With one exception, new features *must* come with test coverage. KVM specific
tests aren't strictly required, e.g. if coverage is provided by running a
sufficiently enabled guest VM, or by running a related kernel selftest in a VM,
@@ -292,7 +293,7 @@ should clearly state what type of feedback is requested/expected. Do not abuse
the RFC process; RFCs will typically not receive in-depth review.
Bug Fixes
-~~~~~~~~~
+---------
Except for "obvious" found-by-inspection bugs, fixes must be accompanied by a
reproducer for the bug being fixed. In many cases the reproducer is implicit,
e.g. for build errors and test failures, but it should still be clear to
@@ -310,10 +311,10 @@ if a bug is really truly the end of the world before posting a fix without a
reproducer.
Posting
--------
+=======
Links
-~~~~~
+-----
Do not explicitly reference bug reports, prior versions of a patch/series, etc.
via ``In-Reply-To:`` headers. Using ``In-Reply-To:`` becomes an unholy mess
for large series and/or when the version count gets high, and ``In-Reply-To:``
@@ -329,7 +330,7 @@ formal Link: for bug reports and/or discussions that led to the patch. The
context of why a change was made is highly valuable for future readers.
Git Base
-~~~~~~~~
+--------
If you are using git version 2.9.0 or later (Googlers, this is all of you!),
use ``git format-patch`` with the ``--base`` flag to automatically include the
base tree information in the generated patches.
@@ -344,7 +345,7 @@ to yield ``--base=x/pmu``, where ``x`` is whatever name your repository uses to
track the KVM x86 remote.
Co-Posting Tests
-~~~~~~~~~~~~~~~~
+----------------
KVM selftests that are associated with KVM changes, e.g. regression tests for
bug fixes, should be posted along with the KVM changes as a single series. The
standard kernel rules for bisection apply, i.e. KVM changes that result in test
@@ -358,7 +359,7 @@ KVM patches, first post the KVM changes and then provide a lore Link: to the
KVM patch/series in the KVM-unit-tests patch(es).
Notifications
--------------
+=============
When a patch/series is officially accepted, a notification email will be sent
in reply to the original posting (cover letter for multi-patch series). The
notification will include the tree and topic branch, along with the SHA1s of
@@ -374,7 +375,7 @@ will be sent to the notification email explaining why the patch was dropped, as
well as the next steps.
SHA1 Stability
-~~~~~~~~~~~~~~
+--------------
SHA1s are not 100% guaranteed to be stable until they land in Linus' tree! A
SHA1 is *usually* stable once a notification has been sent, but things happen.
In most cases, an update to the notification email be provided if an applied
@@ -382,7 +383,7 @@ patch's SHA1 changes. However, in some scenarios, e.g. if all KVM x86 branches
need to be rebased, individual notifications will not be given.
Vulnerabilities
----------------
+===============
Bugs that can be exploited by the guest to attack the host (kernel or
userspace), or that can be exploited by a nested VM to *its* host (L2 attacking
L1), are of particular interest to KVM. Please follow the protocol for
diff --git a/Documentation/process/maintainer-netdev.rst b/Documentation/process/maintainer-netdev.rst
index 84ee60fceef2..6092d403e8b2 100644
--- a/Documentation/process/maintainer-netdev.rst
+++ b/Documentation/process/maintainer-netdev.rst
@@ -7,7 +7,7 @@ Networking subsystem (netdev)
=============================
tl;dr
------
+=====
- designate your patch to a tree - ``[PATCH net]`` or ``[PATCH net-next]``
- for fixes the ``Fixes:`` tag is required, regardless of the tree
@@ -16,7 +16,7 @@ tl;dr
- reverse xmas tree
netdev
-------
+======
netdev is a mailing list for all network-related Linux stuff. This
includes anything found under net/ (i.e. core code like IPv6) and
@@ -34,7 +34,7 @@ Linux development (i.e. RFC, review, comments, etc.) takes place on
netdev.
Development cycle
------------------
+=================
Here is a bit of background information on
the cadence of Linux development. Each new release starts off with a
@@ -60,7 +60,7 @@ probably imminent. If the most recent tag is a final release tag
and ``net-next`` is closed.
git trees and patch flow
-------------------------
+========================
There are two networking trees (git repositories) in play. Both are
driven by David Miller, the main network maintainer. There is the
@@ -107,12 +107,12 @@ focus for ``net`` is on stabilization and bug fixes.
Finally, the vX.Y gets released, and the whole cycle starts over.
netdev patch review
--------------------
+===================
.. _patch_status:
Patch status
-~~~~~~~~~~~~
+------------
Status of a patch can be checked by looking at the main patchwork
queue for netdev:
@@ -155,7 +155,7 @@ which carried them so if you have trouble finding your patch append
the value of ``Message-ID`` to the URL above.
Updating patch status
-~~~~~~~~~~~~~~~~~~~~~
+---------------------
Contributors and reviewers do not have the permissions to update patch
state directly in patchwork. Patchwork doesn't expose much information
@@ -188,7 +188,7 @@ Bot records its activity here:
https://netdev.bots.linux.dev/pw-bot.html
Review timelines
-~~~~~~~~~~~~~~~~
+----------------
Generally speaking, the patches get triaged quickly (in less than
48h). But be patient, if your patch is active in patchwork (i.e. it's
@@ -214,7 +214,7 @@ landed - describe your best guess and ask if it's correct. For example::
.. _Changes requested:
Changes requested
-~~~~~~~~~~~~~~~~~
+-----------------
Patches :ref:`marked<patch_status>` as ``Changes Requested`` need
to be revised. The new version should come with a change log,
@@ -241,14 +241,14 @@ had to ask in previous discussions. Occasionally the update of
the commit message will be the only change in the new version.
Partial resends
-~~~~~~~~~~~~~~~
+---------------
Please always resend the entire patch series and make sure you do number your
patches such that it is clear this is the latest and greatest set of patches
that can be applied. Do not try to resend just the patches which changed.
Handling misapplied patches
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+---------------------------
Occasionally a patch series gets applied before receiving critical feedback,
or the wrong version of a series gets applied.
@@ -265,7 +265,7 @@ problems with the reverted commit. Reverts should be used as a last resort,
when original change is completely wrong; incremental fixes are preferred.
Stable tree
-~~~~~~~~~~~
+-----------
While it used to be the case that netdev submissions were not supposed
to carry explicit ``CC: stable@xxxxxxxxxxxxxxx`` tags that is no longer
@@ -274,7 +274,7 @@ the case today. Please follow the standard stable rules in
and make sure you include appropriate Fixes tags!
Security fixes
-~~~~~~~~~~~~~~
+--------------
Do not email netdev maintainers directly if you think you discovered
a bug that might have possible security implications.
@@ -286,7 +286,7 @@ as possible alternative mechanisms.
Co-posting changes to user space components
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------------------
User space code exercising kernel features should be posted
alongside kernel patches. This gives reviewers a chance to see
@@ -313,7 +313,7 @@ Posting as one thread is discouraged because it confuses patchwork
(as of patchwork 2.2.2).
Preparing changes
------------------
+=================
Attention to detail is important. Re-read your own work as if you were the
reviewer. You can start with using ``checkpatch.pl``, perhaps even with
@@ -331,7 +331,7 @@ Finally, go back and read
to be sure you are not repeating some common mistake documented there.
Indicating target tree
-~~~~~~~~~~~~~~~~~~~~~~
+----------------------
To help maintainers and CI bots you should explicitly mark which tree
your patch is targeting. Assuming that you use git, use the prefix
@@ -343,7 +343,7 @@ Use ``net`` instead of ``net-next`` (always lower case) in the above for
bug-fix ``net`` content.
Dividing work into patches
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------
Put yourself in the shoes of the reviewer. Each patch is read separately
and therefore should constitute a comprehensible step towards your stated
@@ -357,7 +357,7 @@ with better review coverage. Re-posting large series also increases the mailing
list traffic.
Multi-line comments
-~~~~~~~~~~~~~~~~~~~
+-------------------
Comment style convention is slightly different for networking and most of
the tree. Instead of this::
@@ -374,7 +374,7 @@ it is requested that you make it look like this::
*/
Local variable ordering ("reverse xmas tree", "RCS")
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------------------------------
Netdev has a convention for ordering local variables in functions.
Order the variable declaration lines longest to shortest, e.g.::
@@ -387,14 +387,14 @@ If there are dependencies between the variables preventing the ordering
move the initialization out of line.
Format precedence
-~~~~~~~~~~~~~~~~~
+-----------------
When working in existing code which uses nonstandard formatting make
your code follow the most recent guidelines, so that eventually all code
in the domain of netdev is in the preferred format.
Resending after review
-~~~~~~~~~~~~~~~~~~~~~~
+----------------------
Allow at least 24 hours to pass between postings. This will ensure reviewers
from all geographical locations have a chance to chime in. Do not wait
@@ -410,10 +410,10 @@ not as a reply to the previous posting. Change log should include a link
to the previous posting (see :ref:`Changes requested`).
Testing
--------
+=======
Expected level of testing
-~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------
At the very minimum your changes must survive an ``allyesconfig`` and an
``allmodconfig`` build with ``W=1`` set without new warnings or failures.
@@ -426,7 +426,7 @@ You are expected to test your changes on top of the relevant networking
tree (``net`` or ``net-next``) and not e.g. a stable tree or ``linux-next``.
patchwork checks
-~~~~~~~~~~~~~~~~
+----------------
Checks in patchwork are mostly simple wrappers around existing kernel
scripts, the sources are available at:
@@ -440,7 +440,7 @@ gets overloaded very easily and netdev@vger really doesn't need more
traffic if we can help it.
netdevsim
-~~~~~~~~~
+---------
``netdevsim`` is a test driver which can be used to exercise driver
configuration APIs without requiring capable hardware.
@@ -456,7 +456,7 @@ new ``netdevsim`` features must be accompanied by selftests under
``tools/testing/selftests/``.
Reviewer guidance
------------------
+=================
Reviewing other people's patches on the list is highly encouraged,
regardless of the level of expertise. For general guidance and
@@ -471,7 +471,7 @@ review of submissions and not focus exclusively on trivial or subjective
matters like code formatting, tags etc.
Testimonials / feedback
------------------------
+=======================
Some companies use peer feedback in employee performance reviews.
Please feel free to request feedback from netdev maintainers,
diff --git a/Documentation/process/maintainer-soc-clean-dts.rst b/Documentation/process/maintainer-soc-clean-dts.rst
index 1b32430d0cfc..c9b7824d00f2 100644
--- a/Documentation/process/maintainer-soc-clean-dts.rst
+++ b/Documentation/process/maintainer-soc-clean-dts.rst
@@ -5,14 +5,14 @@ SoC Platforms with DTS Compliance Requirements
==============================================
Overview
---------
+========
SoC platforms or subarchitectures should follow all the rules from
Documentation/process/maintainer-soc.rst. This document referenced in
MAINTAINERS impose additional requirements listed below.
Strict DTS DT Schema and dtc Compliance
----------------------------------------
+=======================================
No changes to the SoC platform Devicetree sources (DTS files) should introduce
new ``make dtbs_check W=1`` warnings. Warnings in a new board DTS, which are
diff --git a/Documentation/process/maintainer-soc.rst b/Documentation/process/maintainer-soc.rst
index 12637530d68f..9e953ce0dae4 100644
--- a/Documentation/process/maintainer-soc.rst
+++ b/Documentation/process/maintainer-soc.rst
@@ -5,7 +5,7 @@ SoC Subsystem
=============
Overview
---------
+========
The SoC subsystem is a place of aggregation for SoC-specific code.
The main components of the subsystem are:
@@ -52,14 +52,14 @@ changes. Each architecture has its own maintainers that are responsible for
architectural details, CPU errata and the like.
Information for (new) Submaintainers
-------------------------------------
+====================================
As new platforms spring up, they often bring with them new submaintainers,
many of whom work for the silicon vendor, and may not be familiar with the
process.
Devicetree ABI Stability
-~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------
Perhaps one of the most important things to highlight is that dt-bindings
document the ABI between the devicetree and the kernel.
@@ -73,7 +73,7 @@ expected impact on existing users, such as bootloaders or other operating
systems.
Driver Branch Dependencies
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------
A common problem is synchronizing changes between device drivers and devicetree
files. Even if a change is compatible in both directions, this may require
@@ -106,7 +106,7 @@ There are multiple ways to deal with this:
removing them in a later release
Devicetree Naming Convention
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------
The general naming scheme for devicetree files is as follows. The aspects of a
platform that are set at the SoC level, like CPU cores, are contained in a file
@@ -125,7 +125,7 @@ Directories are usually named after the vendor of the SoC at the time of its
inclusion, leading to some historical directory names in the tree.
Validating Devicetree Files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+---------------------------
``make dtbs_check`` can be used to validate that devicetree files are compliant
with the dt-bindings that describe the ABI. Please read the section
@@ -139,7 +139,7 @@ If in any doubt about a devicetree change, reach out to the devicetree
maintainers.
Branches and Pull Requests
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------
Just as the main SoC tree has several branches, it is expected that
submaintainers will do the same. Driver, defconfig and devicetree changes should
diff --git a/Documentation/process/management-style.rst b/Documentation/process/management-style.rst
index dfbc69bf49d4..7e112e0f166c 100644
--- a/Documentation/process/management-style.rst
+++ b/Documentation/process/management-style.rst
@@ -1,5 +1,6 @@
.. _managementstyle:
+=============================
Linux kernel management style
=============================
@@ -32,7 +33,7 @@ Anyway, here goes:
.. _decisions:
1) Decisions
-------------
+============
Everybody thinks managers make decisions, and that decision-making is
important. The bigger and more painful the decision, the bigger the
@@ -134,7 +135,7 @@ have screwed up on.
2) People
----------
+=========
Most people are idiots, and being a manager means you'll have to deal
with it, and perhaps more importantly, that **they** have to deal with
@@ -181,7 +182,7 @@ trust somebody who is so clearly hiding their true character.
3) People II - the Good Kind
-----------------------------
+============================
While it turns out that most people are idiots, the corollary to that is
sadly that you are one too, and that while we can all bask in the secure
@@ -214,7 +215,7 @@ direction, just don't push too hard.
4) Placing blame
-----------------
+================
Things will go wrong, and people want somebody to blame. Tag, you're it.
@@ -240,7 +241,7 @@ by now.
5) Things to avoid
-------------------
+==================
There's one thing people hate even more than being called "d*ckhead",
and that is being called a "d*ckhead" in a sanctimonious voice. The
@@ -273,7 +274,7 @@ have about criticism.
6) Why me?
-----------
+==========
Since your main responsibility seems to be to take the blame for other
peoples mistakes, and make it painfully obvious to everybody else that
diff --git a/Documentation/process/programming-language.rst b/Documentation/process/programming-language.rst
index bc56dee6d0bc..2afa9409fe5a 100644
--- a/Documentation/process/programming-language.rst
+++ b/Documentation/process/programming-language.rst
@@ -1,5 +1,6 @@
.. _programming_language:
+====================
Programming Language
====================
@@ -13,7 +14,7 @@ This dialect contains many extensions to the language [gnu-extensions]_,
and many of them are used within the kernel as a matter of course.
Attributes
-----------
+==========
One of the common extensions used throughout the kernel are attributes
[gcc-attribute-syntax]_. Attributes allow to introduce
@@ -32,7 +33,7 @@ in order to feature detect which ones can be used and/or to shorten the code.
Please refer to ``include/linux/compiler_attributes.h`` for more information.
Rust
-----
+====
The kernel has experimental support for the Rust programming language
[rust-language]_ under ``CONFIG_RUST``. It is compiled with ``rustc`` [rustc]_
diff --git a/Documentation/process/researcher-guidelines.rst b/Documentation/process/researcher-guidelines.rst
index d159cd4f5e5b..5a7a212cf76b 100644
--- a/Documentation/process/researcher-guidelines.rst
+++ b/Documentation/process/researcher-guidelines.rst
@@ -2,8 +2,9 @@
.. _researcher_guidelines:
+=====================
Researcher Guidelines
-+++++++++++++++++++++
+=====================
The Linux kernel community welcomes transparent research on the Linux
kernel, the activities involved in producing it, and any other byproducts
diff --git a/Documentation/process/security-bugs.rst b/Documentation/process/security-bugs.rst
index 692a3ba56cca..c40c9b81b48a 100644
--- a/Documentation/process/security-bugs.rst
+++ b/Documentation/process/security-bugs.rst
@@ -1,5 +1,6 @@
.. _securitybugs:
+=============
Security bugs
=============
@@ -9,7 +10,7 @@ disclosed as quickly as possible. Please report security bugs to the
Linux kernel security team.
Contact
--------
+=======
The Linux kernel security team can be contacted by email at
<security@xxxxxxxxxx>. This is a private list of security officers
@@ -34,7 +35,7 @@ issue if all the details are hidden away in attachments. Think of it like a
reproduction steps, and follow it with a proposed fix, all in plain text.
Disclosure and embargoed information
-------------------------------------
+====================================
The security list is not a disclosure channel. For that, see Coordination
below.
@@ -64,7 +65,7 @@ of the report are treated confidentially even after the embargo has been
lifted, in perpetuity.
Coordination with other groups
-------------------------------
+==============================
While the kernel security team solely focuses on getting bugs fixed,
other groups focus on fixing issues in distros and coordinating
@@ -94,7 +95,7 @@ fix is accepted do not Cc: "linux-distros", and after it's merged do not
Cc: the kernel security team.
CVE assignment
---------------
+==============
The security team does not assign CVEs, nor do we require them for
reports or fixes, as this can needlessly complicate the process and may
@@ -104,7 +105,7 @@ MITRE directly. However under no circumstances will a patch inclusion
be delayed to wait for a CVE identifier to arrive.
Non-disclosure agreements
--------------------------
+=========================
The Linux kernel security team is not a formal body and therefore unable
to enter any non-disclosure agreements.
diff --git a/Documentation/process/submit-checklist.rst b/Documentation/process/submit-checklist.rst
index b1bc2d37bd0a..c4cd62b272df 100644
--- a/Documentation/process/submit-checklist.rst
+++ b/Documentation/process/submit-checklist.rst
@@ -1,7 +1,8 @@
.. _submitchecklist:
+=======================================
Linux Kernel patch submission checklist
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+=======================================
Here are some basic things that developers should do if they want to see their
kernel patch submissions accepted more quickly.
diff --git a/Documentation/process/volatile-considered-harmful.rst b/Documentation/process/volatile-considered-harmful.rst
index 7eb6bd7c9214..7cfdb91980d5 100644
--- a/Documentation/process/volatile-considered-harmful.rst
+++ b/Documentation/process/volatile-considered-harmful.rst
@@ -1,8 +1,9 @@
.. _volatile_considered_harmful:
+================================================
Why the "volatile" type class should not be used
-------------------------------------------------
+================================================
C programmers have often taken volatile to mean that the variable could be
changed outside of the current thread of execution; as a result, they are
--
2.34.1