Add memory size to VM config.
Bug: 192294431
Test: atest VirtualizationTestCases
Change-Id: I56d0ba4aca483bada57dd5bea01d1b1ce9b912d5
diff --git a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl
index 9e1dee2..612c498 100644
--- a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl
+++ b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl
@@ -42,4 +42,7 @@
/** Whether the VM should be a protected VM. */
boolean protected_vm;
+
+ /** The amount of RAM to give the VM, in MiB. 0 or negative to use the default. */
+ int memory_mib;
}
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index dc22e99..c0b2e11 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -41,6 +41,7 @@
use std::convert::TryInto;
use std::ffi::CString;
use std::fs::{File, create_dir};
+use std::num::NonZeroU32;
use std::os::unix::io::AsRawFd;
use std::path::{Path, PathBuf};
use std::sync::{Arc, Mutex, Weak};
@@ -156,6 +157,7 @@
disks,
params: config.params.to_owned(),
protected: config.protected_vm,
+ memory_mib: config.memory_mib.try_into().ok().and_then(NonZeroU32::new),
};
let composite_disk_fds: Vec<_> =
indirect_files.iter().map(|file| file.as_raw_fd()).collect();
diff --git a/virtualizationservice/src/crosvm.rs b/virtualizationservice/src/crosvm.rs
index ae8388a..5873cd9 100644
--- a/virtualizationservice/src/crosvm.rs
+++ b/virtualizationservice/src/crosvm.rs
@@ -21,6 +21,7 @@
use log::{debug, error, info};
use shared_child::SharedChild;
use std::fs::{remove_dir_all, File};
+use std::num::NonZeroU32;
use std::os::unix::io::{AsRawFd, RawFd};
use std::path::PathBuf;
use std::process::Command;
@@ -40,6 +41,7 @@
pub disks: Vec<DiskFile>,
pub params: Option<String>,
pub protected: bool,
+ pub memory_mib: Option<NonZeroU32>,
}
/// A disk image to pass to crosvm for a VM.
@@ -173,6 +175,10 @@
command.arg("--protected-vm");
}
+ if let Some(memory_mib) = config.memory_mib {
+ command.arg("--mem").arg(memory_mib.to_string());
+ }
+
if let Some(log_fd) = log_fd {
command.stdout(log_fd);
} else {