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 <[email protected]>
---
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,

Reply via email to