Merge "Test APK section zip methods with real APK files"
diff --git a/libs/apkverify/src/v3.rs b/libs/apkverify/src/v3.rs
index 0c20a2e..4c49319 100644
--- a/libs/apkverify/src/v3.rs
+++ b/libs/apkverify/src/v3.rs
@@ -16,9 +16,6 @@
//! Verifies APK Signature Scheme V3
-// TODO(jooyung) remove this
-#![allow(dead_code)]
-
use anyhow::{anyhow, bail, ensure, Context, Result};
use bytes::Bytes;
use openssl::hash::MessageDigest;
@@ -63,6 +60,7 @@
certificates: LengthPrefixed<Vec<LengthPrefixed<X509Certificate>>>,
min_sdk: u32,
max_sdk: u32,
+ #[allow(dead_code)]
additional_attributes: LengthPrefixed<Vec<LengthPrefixed<AdditionalAttributes>>>,
}
diff --git a/pvmfw/src/exceptions.rs b/pvmfw/src/exceptions.rs
index 0e637ac..596ecc7 100644
--- a/pvmfw/src/exceptions.rs
+++ b/pvmfw/src/exceptions.rs
@@ -19,8 +19,9 @@
#[no_mangle]
extern "C" fn sync_exception_current(_elr: u64, _spsr: u64) {
+ let esr = read_esr();
emergency_write_str("sync_exception_current\n");
- print_esr();
+ print_esr(esr);
reboot();
}
@@ -38,15 +39,17 @@
#[no_mangle]
extern "C" fn serr_current(_elr: u64, _spsr: u64) {
+ let esr = read_esr();
emergency_write_str("serr_current\n");
- print_esr();
+ print_esr(esr);
reboot();
}
#[no_mangle]
extern "C" fn sync_lower(_elr: u64, _spsr: u64) {
+ let esr = read_esr();
emergency_write_str("sync_lower\n");
- print_esr();
+ print_esr(esr);
reboot();
}
@@ -64,16 +67,22 @@
#[no_mangle]
extern "C" fn serr_lower(_elr: u64, _spsr: u64) {
+ let esr = read_esr();
emergency_write_str("serr_lower\n");
- print_esr();
+ print_esr(esr);
reboot();
}
#[inline]
-fn print_esr() {
+fn read_esr() -> u64 {
let mut esr: u64;
unsafe {
asm!("mrs {esr}, esr_el1", esr = out(reg) esr);
}
+ esr
+}
+
+#[inline]
+fn print_esr(esr: u64) {
eprintln!("esr={:#08x}", esr);
}
diff --git a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
index c9ceaae..7bf3c4e 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -143,11 +143,7 @@
// To grab boot events from log, set debug mode to FULL
VirtualMachineConfig normalConfig =
- builder.debugLevel(DebugLevel.FULL)
- .memoryMib(256)
- .numCpus(2)
- .cpuAffinity("0=0:1=1")
- .build();
+ builder.debugLevel(DebugLevel.FULL).memoryMib(256).build();
mInner.forceCreateNewVirtualMachine("test_vm_boot_time", normalConfig);
BootResult result = tryBootVm(TAG, "test_vm_boot_time");
@@ -194,8 +190,6 @@
VirtualMachineConfig config =
mInner.newVmConfigBuilder("assets/vm_config_io.json")
.debugLevel(DebugLevel.FULL)
- .numCpus(2)
- .cpuAffinity("0=0:1=1")
.build();
List<Double> transferRates = new ArrayList<>(IO_TEST_TRIAL_COUNT);
@@ -223,8 +217,6 @@
VirtualMachineConfig config =
mInner.newVmConfigBuilder("assets/vm_config_io.json")
.debugLevel(DebugLevel.FULL)
- .numCpus(2)
- .cpuAffinity("0=0:1=1")
.build();
List<Double> readRates = new ArrayList<>(IO_TEST_TRIAL_COUNT);
diff --git a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl
index d86f2bf..a6b228d 100644
--- a/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl
+++ b/virtualizationservice/aidl/android/system/virtualizationservice/VirtualMachineAppConfig.aidl
@@ -68,11 +68,15 @@
* Comma-separated list of CPUs or CPU ranges to run vCPUs on (e.g. 0,1-3,5), or
* colon-separated list of assignments of vCPU to host CPU assignments (e.g. 0=0:1=1:2=2).
* Default is no mask which means a vCPU can run on any host CPU.
+ *
+ * Note: Using a non-null value requires android.permission.USE_CUSTOM_VIRTUAL_MACHINE.
*/
@nullable String cpuAffinity;
/**
* List of task profile names to apply for the VM
+ *
+ * Note: Specifying a value here requires android.permission.USE_CUSTOM_VIRTUAL_MACHINE.
*/
String[] taskProfiles;
}
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index 352b4f1..dcc2d48 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -596,6 +596,12 @@
config: &VirtualMachineAppConfig,
temporary_directory: &Path,
) -> Result<VirtualMachineRawConfig> {
+ // Controlling CPUs is reserved for platform apps only, even when using
+ // VirtualMachineAppConfig.
+ if config.cpuAffinity.is_some() || !config.taskProfiles.is_empty() {
+ check_use_custom_virtual_machine()?
+ }
+
let apk_file = clone_file(config.apk.as_ref().unwrap())?;
let idsig_file = clone_file(config.idsig.as_ref().unwrap())?;
let instance_file = clone_file(config.instanceImage.as_ref().unwrap())?;