Add the infrastructure for sending RM control RPCs. This is needed e.g. for channel allocation.
This series adds: - `NV_STATUS` bindings and wrapping `NvStatus` enum (used by RM control RPCs) - The necessary bindings for the RM control RPCs. - `RmControlMsgFunction` to identify individual control commands, like `MsgFunction` for GSP commands. - `SBufferIter::read_to_vec` (using KVVec) for reading large RPC payloads - A typed `RmControl` command that can send RM control commands. - One usage of `RmControl`: the `FaultMethodBufferSize` RPC. This is useful for channel allocation later. Each new RM control command can be added by extending `RmControlMsgFunction`, adding the bindings and wrappers for their parameters, and writing a type-safe wrapper to send and receive the reply for the RM control rpc, using `RmControl`. This series applies on latest drm-rust-next with the listed pre-requisites. Signed-off-by: Eliot Courtney <[email protected]> --- Changes in v3: - Remove `send_rm_control` in favour of a typed `RmControl` - Print out fault method buffer size at gsp boot - Remove Reviewed-by and Tested-by on some patches that have changed substantively. - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Introduce typed Handle<T> for RM objects. - Improve naming - Improve doc comments - Change SBufferIter to always use KVVec - flush_into_kvec -> read_to_vec - Rebased on latest cmdq locking - Link to v1: https://lore.kernel.org/r/[email protected] --- Eliot Courtney (9): gpu: nova-core: gsp: add NV_STATUS error code bindings gpu: nova-core: gsp: add NvStatus enum for RM control errors gpu: nova-core: gsp: expose GSP-RM internal client and subdevice handles gpu: nova-core: gsp: add RM control RPC structure binding gpu: nova-core: gsp: add types for RM control RPCs gpu: nova-core: use KVVec for SBufferIter flush gpu: nova-core: gsp: add RM control command infrastructure gpu: nova-core: gsp: add CE fault method buffer size bindings gpu: nova-core: gsp: add FaultMethodBufferSize RM control command drivers/gpu/nova-core/gsp.rs | 1 + drivers/gpu/nova-core/gsp/boot.rs | 11 + drivers/gpu/nova-core/gsp/commands.rs | 62 ++++ drivers/gpu/nova-core/gsp/fw.rs | 402 ++++++++++++++++++++++ drivers/gpu/nova-core/gsp/fw/commands.rs | 19 +- drivers/gpu/nova-core/gsp/fw/r570_144/bindings.rs | 161 +++++++++ drivers/gpu/nova-core/gsp/fw/rm.rs | 106 ++++++ drivers/gpu/nova-core/gsp/rm.rs | 3 + drivers/gpu/nova-core/gsp/rm/commands.rs | 167 +++++++++ drivers/gpu/nova-core/gsp/sequencer.rs | 4 +- drivers/gpu/nova-core/sbuffer.rs | 6 +- 11 files changed, 936 insertions(+), 6 deletions(-) --- base-commit: dff8302ca1d0e773c90dbeeb05e759f995c95482 change-id: 20260225-rmcontrol-bd8a06fc3a0d Best regards, -- Eliot Courtney <[email protected]>
