| .. SPDX-License-Identifier: GPL-2.0 |
| |
| arch/riscv maintenance guidelines for developers |
| ================================================ |
| |
| Overview |
| -------- |
| The RISC-V instruction set architecture is developed in the open: |
| in-progress drafts are available for all to review and to experiment |
| with implementations. New module or extension drafts can change |
| during the development process - sometimes in ways that are |
| incompatible with previous drafts. This flexibility can present a |
| challenge for RISC-V Linux maintenance. Linux maintainers disapprove |
| of churn, and the Linux development process prefers well-reviewed and |
| tested code over experimental code. We wish to extend these same |
| principles to the RISC-V-related code that will be accepted for |
| inclusion in the kernel. |
| |
| Patchwork |
| --------- |
| |
| RISC-V has a patchwork instance, where the status of patches can be checked: |
| |
| https://patchwork.kernel.org/project/linux-riscv/list/ |
| |
| If your patch does not appear in the default view, the RISC-V maintainers have |
| likely either requested changes, or expect it to be applied to another tree. |
| |
| Automation runs against this patchwork instance, building/testing patches as |
| they arrive. The automation applies patches against the current HEAD of the |
| RISC-V `for-next` and `fixes` branches, depending on whether the patch has been |
| detected as a fix. Failing those, it will use the RISC-V `master` branch. |
| The exact commit to which a series has been applied will be noted on patchwork. |
| Patches for which any of the checks fail are unlikely to be applied and in most |
| cases will need to be resubmitted. |
| |
| Submit Checklist Addendum |
| ------------------------- |
| We'll only accept patches for new modules or extensions if the |
| specifications for those modules or extensions are listed as being |
| unlikely to be incompatibly changed in the future. For |
| specifications from the RISC-V foundation this means "Frozen" or |
| "Ratified", for the UEFI forum specifications this means a published |
| ECR. (Developers may, of course, maintain their own Linux kernel trees |
| that contain code for any draft extensions that they wish.) |
| |
| Additionally, the RISC-V specification allows implementers to create |
| their own custom extensions. These custom extensions aren't required |
| to go through any review or ratification process by the RISC-V |
| Foundation. To avoid the maintenance complexity and potential |
| performance impact of adding kernel code for implementor-specific |
| RISC-V extensions, we'll only consider patches for extensions that either: |
| |
| - Have been officially frozen or ratified by the RISC-V Foundation, or |
| - Have been implemented in hardware that is widely available, per standard |
| Linux practice. |
| |
| (Implementers, may, of course, maintain their own Linux kernel trees containing |
| code for any custom extensions that they wish.) |