From ef2b11ee6c2f11afe53752eb444b59c2b5cc3e6d Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Mon, 16 Mar 2020 18:04:50 +0100 Subject: [PATCH] vmm: memory_manager: Pass MemoryConfig to simplify the new() prototype Signed-off-by: Samuel Ortiz --- vmm/src/memory_manager.rs | 32 ++++++++++++++------------------ vmm/src/vm.rs | 9 +-------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index 23b99dfdc..fffb3f01f 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 // -use crate::config::HotplugMethod; +use crate::config::{HotplugMethod, MemoryConfig}; #[cfg(feature = "acpi")] use acpi_tables::{aml, aml::Aml}; use arch::RegionType; @@ -209,14 +209,10 @@ impl MemoryManager { pub fn new( allocator: Arc>, fd: Arc, - boot_ram: u64, - hotplug_method: HotplugMethod, - hotplug_size: Option, - backing_file: &Option, - mergeable: bool, + config: &MemoryConfig, ) -> Result>, Error> { // Init guest memory - let arch_mem_regions = arch::arch_memory_regions(boot_ram); + let arch_mem_regions = arch::arch_memory_regions(config.size); let ram_regions: Vec<(GuestAddress, usize)> = arch_mem_regions .iter() @@ -227,7 +223,7 @@ impl MemoryManager { let mut mem_regions = Vec::new(); for region in ram_regions.iter() { mem_regions.push(MemoryManager::create_ram_region( - backing_file, + &config.file, region.0, region.1, )?); @@ -246,14 +242,14 @@ impl MemoryManager { let mut virtiomem_region = None; let mut virtiomem_resize = None; - if let Some(size) = hotplug_size { - if hotplug_method == HotplugMethod::VirtioMem { + if let Some(size) = config.hotplug_size { + if config.hotplug_method == HotplugMethod::VirtioMem { let start_addr = GuestAddress( (start_of_device_area.0 + vm_virtio::VIRTIO_MEM_DEFAULT_BLOCK_SIZE - 1) & (!(vm_virtio::VIRTIO_MEM_DEFAULT_BLOCK_SIZE - 1)), ); virtiomem_region = Some(MemoryManager::create_ram_region( - backing_file, + &config.file, start_addr, size as usize, )?); @@ -279,12 +275,12 @@ impl MemoryManager { fd, hotplug_slots, selected_slot: 0, - backing_file: backing_file.clone(), - mergeable, + backing_file: config.file.clone(), + mergeable: config.mergeable, allocator: allocator.clone(), - hotplug_method, - boot_ram, - current_ram: boot_ram, + hotplug_method: config.hotplug_method.clone(), + boot_ram: config.size, + current_ram: config.size, next_hotplug_slot: 0, virtiomem_region: virtiomem_region.clone(), virtiomem_resize, @@ -295,7 +291,7 @@ impl MemoryManager { region.start_addr().raw_value(), region.len() as u64, region.as_ptr() as u64, - mergeable, + config.mergeable, false, )?; Ok(()) @@ -306,7 +302,7 @@ impl MemoryManager { region.start_addr().raw_value(), region.len() as u64, region.as_ptr() as u64, - mergeable, + config.mergeable, false, )?; allocator diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index b2e6277ec..7737eb95f 100755 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -334,21 +334,14 @@ impl Vm { .ok_or(Error::CreateSystemAllocator)?, )); - let memory_config = config.lock().unwrap().memory.clone(); - let memory_manager = MemoryManager::new( allocator.clone(), fd.clone(), - memory_config.size, - memory_config.hotplug_method, - memory_config.hotplug_size, - &memory_config.file, - memory_config.mergeable, + &config.lock().unwrap().memory.clone(), ) .map_err(Error::MemoryManager)?; let guest_memory = memory_manager.lock().unwrap().guest_memory(); - let device_manager = DeviceManager::new( fd.clone(), config.clone(),