diff --git a/src/config.rs b/src/config.rs index a0383f210..ef6cb046a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -54,7 +54,7 @@ impl<'a> SvsmConfig<'a> { pub fn load_cpu_info(&self) -> Result, SvsmError> { match self { SvsmConfig::FirmwareConfig(fw_cfg) => load_acpi_cpu_info(fw_cfg), - &SvsmConfig::IgvmConfig(_) => todo!(), + SvsmConfig::IgvmConfig(igvm_params) => igvm_params.load_cpu_info(), } } pub fn should_launch_fw(&self) -> bool { diff --git a/src/igvm_params.rs b/src/igvm_params.rs index c71befa92..fe49f9606 100644 --- a/src/igvm_params.rs +++ b/src/igvm_params.rs @@ -6,6 +6,7 @@ extern crate alloc; +use crate::acpi::tables::ACPICPUInfo; use crate::address::{PhysAddr, VirtAddr}; use crate::error::SvsmError; use crate::error::SvsmError::Firmware; @@ -112,4 +113,16 @@ impl IgvmParams<'_> { Ok(regions) } + + pub fn load_cpu_info(&self) -> Result, SvsmError> { + let mut cpus: Vec = Vec::new(); + for i in 0..self.igvm_param_page.cpu_count { + let cpu = ACPICPUInfo { + apic_id: i, + enabled: true, + }; + cpus.push(cpu); + } + Ok(cpus) + } }