@@ -14,14 +14,17 @@ Tasks may have the following fields:
1414- ``Contact ``: The person that can be contacted for further information about
1515 the task.
1616
17+ A task might have `[ABCD] ` code after its name. This code can be used to grep
18+ into the code for `TODO ` entries related to it.
19+
1720Enablement (Rust)
1821=================
1922
2023Tasks that are not directly related to nova-core, but are preconditions in terms
2124of required APIs.
2225
23- FromPrimitive API
24- -----------------
26+ FromPrimitive API [FPRI]
27+ ------------------------
2528
2629Sometimes the need arises to convert a number to a value of an enum or a
2730structure.
@@ -41,8 +44,27 @@ automatically generates the corresponding mappings between a value and a number.
4144| Complexity: Beginner
4245| Link: https://docs.rs/num/latest/num/trait.FromPrimitive.html
4346
44- Generic register abstraction
45- ----------------------------
47+ Conversion from byte slices for types implementing FromBytes [TRSM]
48+ -------------------------------------------------------------------
49+
50+ We retrieve several structures from byte streams coming from the BIOS or loaded
51+ firmware. At the moment converting the bytes slice into the proper type require
52+ an inelegant `unsafe ` operation; this will go away once `FromBytes ` implements
53+ a proper `from_bytes ` method.
54+
55+ | Complexity: Beginner
56+
57+ CoherentAllocation improvements [COHA]
58+ --------------------------------------
59+
60+ `CoherentAllocation ` needs a safe way to write into the allocation, and to
61+ obtain slices within the allocation.
62+
63+ | Complexity: Beginner
64+ | Contact: Abdiel Janulgue
65+
66+ Generic register abstraction [REGA]
67+ -----------------------------------
4668
4769Work out how register constants and structures can be automatically generated
4870through generalized macros.
@@ -102,16 +124,40 @@ Usage:
102124 let boot0 = Boot0::read(&bar);
103125 pr_info!("Revision: {}\n", boot0.revision());
104126
105- Note: a work-in-progress implementation currently resides in
127+ A work-in-progress implementation currently resides in
106128`drivers/gpu/nova-core/regs/macros.rs ` and is used in nova-core. It would be
107129nice to improve it (possibly using proc macros) and move it to the `kernel `
108130crate so it can be used by other components as well.
109131
132+ Features desired before this happens:
133+
134+ * Relative register with build-time base address validation,
135+ * Arrays of registers with build-time index validation,
136+ * Make I/O optional I/O (for field values that are not registers),
137+ * Support other sizes than `u32 `,
138+ * Allow visibility control for registers and individual fields,
139+ * Use Rust slice syntax to express fields ranges.
140+
110141| Complexity: Advanced
111142| Contact: Alexandre Courbot
112143
113- Delay / Sleep abstractions
114- --------------------------
144+ Numerical operations [NUMM]
145+ ---------------------------
146+
147+ Nova uses integer operations that are not part of the standard library (or not
148+ implemented in an optimized way for the kernel). These include:
149+
150+ - Aligning up and down to a power of two,
151+ - The "Find Last Set Bit" (`fls ` function of the C part of the kernel)
152+ operation.
153+
154+ A `num ` core kernel module is being designed to provide these operations.
155+
156+ | Complexity: Intermediate
157+ | Contact: Alexandre Courbot
158+
159+ Delay / Sleep abstractions [DLAY]
160+ ---------------------------------
115161
116162Rust abstractions for the kernel's delay() and sleep() functions.
117163
@@ -159,18 +205,6 @@ mailing list yet.
159205| Complexity: Intermediate
160206| Contact: Abdiel Janulgue
161207
162- ELF utils
163- ---------
164-
165- Rust implementation of ELF header representation to retrieve section header
166- tables, names, and data from an ELF-formatted images.
167-
168- There is preceding work from Abdiel Janulgue, which hasn't made it to the
169- mailing list yet.
170-
171- | Complexity: Beginner
172- | Contact: Abdiel Janulgue
173-
174208PCI MISC APIs
175209-------------
176210
@@ -179,12 +213,11 @@ capability, MSI API abstractions.
179213
180214| Complexity: Beginner
181215
182- Auxiliary bus abstractions
183- --------------------------
184-
185- Rust abstraction for the auxiliary bus APIs.
216+ XArray bindings [XARR]
217+ ----------------------
186218
187- This is needed to connect nova-core to the nova-drm driver.
219+ We need bindings for `xa_alloc `/`xa_alloc_cyclic ` in order to generate the
220+ auxiliary device IDs.
188221
189222| Complexity: Intermediate
190223
@@ -216,15 +249,6 @@ Build the radix3 page table to map the firmware.
216249| Complexity: Intermediate
217250| Contact: Abdiel Janulgue
218251
219- vBIOS support
220- -------------
221-
222- Parse the vBIOS and probe the structures required for driver initialization.
223-
224- | Contact: Dave Airlie
225- | Reference: Vec extensions
226- | Complexity: Intermediate
227-
228252Initial Devinit support
229253-----------------------
230254
@@ -234,23 +258,6 @@ configuration.
234258| Contact: Dave Airlie
235259| Complexity: Beginner
236260
237- Boot Falcon controller
238- ----------------------
239-
240- Infrastructure to load and execute falcon (sec2) firmware images; handle the
241- GSP falcon processor and fwsec loading.
242-
243- | Complexity: Advanced
244- | Contact: Dave Airlie
245-
246- GPU Timer support
247- -----------------
248-
249- Support for the GPU's internal timer peripheral.
250-
251- | Complexity: Beginner
252- | Contact: Dave Airlie
253-
254261MMU / PT management
255262-------------------
256263
0 commit comments