Re: [PATCH v3 9/9] gpu: nova-core: gsp: add tests for SplitState
From: Alexandre Courbot
Date: Fri Feb 27 2026 - 06:34:01 EST
On Thu Feb 26, 2026 at 8:45 PM JST, Eliot Courtney wrote:
> Add tests for SplitState. They cover boundary conditions at the split
> points to make sure the right number of continuation records are made.
> They also check that the data concatenated is correct.
>
> Tested-by: Zhi Wang <zhiw@xxxxxxxxxx>
> Signed-off-by: Eliot Courtney <ecourtney@xxxxxxxxxx>
> ---
> drivers/gpu/nova-core/gsp/commands.rs | 114 ++++++++++++++++++++++++++++++++++
> 1 file changed, 114 insertions(+)
>
> diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/gsp/commands.rs
> index 6ffd0b9cbf05..74f875755e53 100644
> --- a/drivers/gpu/nova-core/gsp/commands.rs
> +++ b/drivers/gpu/nova-core/gsp/commands.rs
> @@ -384,3 +384,117 @@ fn init_variable_payload(
> }
> }
> }
> +
> +#[kunit_tests(nova_core_gsp_commands)]
> +mod tests {
> + use super::*;
> +
> + struct TestPayload {
> + data: KVVec<u8>,
> + }
> +
> + impl TestPayload {
> + fn generate_pattern(len: usize) -> Result<KVVec<u8>> {
> + let mut data = KVVec::with_capacity(len, GFP_KERNEL)?;
> + for i in 0..len {
> + data.push(i as u8, GFP_KERNEL)?;
> + }
> + Ok(data)
> + }
> +
> + fn new(len: usize) -> Result<Self> {
> + Ok(Self {
> + data: Self::generate_pattern(len)?,
> + })
> + }
> + }
> +
> + impl CommandToGsp for TestPayload {
> + const FUNCTION: MsgFunction = MsgFunction::Nop;
> + type Command = ();
Since we are testing the size of the data written on the command queue,
can you make the command itself larger than 0 bytes? Otherwise there is
a potential for missing errors.
I'm saying that because it actually happened to me, I used
`MAX_CMD_SIZE` instead of `MAX_CMD_SIZE - size_of::<C::Command>()`
somewhere, and despite it being broken the tests were passing.