xref: /linux/Documentation/arch/riscv/patch-acceptance.rst (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1*ed843ae9SCosta Shulyupin.. SPDX-License-Identifier: GPL-2.0
2*ed843ae9SCosta Shulyupin
3*ed843ae9SCosta Shulyupinarch/riscv maintenance guidelines for developers
4*ed843ae9SCosta Shulyupin================================================
5*ed843ae9SCosta Shulyupin
6*ed843ae9SCosta ShulyupinOverview
7*ed843ae9SCosta Shulyupin--------
8*ed843ae9SCosta ShulyupinThe RISC-V instruction set architecture is developed in the open:
9*ed843ae9SCosta Shulyupinin-progress drafts are available for all to review and to experiment
10*ed843ae9SCosta Shulyupinwith implementations.  New module or extension drafts can change
11*ed843ae9SCosta Shulyupinduring the development process - sometimes in ways that are
12*ed843ae9SCosta Shulyupinincompatible with previous drafts.  This flexibility can present a
13*ed843ae9SCosta Shulyupinchallenge for RISC-V Linux maintenance.  Linux maintainers disapprove
14*ed843ae9SCosta Shulyupinof churn, and the Linux development process prefers well-reviewed and
15*ed843ae9SCosta Shulyupintested code over experimental code.  We wish to extend these same
16*ed843ae9SCosta Shulyupinprinciples to the RISC-V-related code that will be accepted for
17*ed843ae9SCosta Shulyupininclusion in the kernel.
18*ed843ae9SCosta Shulyupin
19*ed843ae9SCosta ShulyupinPatchwork
20*ed843ae9SCosta Shulyupin---------
21*ed843ae9SCosta Shulyupin
22*ed843ae9SCosta ShulyupinRISC-V has a patchwork instance, where the status of patches can be checked:
23*ed843ae9SCosta Shulyupin
24*ed843ae9SCosta Shulyupin  https://patchwork.kernel.org/project/linux-riscv/list/
25*ed843ae9SCosta Shulyupin
26*ed843ae9SCosta ShulyupinIf your patch does not appear in the default view, the RISC-V maintainers have
27*ed843ae9SCosta Shulyupinlikely either requested changes, or expect it to be applied to another tree.
28*ed843ae9SCosta Shulyupin
29*ed843ae9SCosta ShulyupinAutomation runs against this patchwork instance, building/testing patches as
30*ed843ae9SCosta Shulyupinthey arrive. The automation applies patches against the current HEAD of the
31*ed843ae9SCosta ShulyupinRISC-V `for-next` and `fixes` branches, depending on whether the patch has been
32*ed843ae9SCosta Shulyupindetected as a fix. Failing those, it will use the RISC-V `master` branch.
33*ed843ae9SCosta ShulyupinThe exact commit to which a series has been applied will be noted on patchwork.
34*ed843ae9SCosta ShulyupinPatches for which any of the checks fail are unlikely to be applied and in most
35*ed843ae9SCosta Shulyupincases will need to be resubmitted.
36*ed843ae9SCosta Shulyupin
37*ed843ae9SCosta ShulyupinSubmit Checklist Addendum
38*ed843ae9SCosta Shulyupin-------------------------
39*ed843ae9SCosta ShulyupinWe'll only accept patches for new modules or extensions if the
40*ed843ae9SCosta Shulyupinspecifications for those modules or extensions are listed as being
41*ed843ae9SCosta Shulyupinunlikely to be incompatibly changed in the future.  For
42*ed843ae9SCosta Shulyupinspecifications from the RISC-V foundation this means "Frozen" or
43*ed843ae9SCosta Shulyupin"Ratified", for the UEFI forum specifications this means a published
44*ed843ae9SCosta ShulyupinECR.  (Developers may, of course, maintain their own Linux kernel trees
45*ed843ae9SCosta Shulyupinthat contain code for any draft extensions that they wish.)
46*ed843ae9SCosta Shulyupin
47*ed843ae9SCosta ShulyupinAdditionally, the RISC-V specification allows implementers to create
48*ed843ae9SCosta Shulyupintheir own custom extensions.  These custom extensions aren't required
49*ed843ae9SCosta Shulyupinto go through any review or ratification process by the RISC-V
50*ed843ae9SCosta ShulyupinFoundation.  To avoid the maintenance complexity and potential
51*ed843ae9SCosta Shulyupinperformance impact of adding kernel code for implementor-specific
52*ed843ae9SCosta ShulyupinRISC-V extensions, we'll only consider patches for extensions that either:
53*ed843ae9SCosta Shulyupin
54*ed843ae9SCosta Shulyupin- Have been officially frozen or ratified by the RISC-V Foundation, or
55*ed843ae9SCosta Shulyupin- Have been implemented in hardware that is widely available, per standard
56*ed843ae9SCosta Shulyupin  Linux practice.
57*ed843ae9SCosta Shulyupin
58*ed843ae9SCosta Shulyupin(Implementers, may, of course, maintain their own Linux kernel trees containing
59*ed843ae9SCosta Shulyupincode for any custom extensions that they wish.)
60