MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / resize

Method resize

vmm/src/memory_manager.rs:2459–2493  ·  view source on GitHub ↗

In case this function resulted in adding a new memory region to the guest memory, the new region is returned to the caller. The virtio-mem use case never adds a new region as the whole hotpluggable memory has already been allocated at boot time.

(&mut self, desired_ram: u64)

Source from the content-addressed store, hash-verified

2457 /// use case never adds a new region as the whole hotpluggable memory has
2458 /// already been allocated at boot time.
2459 pub fn resize(&mut self, desired_ram: u64) -> Result<Option<Arc<GuestRegionMmap>>, Error> {
2460 if self.user_provided_zones {
2461 error!(
2462 "Not allowed to resize guest memory when backed with user \
2463 defined memory zones."
2464 );
2465 return Err(Error::InvalidResizeWithMemoryZones);
2466 }
2467
2468 let mut region: Option<Arc<GuestRegionMmap>> = None;
2469 match self.hotplug_method {
2470 HotplugMethod::VirtioMem => {
2471 if desired_ram >= self.boot_ram {
2472 if !self.dynamic {
2473 return Ok(region);
2474 }
2475
2476 self.virtio_mem_resize(DEFAULT_MEMORY_ZONE, desired_ram - self.boot_ram)?;
2477 self.current_ram = desired_ram;
2478 }
2479 }
2480 HotplugMethod::Acpi => {
2481 if desired_ram > self.current_ram {
2482 if !self.dynamic {
2483 return Ok(region);
2484 }
2485
2486 region =
2487 Some(self.hotplug_ram_region((desired_ram - self.current_ram) as usize)?);
2488 self.current_ram = desired_ram;
2489 }
2490 }
2491 }
2492 Ok(region)
2493 }
2494
2495 pub fn resize_zone(&mut self, id: &str, virtio_mem_size: u64) -> Result<(), Error> {
2496 if !self.user_provided_zones {

Callers 2

create_ram_region_rawMethod · 0.45
virtio_mem_resizeMethod · 0.45

Calls 2

virtio_mem_resizeMethod · 0.80
hotplug_ram_regionMethod · 0.80

Tested by

no test coverage detected