diff options
| -rw-r--r-- | drivers/gpu/nova-core/gsp.rs | 1 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/gsp/boot.rs | 2 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/gsp/commands.rs | 14 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/vgpu.rs | 1 |
4 files changed, 14 insertions, 4 deletions
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 @@ impl super::Gsp { 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 @@ use crate::{ }, }, 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<Self> { + pub(crate) fn new(vgpu_state: VgpuState) -> Result<Self> { let mut entries = KVec::new(); // RMSecBusResetEnable - enables PCI secondary bus reset @@ -104,6 +105,17 @@ impl SetRegistry { 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 @@ impl VgpuManager { } /// Returns the detected vGPU state for this boot. - #[expect(dead_code)] pub(crate) fn state(&self) -> VgpuState { self.state } |
