Taking over this series while Alistair is on holidays. This revision is mostly a polishing of v6, notably by removing the use of `as` thanks to the newly-introduced `num` module [1]. It also addresses some leftover feedback from v5.
I still need to do an extensive review of the top patches, but I think the command queue basics should be looking close to what we want. Caveat, they will evolve once we support interrupts. One patch that needs particular attention is "rust: enable slice_flatten feature and abstract it through an extension trait", as it abstracts the slice flatten feature that has been stabilized in 1.80. I hope I captured Miguel's proposal correctly. A branch including this series and its dependencies is available at [2]. [1] https://lore.kernel.org/rust-for-linux/[email protected]/T/#t [2] https://github.com/Gnurou/linux/tree/b4/gsp_boot Changes in v7: - Remove `as` conversions by using the features of the `num` module. - Add build-time conversion of constant integer values to smaller types. - Thanks to the two items above, make more functions infallible. - Remove unneeded `nr_ptes` member of the `Cmdq`. - Use `repr(u32)` for `MsgFunction` to simplify it. - Use `from_ref` instead of casting references into pointers with `as`. - Add message header version type to remove use of magic number. - Switch some parameters to `usize` to limit type conversions. - Add comments for undocumented functions. - Remove `function_number` method of `GspMsgElement` and return invalid function numbers as the error value of `function` instead. - Work around the renaming of `slice::flatten` to `slice::as_flattened` in Rust 1.80 (thanks Miguel!). - Fix clippy warning with Rust 1.78. - Link to v6: https://lore.kernel.org/r/[email protected]/ Signed-off-by: Alexandre Courbot <[email protected]> --- Alexandre Courbot (3): gpu: nova-core: compute layout of more framebuffer regions required for GSP gpu: nova-core: num: add functions to safely convert a const value to a smaller type rust: enable slice_flatten feature and abstract it through an extension trait Alistair Popple (8): gpu: nova-core: Set correct DMA mask gpu: nova-core: Create initial Gsp gpu: nova-core: gsp: Create wpr metadata gpu: nova-core: Add zeroable trait to bindings gpu: nova-core: gsp: Add GSP command queue bindings and handling gpu: nova-core: gsp: Create rmargs gpu: nova-core: gsp: Add RM registry and sysinfo bindings and commands nova-core: gsp: Boot GSP Joel Fernandes (3): gpu: nova-core: Add a slice-buffer (sbuffer) datastructure nova-core: falcon: Add support to check if RISC-V is active nova-core: falcon: Add support to write firmware version drivers/gpu/nova-core/driver.rs | 16 + drivers/gpu/nova-core/falcon.rs | 15 + drivers/gpu/nova-core/fb.rs | 68 ++- drivers/gpu/nova-core/firmware/gsp.rs | 7 +- drivers/gpu/nova-core/firmware/riscv.rs | 11 +- drivers/gpu/nova-core/gpu.rs | 2 +- drivers/gpu/nova-core/gsp.rs | 142 ++++- drivers/gpu/nova-core/gsp/boot.rs | 80 ++- drivers/gpu/nova-core/gsp/cmdq.rs | 522 ++++++++++++++++ drivers/gpu/nova-core/gsp/commands.rs | 117 ++++ drivers/gpu/nova-core/gsp/fw.rs | 599 +++++++++++++++++- drivers/gpu/nova-core/gsp/fw/commands.rs | 100 +++ drivers/gpu/nova-core/gsp/fw/r570_144.rs | 2 +- drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 703 ++++++++++++++++++++++ drivers/gpu/nova-core/nova_core.rs | 1 + drivers/gpu/nova-core/num.rs | 49 ++ drivers/gpu/nova-core/regs.rs | 17 +- drivers/gpu/nova-core/sbuffer.rs | 222 +++++++ init/Kconfig | 3 + rust/kernel/lib.rs | 4 + rust/kernel/slice.rs | 63 ++ scripts/Makefile.build | 3 +- 22 files changed, 2715 insertions(+), 31 deletions(-) --- base-commit: ed136b2f7e5c159324b27d1e761bad753d2a711e change-id: 20251027-gsp_boot-c6bb048a304e Best regards, -- Alexandre Courbot <[email protected]>
