vmm: set SEV control register for SEV-Enabled guest

Set the SEV control register so we know where to
start running.  This register configures the
SEV feature control state on a virtual processor.

Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
Signed-off-by: Muminul Islam <muislam@microsoft.com>
This commit is contained in:
Muminul Islam
2024-01-18 17:36:28 -08:00
committed by Bo Chen
parent 5368ff28da
commit 51ebc3ac92
2 changed files with 44 additions and 4 deletions

View File

@@ -544,6 +544,8 @@ impl Vm {
#[cfg(feature = "tdx")]
tdx_enabled,
&numa_nodes,
#[cfg(feature = "sev_snp")]
sev_snp_enabled,
)
.map_err(Error::CpuManager)?;
@@ -998,12 +1000,21 @@ impl Vm {
memory_manager: Arc<Mutex<MemoryManager>>,
cpu_manager: Arc<Mutex<cpu::CpuManager>>,
) -> Result<EntryPoint> {
let res = igvm_loader::load_igvm(&igvm, memory_manager, cpu_manager, "")
let res = igvm_loader::load_igvm(&igvm, memory_manager, cpu_manager.clone(), "")
.map_err(Error::IgvmLoad)?;
Ok(EntryPoint {
entry_addr: vm_memory::GuestAddress(res.vmsa.rip),
})
cfg_if::cfg_if! {
if #[cfg(feature = "sev_snp")] {
let entry_point = if cpu_manager.lock().unwrap().sev_snp_enabled() {
EntryPoint { entry_addr: vm_memory::GuestAddress(res.vmsa_gpa) }
} else {
EntryPoint {entry_addr: vm_memory::GuestAddress(res.vmsa.rip) }
};
} else {
let entry_point = EntryPoint { entry_addr: vm_memory::GuestAddress(res.vmsa.rip) };
}
};
Ok(entry_point)
}
#[cfg(target_arch = "x86_64")]