Merge changes I2fd7c254,If372b37b
* changes:
AuthFsHostTest: stop inheriting VirtualizationTestCaseBase
Move code for log archive to new helper class
diff --git a/compos/common/compos_client.rs b/compos/common/compos_client.rs
index 16dc2cf..839280c 100644
--- a/compos/common/compos_client.rs
+++ b/compos/common/compos_client.rs
@@ -64,6 +64,8 @@
/// Comma separated list of host CPUs where vCPUs are assigned to. If None, any host CPU can be
/// used to run any vCPU.
pub cpu_set: Option<String>,
+ /// List of task profiles to apply to the VM
+ pub task_profiles: Vec<String>,
/// If present, overrides the path to the VM config JSON file
pub config_path: Option<String>,
/// If present, overrides the amount of RAM to give the VM
@@ -137,6 +139,7 @@
memoryMib: parameters.memory_mib.unwrap_or(0), // 0 means use the default
numCpus: parameters.cpus.map_or(1, NonZeroU32::get) as i32,
cpuAffinity: parameters.cpu_set.clone(),
+ taskProfiles: parameters.task_profiles.clone(),
});
let vm = service
diff --git a/compos/composd/src/instance_manager.rs b/compos/composd/src/instance_manager.rs
index 587314c..60bf20f 100644
--- a/compos/composd/src/instance_manager.rs
+++ b/compos/composd/src/instance_manager.rs
@@ -98,7 +98,14 @@
}
};
let cpu_set = system_properties::read(DEX2OAT_CPU_SET_PROP_NAME)?;
- Ok(VmParameters { cpus, cpu_set, memory_mib: Some(VM_MEMORY_MIB), ..Default::default() })
+ let task_profiles = vec!["VMCompilationPerformance".to_string()];
+ Ok(VmParameters {
+ cpus,
+ cpu_set,
+ task_profiles,
+ memory_mib: Some(VM_MEMORY_MIB),
+ ..Default::default()
+ })
}
// Ensures we only run one instance at a time.
diff --git a/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java b/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
index 3a2d581..7b5d5ab 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
@@ -238,6 +238,9 @@
parcel.memoryMib = mMemoryMib;
parcel.numCpus = mNumCpus;
parcel.cpuAffinity = mCpuAffinity;
+ // Don't allow apps to set task profiles ... at last for now. Also, don't forget to
+ // validate the string because these are appended to the cmdline argument.
+ parcel.taskProfiles = new String[0];
return parcel;
}
diff --git a/microdroid/build.prop b/microdroid/build.prop
index 2caadbf..0908a4c 100644
--- a/microdroid/build.prop
+++ b/microdroid/build.prop
@@ -4,7 +4,7 @@
service.adb.listen_addrs=vsock:5555
# TODO(b/189164487): support build related properties
-ro.build.version.codename=Tiramisu
+ro.build.version.codename=UpsideDownCake
ro.build.version.release=13
ro.build.version.sdk=33
ro.build.version.security_patch=2022-06-05
diff --git a/pvmfw/Android.bp b/pvmfw/Android.bp
index 3f6cca4..5dbd4ec 100644
--- a/pvmfw/Android.bp
+++ b/pvmfw/Android.bp
@@ -35,9 +35,9 @@
"libpvmfw",
],
static_executable: true,
- no_libcrt: true,
nocrt: true,
- system_shared_libs: [],
+ system_shared_libs: ["libc"],
+ stl: "none",
ldflags: [
"-Tpackages/modules/Virtualization/pvmfw/image.ld",
],
diff --git a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl
index c36e561..22b8a94 100644
--- a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl
+++ b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl
@@ -67,4 +67,9 @@
* Default is no mask which means a vCPU can run on any host CPU.
*/
@nullable String cpuAffinity;
+
+ /**
+ * List of task profile names to apply for the VM
+ */
+ String[] taskProfiles;
}
diff --git a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl
index dfd3bff..83a81a0 100644
--- a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl
+++ b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineRawConfig.aidl
@@ -63,4 +63,9 @@
* The format follows SemVer.
*/
@utf8InCpp String platformVersion;
+
+ /**
+ * List of task profile names to apply for the VM
+ */
+ String[] taskProfiles;
}
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index a2e856c..41cc4a5 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -467,6 +467,7 @@
memory_mib: config.memoryMib.try_into().ok().and_then(NonZeroU32::new),
cpus: config.numCpus.try_into().ok().and_then(NonZeroU32::new),
cpu_affinity: config.cpuAffinity.clone(),
+ task_profiles: config.taskProfiles.clone(),
console_fd,
log_fd,
indirect_files,
@@ -634,6 +635,7 @@
vm_config.protectedVm = config.protectedVm;
vm_config.numCpus = config.numCpus;
vm_config.cpuAffinity = config.cpuAffinity.clone();
+ vm_config.taskProfiles = config.taskProfiles.clone();
// Microdroid requires an additional payload disk image and the bootconfig partition.
if os_name == "microdroid" {
diff --git a/virtualizationservice/src/crosvm.rs b/virtualizationservice/src/crosvm.rs
index f1b179e..b184dca 100644
--- a/virtualizationservice/src/crosvm.rs
+++ b/virtualizationservice/src/crosvm.rs
@@ -64,6 +64,7 @@
pub memory_mib: Option<NonZeroU32>,
pub cpus: Option<NonZeroU32>,
pub cpu_affinity: Option<String>,
+ pub task_profiles: Vec<String>,
pub console_fd: Option<File>,
pub log_fd: Option<File>,
pub indirect_files: Vec<File>,
@@ -326,6 +327,10 @@
command.arg("--cpu-affinity").arg(cpu_affinity);
}
+ if !config.task_profiles.is_empty() {
+ command.arg("--task-profiles").arg(config.task_profiles.join(","));
+ }
+
// Keep track of what file descriptors should be mapped to the crosvm process.
let mut preserved_fds = config.indirect_files.iter().map(|file| file.as_raw_fd()).collect();
diff --git a/vm/src/main.rs b/vm/src/main.rs
index 80ea9be..8b438b4 100644
--- a/vm/src/main.rs
+++ b/vm/src/main.rs
@@ -92,6 +92,10 @@
#[structopt(long)]
cpu_affinity: Option<String>,
+ /// Comma separated list of task profile names to apply to the VM
+ #[structopt(long)]
+ task_profiles: Vec<String>,
+
/// Paths to extra idsig files.
#[structopt(long = "extra-idsig")]
extra_idsigs: Vec<PathBuf>,
@@ -118,6 +122,10 @@
#[structopt(long)]
cpu_affinity: Option<String>,
+ /// Comma separated list of task profile names to apply to the VM
+ #[structopt(long)]
+ task_profiles: Vec<String>,
+
/// Path to file for VM console output.
#[structopt(long)]
console: Option<PathBuf>,
@@ -200,6 +208,7 @@
mem,
cpus,
cpu_affinity,
+ task_profiles,
extra_idsigs,
} => command_run_app(
service,
@@ -215,9 +224,10 @@
mem,
cpus,
cpu_affinity,
+ task_profiles,
&extra_idsigs,
),
- Opt::Run { config, daemonize, cpus, cpu_affinity, console, log } => {
+ Opt::Run { config, daemonize, cpus, cpu_affinity, task_profiles, console, log } => {
command_run(
service,
&config,
@@ -227,6 +237,7 @@
/* mem */ None,
cpus,
cpu_affinity,
+ task_profiles,
)
}
Opt::Stop { cid } => command_stop(service, cid),
diff --git a/vm/src/run.rs b/vm/src/run.rs
index ef38d7d..3d3d703 100644
--- a/vm/src/run.rs
+++ b/vm/src/run.rs
@@ -54,6 +54,7 @@
mem: Option<u32>,
cpus: Option<u32>,
cpu_affinity: Option<String>,
+ task_profiles: Vec<String>,
extra_idsigs: &[PathBuf],
) -> Result<(), Error> {
let extra_apks = parse_extra_apk_list(apk, config_path)?;
@@ -105,6 +106,7 @@
memoryMib: mem.unwrap_or(0) as i32, // 0 means use the VM default
numCpus: cpus.unwrap_or(1) as i32,
cpuAffinity: cpu_affinity,
+ taskProfiles: task_profiles,
});
run(
service,
@@ -127,6 +129,7 @@
mem: Option<u32>,
cpus: Option<u32>,
cpu_affinity: Option<String>,
+ task_profiles: Vec<String>,
) -> Result<(), Error> {
let config_file = File::open(config_path).context("Failed to open config file")?;
let mut config =
@@ -138,6 +141,7 @@
config.numCpus = cpus as i32;
}
config.cpuAffinity = cpu_affinity;
+ config.taskProfiles = task_profiles;
run(
service,
&VirtualMachineConfig::RawConfig(config),