From 40cebea7fbf60920550e385902afcbac8e875625 Mon Sep 17 00:00:00 2001 From: Jon Lange Date: Wed, 16 Oct 2024 15:33:05 -0700 Subject: [PATCH] platform: move AP page table construction into common code The process of cloning page tables to create the page table hierarchy for a new processor does not include platform-specific logic. Therefore it should not be implemented in the platform object. Signed-off-by: Jon Lange --- kernel/src/cpu/smp.rs | 2 ++ kernel/src/platform/snp.rs | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/src/cpu/smp.rs b/kernel/src/cpu/smp.rs index cd6a230ff..734bcdbf9 100644 --- a/kernel/src/cpu/smp.rs +++ b/kernel/src/cpu/smp.rs @@ -16,6 +16,8 @@ use crate::utils::immut_after_init::immut_after_init_set_multithreaded; fn start_cpu(platform: &dyn SvsmPlatform, apic_id: u32) -> Result<(), SvsmError> { let start_rip: u64 = (start_ap as *const u8) as u64; let percpu = PerCpu::alloc(apic_id)?; + let pgtable = this_cpu().get_pgtable().clone_shared()?; + percpu.setup(platform, pgtable)?; platform.start_cpu(percpu, start_rip)?; let percpu_shared = percpu.shared(); diff --git a/kernel/src/platform/snp.rs b/kernel/src/platform/snp.rs index 3efb69b57..85bbe6442 100644 --- a/kernel/src/platform/snp.rs +++ b/kernel/src/platform/snp.rs @@ -271,8 +271,6 @@ impl SvsmPlatform for SnpPlatform { } fn start_cpu(&self, cpu: &PerCpu, start_rip: u64) -> Result<(), SvsmError> { - let pgtable = this_cpu().get_pgtable().clone_shared()?; - cpu.setup(self, pgtable)?; let (vmsa_pa, sev_features) = cpu.alloc_svsm_vmsa(*VTOM as u64, start_rip)?; current_ghcb().ap_create(vmsa_pa, cpu.get_apic_id().into(), 0, sev_features)