From 2f455813e07ee37b067499b5b2cb96d5693481fb Mon Sep 17 00:00:00 2001 From: Jon Lange Date: Mon, 27 Nov 2023 15:15:46 -0800 Subject: [PATCH] Create ACPI CPU information from IGVM parameters Signed-off-by: Jon Lange --- src/config.rs | 2 +- src/igvm_params.rs | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index a0383f210b..ef6cb046a3 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 c71befa921..fe49f9606f 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) + } }