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 <[email protected]> > Signed-off-by: Eliot Courtney <[email protected]> > --- > 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.
