On Tue Dec 9, 2025 at 8:18 AM JST, Timur Tabi wrote: > On Turing and GA100 (i.e. the versions that use Libos v2), GSP-RM insists > that the 'size' parameter of the LibosMemoryRegionInitArgument struct be > aligned to 4KB. The logging buffers are already aligned to that size, so > only the GSP_ARGUMENTS_CACHED struct needs to be adjusted. Make that > adjustment by adding padding to the end of the struct. > > Signed-off-by: Timur Tabi <[email protected]> > --- > drivers/gpu/nova-core/gsp/fw.rs | 24 +++++++++++++++++------- > 1 file changed, 17 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw.rs > index abffd6beec65..6f53df0f6f3d 100644 > --- a/drivers/gpu/nova-core/gsp/fw.rs > +++ b/drivers/gpu/nova-core/gsp/fw.rs > @@ -889,17 +889,27 @@ unsafe impl AsBytes for GspMsgElement {} > unsafe impl FromBytes for GspMsgElement {} > > /// Arguments for GSP startup. > -#[repr(transparent)] > -pub(crate) struct GspArgumentsCached(bindings::GSP_ARGUMENTS_CACHED); > +/// > +/// On Turing and GA100, the entries in the `LibosMemoryRegionInitArgument` > +/// must all be a multiple of GSP_PAGE_SIZE in size, so add padding to force > it > +/// to that size. > +#[repr(C)] > +pub(crate) struct GspArgumentsCached( > + bindings::GSP_ARGUMENTS_CACHED, > + [u8; GSP_PAGE_SIZE - > core::mem::size_of::<bindings::GSP_ARGUMENTS_CACHED>()], > +); > > impl GspArgumentsCached { > /// Creates the arguments for starting the GSP up using `cmdq` as its > command queue. > pub(crate) fn new(cmdq: &Cmdq) -> Self { > - Self(bindings::GSP_ARGUMENTS_CACHED { > - messageQueueInitArguments: > MessageQueueInitArguments::new(cmdq).0, > - bDmemStack: 1, > - ..Default::default() > - }) > + Self( > + bindings::GSP_ARGUMENTS_CACHED { > + messageQueueInitArguments: > MessageQueueInitArguments::new(cmdq).0, > + bDmemStack: 1, > + ..Default::default() > + }, > + [0u8; GSP_PAGE_SIZE - > core::mem::size_of::<bindings::GSP_ARGUMENTS_CACHED>()]
You can use `Zeroable::zeroed()` instead of this last complex line.
