diff --git a/vmm/src/cpu.rs b/vmm/src/cpu.rs index 9671ac7a5..37e96e806 100644 --- a/vmm/src/cpu.rs +++ b/vmm/src/cpu.rs @@ -186,6 +186,9 @@ pub enum Error { /// Error populating CPUID with CPU identification #[cfg(target_arch = "x86_64")] CpuidIdentification(vmm_sys_util::fam::Error), + + #[cfg(feature = "tdx")] + InitializeTdx(hypervisor::HypervisorCpuError), } pub type Result = result::Result; @@ -1083,6 +1086,18 @@ impl CpuManager { Ok(()) } + #[cfg(feature = "tdx")] + pub fn initialize_tdx(&self, hob_address: u64) -> Result<()> { + for vcpu in &self.vcpus { + vcpu.lock() + .unwrap() + .vcpu + .tdx_init(hob_address) + .map_err(Error::InitializeTdx)?; + } + Ok(()) + } + pub fn boot_vcpus(&self) -> u8 { self.config.boot_vcpus }