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