Skip to content

Commit

Permalink
INIT_VCPU ioctl
Browse files Browse the repository at this point in the history
Implement the KVM_TDX_INIT_VCPU ioctl.

Signed-off-by: Jake Correnti <[email protected]>
  • Loading branch information
jakecorrenti committed Mar 21, 2024
1 parent 6221c28 commit 2f0863c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@ rust-version = "1.71"

[dependencies]
bitflags = "2.4.2"
kvm-bindings = "0.7.0"
kvm-ioctls = "0.16.0"
vmm-sys-util = "0.12.1"
2 changes: 2 additions & 0 deletions src/vcpu/linux/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
// SPDX-License-Identifier: Apache-2.0

pub mod ioctl;
26 changes: 26 additions & 0 deletions src/vcpu/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1,27 @@
// SPDX-License-Identifier: Apache-2.0

mod linux;

use crate::linux::{Cmd, TdxError};
use kvm_bindings::*;
use vmm_sys_util::*;

vmm_sys_util::ioctl_iowr_nr!(KVM_MEMORY_ENCRYPT_OP, KVMIO, 0xba, std::os::raw::c_ulong);

impl crate::vm::TdxVm {
/// TDX specific VCPU initialization using a TDVF HOB address
pub fn init_vcpu(vcpu: &kvm_ioctls::VcpuFd, hob_addr: u64) -> Result<(), TdxError> {
let mut cmd = Cmd {
id: 2,
flags: 0,
data: hob_addr as *const u64 as _,
error: 0,
_unused: 0,
};
let ret = unsafe { ioctl::ioctl_with_mut_ptr(vcpu, KVM_MEMORY_ENCRYPT_OP(), &mut cmd) };
if ret < 0 {
return Err(TdxError::from(ret));
}
Ok(())
}
}

0 comments on commit 2f0863c

Please sign in to comment.