mirror of
https://github.com/mbilker/vgpu_unlock-rs.git
synced 2025-10-29 12:20:11 +01:00
Allow unlocking VM migration/snapshot support
This also requires NV_KVM_MIGRATION_UAPI to be set to 1 when building the `nvidia-vgpu-vfio` kernel module, hence why unlocking this feature is only conditionally enabled, since not everyone will want it. Signed-off-by: kharbranth <cityofkharbranth@protonmail.com>
This commit is contained in:
@@ -7,12 +7,18 @@ impl Defaults {
|
||||
const fn unlock() -> bool {
|
||||
true
|
||||
}
|
||||
#[inline]
|
||||
const fn unlock_migration() -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct Config {
|
||||
#[serde(default = "Defaults::unlock")]
|
||||
pub unlock: bool,
|
||||
#[serde(default = "Defaults::unlock_migration")]
|
||||
pub unlock_migration: bool,
|
||||
}
|
||||
|
||||
impl Default for Config {
|
||||
@@ -20,6 +26,7 @@ impl Default for Config {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
unlock: Defaults::unlock(),
|
||||
unlock_migration: Defaults::unlock_migration(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
11
src/lib.rs
11
src/lib.rs
@@ -75,6 +75,9 @@ const OP_READ_PCI_ID: u32 = 0x20801801;
|
||||
/// `result` is a pointer to `VgpuConfig`.
|
||||
const OP_READ_VGPU_CFG: u32 = 0xa0820102;
|
||||
|
||||
/// `result` is a pointer to `bool`.
|
||||
const OP_READ_VGPU_MIG_CAP: u32 = 0xa0810112;
|
||||
|
||||
/// `nvidia-vgpu-mgr` expects this value for a vGPU capable GPU.
|
||||
const DEV_TYPE_VGPU_CAPABLE: u32 = 3;
|
||||
|
||||
@@ -340,10 +343,16 @@ pub unsafe extern "C" fn ioctl(fd: RawFd, request: c_ulong, argp: *mut c_void) -
|
||||
|
||||
// Set device type to vGPU capable.
|
||||
*dev_type_ptr = DEV_TYPE_VGPU_CAPABLE;
|
||||
}
|
||||
},
|
||||
OP_READ_VGPU_MIG_CAP if CONFIG.unlock_migration => {
|
||||
let mig_enabled: *mut bool = io_data.result.cast();
|
||||
|
||||
*mig_enabled = true;
|
||||
},
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
||||
if io_data.status == STATUS_OK {
|
||||
match io_data.op_type {
|
||||
OP_READ_VGPU_CFG => {
|
||||
|
||||
Reference in New Issue
Block a user