diff --git a/drivers/gpu/nova-core/gsp.rs b/drivers/gpu/nova-core/gsp.rs index d3c97da5848c..b403dc3515a5 100644 --- a/drivers/gpu/nova-core/gsp.rs +++ b/drivers/gpu/nova-core/gsp.rs @@ -68,7 +68,6 @@ pub(crate) struct GspBootContext<'ctx, 'gpu> { pub(crate) gsp_falcon: &'ctx Falcon<'gpu, GspFalcon>, pub(crate) sec2_falcon: &'ctx Falcon<'gpu, Sec2Falcon>, pub(crate) fsp: Option<&'ctx mut Fsp<'gpu>>, - #[expect(dead_code)] pub(crate) vgpu: &'ctx VgpuManager, } diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/boot.rs index 6b7d00205000..a2e8342e7760 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -89,7 +89,7 @@ pub(crate) fn boot( self.cmdq .send_command_no_wait(bar, commands::SetSystemInfo::new(pdev, chipset))?; self.cmdq - .send_command_no_wait(bar, commands::SetRegistry::new()?)?; + .send_command_no_wait(bar, commands::SetRegistry::new(ctx.vgpu.state())?)?; hal.post_boot(&self, ctx, &gsp_fw)?; diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/gsp/commands.rs index 08380de39048..134f34b19174 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -34,6 +34,7 @@ }, }, sbuffer::SBufferIter, + vgpu::VgpuState, // }; /// The `GspSetSystemInfo` command. @@ -72,7 +73,7 @@ pub(crate) struct SetRegistry { impl SetRegistry { /// Creates a new `SetRegistry` command, using a set of hardcoded entries. - pub(crate) fn new() -> Result { + pub(crate) fn new(vgpu_state: VgpuState) -> Result { let mut entries = KVec::new(); // RMSecBusResetEnable - enables PCI secondary bus reset @@ -104,6 +105,17 @@ pub(crate) fn new() -> Result { GFP_KERNEL, )?; + if matches!(vgpu_state, VgpuState::Enabled { .. }) { + // RMSetSriovMode - required when vGPU is enabled. + entries.push( + RegistryEntry { + key: "RMSetSriovMode", + value: 1, + }, + GFP_KERNEL, + )?; + } + Ok(Self { entries }) } } diff --git a/drivers/gpu/nova-core/vgpu.rs b/drivers/gpu/nova-core/vgpu.rs index 71fd0fe879c2..5359847e2eb9 100644 --- a/drivers/gpu/nova-core/vgpu.rs +++ b/drivers/gpu/nova-core/vgpu.rs @@ -86,7 +86,6 @@ fn detect_state( } /// Returns the detected vGPU state for this boot. - #[expect(dead_code)] pub(crate) fn state(&self) -> VgpuState { self.state }