Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3==========
4Guidelines
5==========
6
7This document describes the general project guidelines that apply to nova-core
8and nova-drm.
9
10Language
11========
12
13The Nova project uses the Rust programming language. In this context, all rules
14of the Rust for Linux project as documented in
15:doc:`../../rust/general-information` apply. Additionally, the following rules
16apply.
17
18- Unless technically necessary otherwise (e.g. uAPI), any driver code is written
19 in Rust.
20
21- Unless technically necessary, unsafe Rust code must be avoided. In case of
22 technical necessity, unsafe code should be isolated in a separate component
23 providing a safe API for other driver code to use.
24
25Style
26-----
27
28All rules of the Rust for Linux project as documented in
29:doc:`../../rust/coding-guidelines` apply.
30
31For a submit checklist, please also see the `Rust for Linux Submit checklist
32addendum <https://rust-for-linux.com/contributing#submit-checklist-addendum>`_.
33
34Documentation
35=============
36
37The availability of proper documentation is essential in terms of scalability,
38accessibility for new contributors and maintainability of a project in general,
39but especially for a driver running as complex hardware as Nova is targeting.
40
41Hence, adding documentation of any kind is very much encouraged by the project.
42
43Besides that, there are some minimum requirements.
44
45- Every non-private structure needs at least a brief doc comment explaining the
46 semantical sense of the structure, as well as potential locking and lifetime
47 requirements. It is encouraged to have the same minimum documentation for
48 non-trivial private structures.
49
50- uAPIs must be fully documented with kernel-doc comments; additionally, the
51 semantical behavior must be explained including potential special or corner
52 cases.
53
54- The APIs connecting the 1st level driver (nova-core) with 2nd level drivers
55 must be fully documented. This includes doc comments, potential locking and
56 lifetime requirements, as well as example code if applicable.
57
58- Abbreviations must be explained when introduced; terminology must be uniquely
59 defined.
60
61- Register addresses, layouts, shift values and masks must be defined properly;
62 unless obvious, the semantical sense must be documented. This only applies if
63 the author is able to obtain the corresponding information.
64
65Acceptance Criteria
66===================
67
68- Patches must only be applied if reviewed by at least one other person on the
69 mailing list; this also applies for maintainers.