On 2/11/26 10:28 PM, Eliot Courtney wrote:
> GSP commands over 16 pages need to be sent using "continuation records"
> which essentially means splitting the payload over multiple commands.
Let's please include rust-for-linux on Cc for Nova patches, for a while
longer at least.
thanks,
John Hubbard
>
> This series adds a command type `ContinuationRecord` which just writes
> its header and whatever payload it is given. It also adds a type
> `WrappingCommand` which supports splitting a large RPC into smaller
> ones.
>
> The send pathway uses `WrappingCommand` to send all commands, but if
> the command fits into 16 pages, it still writes directly into the
> command queue. If it is larger than 16 pages and needs continuation
> records, it writes into a staging buffer, so there is one copy.
>
> This patch series uses EIO for mis-sized commands to be consistent with
> the rest of the code.
>
> Patch 6 introduces a single helper send_continuation_record. This is
> because the compiler can't properly infer the types without this.
>
> Signed-off-by: Eliot Courtney <ecourtney@nvidia.com>
> ---
> Eliot Courtney (7):
> gpu: nova-core: gsp: sort MsgFunction variants alphabetically
> gpu: nova-core: gsp: add mechanism to wait for space on command queue
> gpu: nova-core: gsp: add checking oversized commands
> gpu: nova-core: gsp: clarify invariant on command queue
> gpu: nova-core: gsp: unconditionally call variable payload handling
> gpu: nova-core: gsp: support large RPCs via continuation record
> gpu: nova-core: gsp: add tests for WrappingCommand
>
> drivers/gpu/nova-core/gsp/cmdq.rs | 113 ++++++++++++++--
> drivers/gpu/nova-core/gsp/commands.rs | 247 ++++++++++++++++++++++++++++++++++
> drivers/gpu/nova-core/gsp/fw.rs | 102 +++++++-------
> 3 files changed, 401 insertions(+), 61 deletions(-)
> ---
> base-commit: cea7b66a80412e2a5b74627b89ae25f1d0110a4b
> change-id: 20260203-cmdq-continuation-b99f3d5966c3
>
> Best regards,