From 1603786374b17e4230462d3d8439a4733573363b Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Wed, 8 Jul 2020 15:12:27 +0200 Subject: [PATCH] vmm: Pass MemoryManager through CpuManager creation Instead of passing the GuestMemoryMmap directly to the CpuManager upon its creation, it's better to pass a reference to the MemoryManager. This way we will be able to know if SGX EPC region along with one or multiple sections are present. Signed-off-by: Sebastien Boeuf --- vmm/src/cpu.rs | 4 +++- vmm/src/vm.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/vmm/src/cpu.rs b/vmm/src/cpu.rs index 60f18e34e..0b3144a2c 100644 --- a/vmm/src/cpu.rs +++ b/vmm/src/cpu.rs @@ -15,6 +15,7 @@ use crate::config::CpuTopology; use crate::config::CpusConfig; use crate::device_manager::DeviceManager; +use crate::memory_manager::MemoryManager; use crate::CPU_MANAGER_SNAPSHOT_ID; #[cfg(feature = "acpi")] use acpi_tables::{aml, aml::Aml, sdt::SDT}; @@ -579,11 +580,12 @@ impl CpuManager { pub fn new( config: &CpusConfig, device_manager: &Arc>, - guest_memory: GuestMemoryAtomic, + memory_manager: &Arc>, vm: Arc, reset_evt: EventFd, hypervisor: Arc, ) -> Result>> { + let guest_memory = memory_manager.lock().unwrap().guest_memory(); let mut vcpu_states = Vec::with_capacity(usize::from(config.max_vcpus)); vcpu_states.resize_with(usize::from(config.max_vcpus), VcpuState::default); diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 3e0ab107e..fd28d9fa3 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -293,7 +293,7 @@ impl Vm { let cpu_manager = cpu::CpuManager::new( &config.lock().unwrap().cpus.clone(), &device_manager, - memory_manager.lock().unwrap().guest_memory(), + &memory_manager, vm.clone(), reset_evt, hypervisor,