Changes since v1: - Based on feed back from Alex the GSP command queue logic was reworked extensively. This involved creating a new data struct (DmaGspMem) to manage the shared memory areas between CPU and GSP.
- This data structure helps ensure the safety constraints are meet when the CPU is reading/writing the shared memory queues. - Several other minor comments were addressed, as noted in the individual patches. This series builds on top of Alex's series[1], most of which has been merged into drm-rust-next, to continue initialising the GSP into a state where it becomes active and it starts communicating with the host. A tree including these patches with the prerequisite patches is available at [2]. It includes patches to initialise several important data structures required to boot the GSP. The biggest change is the implementation of the command/message circular queue used to establish communication between GSP and host in patch 6. Admittedly this patch is rather large - if necessary it could be split into send and receive patches if people prefer. This is required to configure and boot the GSP. However this series does not get the GSP to a fully active state. Instead it gets it to a state where the GSP sends a message to the host with a sequence of instructions which need running to get to the active state. A subsequent series will implement processing of this message and allow the GSP to get to the fully active state. A full tree including the prerequisites for this patch series is available at https://github.com/apopple-nvidia/linux/tree/nova-core-for-upstream. [1] - https://lore.kernel.org/rust-for-linux/20250911-nova_firmware-v5-0-5a8a33bdd...@nvidia.com/ [2] - https://github.com/apopple-nvidia/linux/tree/nova-core-for-upstream-v2 To: rust-for-li...@vger.kernel.org To: dri-devel@lists.freedesktop.org To: Danilo Krummrich <d...@kernel.org> To: Alexandre Courbot <acour...@nvidia.com> Cc: Miguel Ojeda <oj...@kernel.org> Cc: Alex Gaynor <alex.gay...@gmail.com> Cc: Boqun Feng <boqun.f...@gmail.com> Cc: Gary Guo <g...@garyguo.net> Cc: Björn Roy Baron <bjorn3...@protonmail.com> Cc: Benno Lossin <los...@kernel.org> Cc: Andreas Hindborg <a.hindb...@kernel.org> Cc: Alice Ryhl <alicer...@google.com> Cc: Trevor Gross <tmgr...@umich.edu> Cc: David Airlie <airl...@gmail.com> Cc: Simona Vetter <sim...@ffwll.ch> Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com> Cc: Maxime Ripard <mrip...@kernel.org> Cc: Thomas Zimmermann <tzimmerm...@suse.de> Cc: John Hubbard <jhubb...@nvidia.com> Cc: Joel Fernandes <joelagn...@nvidia.com> Cc: Timur Tabi <tt...@nvidia.com> Cc: linux-ker...@vger.kernel.org Cc: nouv...@lists.freedesktop.org Alistair Popple (8): rust: Add several miscellaneous PCI helpers gpu: nova-core: Set correct DMA mask gpu: nova-core: Create initial Gsp gpu: nova-core: gsp: Create wpr metadata gpu: nova-core: gsp: Add GSP command queue handling gpu: nova-core: gsp: Create rmargs gpu: nova-core: gsp: Create RM registry and sysinfo 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 | 8 +- drivers/gpu/nova-core/falcon.rs | 16 + drivers/gpu/nova-core/fb.rs | 1 - drivers/gpu/nova-core/firmware/gsp.rs | 3 +- drivers/gpu/nova-core/firmware/riscv.rs | 9 +- drivers/gpu/nova-core/gpu.rs | 2 +- drivers/gpu/nova-core/gsp.rs | 119 +++- drivers/gpu/nova-core/gsp/boot.rs | 69 ++- drivers/gpu/nova-core/gsp/cmdq.rs | 430 +++++++++++++ drivers/gpu/nova-core/gsp/commands.rs | 140 +++++ drivers/gpu/nova-core/gsp/fw.rs | 255 +++++++- .../gpu/nova-core/gsp/fw/r570_144/bindings.rs | 577 ++++++++++++++++++ drivers/gpu/nova-core/nova_core.rs | 1 + drivers/gpu/nova-core/regs.rs | 15 + drivers/gpu/nova-core/sbuffer.rs | 188 ++++++ rust/helpers/pci.c | 10 + rust/kernel/pci.rs | 36 ++ 17 files changed, 1857 insertions(+), 22 deletions(-) create mode 100644 drivers/gpu/nova-core/gsp/cmdq.rs create mode 100644 drivers/gpu/nova-core/gsp/commands.rs create mode 100644 drivers/gpu/nova-core/sbuffer.rs -- 2.50.1