On Mon Mar 2, 2026 at 11:42 AM GMT, Eliot Courtney wrote: > There is no particular order required here and keeping them alphabetical > will help preventing future mistakes.
Looks like the current order is in increasing opcode order. Granted, currently they're generated in bindings and then included as such, but perhaps eventually Rust code can be generated directly so the ordering could make sense? Best, Gary > > Tested-by: Zhi Wang <[email protected]> > Signed-off-by: Eliot Courtney <[email protected]> > --- > drivers/gpu/nova-core/gsp/fw.rs | 67 > +++++++++++++++++++++-------------------- > 1 file changed, 35 insertions(+), 32 deletions(-) > > diff --git a/drivers/gpu/nova-core/gsp/fw.rs b/drivers/gpu/nova-core/gsp/fw.rs > index f1797e1f0d9d..4b998485360b 100644 > --- a/drivers/gpu/nova-core/gsp/fw.rs > +++ b/drivers/gpu/nova-core/gsp/fw.rs > @@ -191,34 +191,34 @@ pub(crate) fn new(gsp_firmware: &GspFirmware, > fb_layout: &FbLayout) -> Self { > #[repr(u32)] > pub(crate) enum MsgFunction { > // Common function codes > - Nop = bindings::NV_VGPU_MSG_FUNCTION_NOP, > - SetGuestSystemInfo = > bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM_INFO, > - AllocRoot = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT, > + AllocChannelDma = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA, > + AllocCtxDma = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA, > AllocDevice = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_DEVICE, > AllocMemory = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY, > - AllocCtxDma = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA, > - AllocChannelDma = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA, > - MapMemory = bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY, > - BindCtxDma = bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA, > AllocObject = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_OBJECT, > + AllocRoot = bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT, > + BindCtxDma = bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA, > Free = bindings::NV_VGPU_MSG_FUNCTION_FREE, > - Log = bindings::NV_VGPU_MSG_FUNCTION_LOG, > GetGspStaticInfo = bindings::NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INFO, > - SetRegistry = bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY, > - GspSetSystemInfo = bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INFO, > + GetStaticInfo = bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO, > GspInitPostObjGpu = bindings::NV_VGPU_MSG_FUNCTION_GSP_INIT_POST_OBJGPU, > GspRmControl = bindings::NV_VGPU_MSG_FUNCTION_GSP_RM_CONTROL, > - GetStaticInfo = bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO, > + GspSetSystemInfo = bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INFO, > + Log = bindings::NV_VGPU_MSG_FUNCTION_LOG, > + MapMemory = bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY, > + Nop = bindings::NV_VGPU_MSG_FUNCTION_NOP, > + SetGuestSystemInfo = > bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM_INFO, > + SetRegistry = bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY, > > // Event codes > GspInitDone = bindings::NV_VGPU_MSG_EVENT_GSP_INIT_DONE, > + GspLockdownNotice = bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE, > + GspPostNoCat = bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD, > GspRunCpuSequencer = bindings::NV_VGPU_MSG_EVENT_GSP_RUN_CPU_SEQUENCER, > - PostEvent = bindings::NV_VGPU_MSG_EVENT_POST_EVENT, > - RcTriggered = bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED, > MmuFaultQueued = bindings::NV_VGPU_MSG_EVENT_MMU_FAULT_QUEUED, > OsErrorLog = bindings::NV_VGPU_MSG_EVENT_OS_ERROR_LOG, > - GspPostNoCat = bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD, > - GspLockdownNotice = bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE, > + PostEvent = bindings::NV_VGPU_MSG_EVENT_POST_EVENT, > + RcTriggered = bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED, > UcodeLibOsPrint = bindings::NV_VGPU_MSG_EVENT_UCODE_LIBOS_PRINT, > } > > @@ -227,38 +227,41 @@ impl TryFrom<u32> for MsgFunction { > > fn try_from(value: u32) -> Result<MsgFunction> { > match value { > - bindings::NV_VGPU_MSG_FUNCTION_NOP => Ok(MsgFunction::Nop), > - bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM_INFO => { > - Ok(MsgFunction::SetGuestSystemInfo) > - } > - bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT => > Ok(MsgFunction::AllocRoot), > + // Common function codes > + bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA => > Ok(MsgFunction::AllocChannelDma), > + bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA => > Ok(MsgFunction::AllocCtxDma), > bindings::NV_VGPU_MSG_FUNCTION_ALLOC_DEVICE => > Ok(MsgFunction::AllocDevice), > bindings::NV_VGPU_MSG_FUNCTION_ALLOC_MEMORY => > Ok(MsgFunction::AllocMemory), > - bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CTX_DMA => > Ok(MsgFunction::AllocCtxDma), > - bindings::NV_VGPU_MSG_FUNCTION_ALLOC_CHANNEL_DMA => > Ok(MsgFunction::AllocChannelDma), > - bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY => > Ok(MsgFunction::MapMemory), > - bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA => > Ok(MsgFunction::BindCtxDma), > bindings::NV_VGPU_MSG_FUNCTION_ALLOC_OBJECT => > Ok(MsgFunction::AllocObject), > + bindings::NV_VGPU_MSG_FUNCTION_ALLOC_ROOT => > Ok(MsgFunction::AllocRoot), > + bindings::NV_VGPU_MSG_FUNCTION_BIND_CTX_DMA => > Ok(MsgFunction::BindCtxDma), > bindings::NV_VGPU_MSG_FUNCTION_FREE => Ok(MsgFunction::Free), > - bindings::NV_VGPU_MSG_FUNCTION_LOG => Ok(MsgFunction::Log), > bindings::NV_VGPU_MSG_FUNCTION_GET_GSP_STATIC_INFO => > Ok(MsgFunction::GetGspStaticInfo), > - bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY => > Ok(MsgFunction::SetRegistry), > - bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INFO => > Ok(MsgFunction::GspSetSystemInfo), > + bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO => > Ok(MsgFunction::GetStaticInfo), > bindings::NV_VGPU_MSG_FUNCTION_GSP_INIT_POST_OBJGPU => { > Ok(MsgFunction::GspInitPostObjGpu) > } > bindings::NV_VGPU_MSG_FUNCTION_GSP_RM_CONTROL => > Ok(MsgFunction::GspRmControl), > - bindings::NV_VGPU_MSG_FUNCTION_GET_STATIC_INFO => > Ok(MsgFunction::GetStaticInfo), > + bindings::NV_VGPU_MSG_FUNCTION_GSP_SET_SYSTEM_INFO => > Ok(MsgFunction::GspSetSystemInfo), > + bindings::NV_VGPU_MSG_FUNCTION_LOG => Ok(MsgFunction::Log), > + bindings::NV_VGPU_MSG_FUNCTION_MAP_MEMORY => > Ok(MsgFunction::MapMemory), > + bindings::NV_VGPU_MSG_FUNCTION_NOP => Ok(MsgFunction::Nop), > + bindings::NV_VGPU_MSG_FUNCTION_SET_GUEST_SYSTEM_INFO => { > + Ok(MsgFunction::SetGuestSystemInfo) > + } > + bindings::NV_VGPU_MSG_FUNCTION_SET_REGISTRY => > Ok(MsgFunction::SetRegistry), > + > + // Event codes > bindings::NV_VGPU_MSG_EVENT_GSP_INIT_DONE => > Ok(MsgFunction::GspInitDone), > + bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE => > Ok(MsgFunction::GspLockdownNotice), > + bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD => > Ok(MsgFunction::GspPostNoCat), > bindings::NV_VGPU_MSG_EVENT_GSP_RUN_CPU_SEQUENCER => { > Ok(MsgFunction::GspRunCpuSequencer) > } > - bindings::NV_VGPU_MSG_EVENT_POST_EVENT => > Ok(MsgFunction::PostEvent), > - bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED => > Ok(MsgFunction::RcTriggered), > bindings::NV_VGPU_MSG_EVENT_MMU_FAULT_QUEUED => > Ok(MsgFunction::MmuFaultQueued), > bindings::NV_VGPU_MSG_EVENT_OS_ERROR_LOG => > Ok(MsgFunction::OsErrorLog), > - bindings::NV_VGPU_MSG_EVENT_GSP_POST_NOCAT_RECORD => > Ok(MsgFunction::GspPostNoCat), > - bindings::NV_VGPU_MSG_EVENT_GSP_LOCKDOWN_NOTICE => > Ok(MsgFunction::GspLockdownNotice), > + bindings::NV_VGPU_MSG_EVENT_POST_EVENT => > Ok(MsgFunction::PostEvent), > + bindings::NV_VGPU_MSG_EVENT_RC_TRIGGERED => > Ok(MsgFunction::RcTriggered), > bindings::NV_VGPU_MSG_EVENT_UCODE_LIBOS_PRINT => > Ok(MsgFunction::UcodeLibOsPrint), > _ => Err(EINVAL), > }
