Merge "VirtualMachine: Remove duplicated executor clean up" into main
diff --git a/guest/pvmfw/Android.bp b/guest/pvmfw/Android.bp
index 6f113c8..cd32f8f 100644
--- a/guest/pvmfw/Android.bp
+++ b/guest/pvmfw/Android.bp
@@ -113,13 +113,15 @@
rust_test {
name: "libpvmfw.dice.test",
- srcs: ["src/dice.rs"],
+ srcs: ["src/dice/mod.rs"],
defaults: ["libpvmfw.test.defaults"],
rustlibs: [
"libcbor_util",
"libciborium",
+ "libcoset_nostd",
"libdiced_open_dice_nostd",
"libhwtrust",
+ "liblog_rust",
"libpvmfw_avb_nostd",
"libdiced_sample_inputs_nostd",
"libzerocopy_nostd",
diff --git a/guest/pvmfw/src/bcc.rs b/guest/pvmfw/src/dice/chain.rs
similarity index 98%
rename from guest/pvmfw/src/bcc.rs
rename to guest/pvmfw/src/dice/chain.rs
index 7ce50e9..0f5b058 100644
--- a/guest/pvmfw/src/bcc.rs
+++ b/guest/pvmfw/src/dice/chain.rs
@@ -59,6 +59,7 @@
/// Return a new CBOR encoded BccHandover that is based on the incoming CDIs but does not chain
/// from the received BCC.
+#[cfg_attr(test, allow(dead_code))]
pub fn truncate(bcc_handover: BccHandover) -> Result<Vec<u8>> {
// Note: The strings here are deliberately different from those used in a normal DICE handover
// because we want this to not be equivalent to any valid DICE derivation.
@@ -75,6 +76,7 @@
cbor_util::serialize(&bcc_handover).map_err(|_| BccError::CborEncodeError)
}
+#[cfg_attr(test, allow(dead_code))]
fn taint_cdi(cdi: &Cdi, info: &str) -> Result<Cdi> {
// An arbitrary value generated randomly.
const SALT: [u8; 64] = [
diff --git a/guest/pvmfw/src/dice.rs b/guest/pvmfw/src/dice/mod.rs
similarity index 99%
rename from guest/pvmfw/src/dice.rs
rename to guest/pvmfw/src/dice/mod.rs
index 49a3807..94348a5 100644
--- a/guest/pvmfw/src/dice.rs
+++ b/guest/pvmfw/src/dice/mod.rs
@@ -15,9 +15,12 @@
//! Support for DICE derivation and BCC generation.
extern crate alloc;
+pub(crate) mod chain;
+
use alloc::format;
use alloc::string::String;
use alloc::vec::Vec;
+pub use chain::Bcc;
use ciborium::cbor;
use ciborium::Value;
use core::mem::size_of;
diff --git a/guest/pvmfw/src/main.rs b/guest/pvmfw/src/main.rs
index 30624cd..d3d5527 100644
--- a/guest/pvmfw/src/main.rs
+++ b/guest/pvmfw/src/main.rs
@@ -20,7 +20,6 @@
extern crate alloc;
mod arch;
-mod bcc;
mod bootargs;
mod config;
mod device_assignment;
@@ -32,8 +31,7 @@
mod memory;
mod rollback;
-use crate::bcc::Bcc;
-use crate::dice::PartialInputs;
+use crate::dice::{Bcc, PartialInputs};
use crate::entry::RebootReason;
use crate::fdt::{modify_for_next_stage, read_instance_id, sanitize_device_tree};
use crate::rollback::perform_rollback_protection;
@@ -134,7 +132,7 @@
// entire chain we were given and taint the CDIs. Note that the resulting CDIs are
// still deterministically derived from those we received, so will vary iff they do.
// TODO(b/280405545): Remove this post Android 14.
- let truncated_bcc_handover = bcc::truncate(bcc_handover).map_err(|e| {
+ let truncated_bcc_handover = dice::chain::truncate(bcc_handover).map_err(|e| {
error!("{e}");
RebootReason::InternalError
})?;
diff --git a/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java b/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java
index fcef19a..7eb7748 100644
--- a/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java
+++ b/tests/hostside/helper/java/com/android/microdroid/test/host/MicrodroidHostTestCaseBase.java
@@ -262,6 +262,11 @@
}
public List<String> getSupportedOSList() throws Exception {
+ // The --os flag was introduced in SDK level 36. When running tests on earlier dessert
+ // releases only use "microdroid" OS.
+ if (getAndroidDevice().getApiLevel() < 36) {
+ return Arrays.asList("microdroid");
+ }
return parseStringArrayFieldsFromVmInfo("Available OS list: ");
}
diff --git a/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java b/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java
index 2434ed0..379ac98 100644
--- a/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java
+++ b/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java
@@ -496,15 +496,20 @@
final String configPath = "assets/vm_config_apex.json";
// Act
- mMicrodroidDevice =
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
.protectedVm(true)
- .os(SUPPORTED_OSES.get(os))
- .name("protected_vm_runs_pvmfw")
- .build(getAndroidDevice());
+ .name("protected_vm_runs_pvmfw");
+
+ // --os flag was introduced in SDK 36
+ if (getAndroidDevice().getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+
+ mMicrodroidDevice = microdroidBuilder.build(getAndroidDevice());
// Assert
mMicrodroidDevice.waitForBootComplete(BOOT_COMPLETE_TIMEOUT);
@@ -647,14 +652,18 @@
CommandRunner android = new CommandRunner(getDevice());
String testStartTime = android.runWithTimeout(1000, "date", "'+%Y-%m-%d %H:%M:%S.%N'");
- mMicrodroidDevice =
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
- .protectedVm(protectedVm)
- .os(SUPPORTED_OSES.get(os))
- .build(getAndroidDevice());
+ .protectedVm(protectedVm);
+
+ if (getAndroidDevice().getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+
+ mMicrodroidDevice = microdroidBuilder.build(getAndroidDevice());
mMicrodroidDevice.waitForBootComplete(BOOT_COMPLETE_TIMEOUT);
mMicrodroidDevice.enableAdbRoot();
@@ -874,15 +883,20 @@
// Create VM with microdroid
TestDevice device = getAndroidDevice();
final String configPath = "assets/vm_config_apex.json"; // path inside the APK
- ITestDevice microdroid =
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
.protectedVm(protectedVm)
- .os(SUPPORTED_OSES.get(os))
- .name("test_telemetry_pushed_atoms")
- .build(device);
+ .name("test_telemetry_pushed_atoms");
+
+ if (device.getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+
+ ITestDevice microdroid = microdroidBuilder.build(device);
+
microdroid.waitForBootComplete(BOOT_COMPLETE_TIMEOUT);
device.shutdownMicrodroid(microdroid);
@@ -1026,14 +1040,18 @@
assumeVmTypeSupported(os, protectedVm);
final String configPath = "assets/vm_config.json"; // path inside the APK
- testMicrodroidBootsWithBuilder(
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
.protectedVm(protectedVm)
- .name("test_microdroid_boots")
- .os(SUPPORTED_OSES.get(os)));
+ .name("test_microdroid_boots");
+ if (getAndroidDevice().getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+
+ testMicrodroidBootsWithBuilder(microdroidBuilder);
}
@Test
@@ -1064,15 +1082,18 @@
assumeVmTypeSupported(os, protectedVm);
final String configPath = "assets/vm_config.json";
- mMicrodroidDevice =
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
.protectedVm(protectedVm)
- .os(SUPPORTED_OSES.get(os))
- .name("test_microdroid_ram_usage")
- .build(getAndroidDevice());
+ .name("test_microdroid_ram_usage");
+ if (getAndroidDevice().getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+
+ mMicrodroidDevice = microdroidBuilder.build(getAndroidDevice());
mMicrodroidDevice.waitForBootComplete(BOOT_COMPLETE_TIMEOUT);
mMicrodroidDevice.enableAdbRoot();
@@ -1362,16 +1383,18 @@
Objects.requireNonNull(device);
final String configPath = "assets/vm_config.json";
- mMicrodroidDevice =
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
.protectedVm(protectedVm)
- .os(SUPPORTED_OSES.get(os))
- .addAssignableDevice(device)
- .build(getAndroidDevice());
+ .addAssignableDevice(device);
+ if (getAndroidDevice().getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+ mMicrodroidDevice = microdroidBuilder.build(getAndroidDevice());
assertThat(mMicrodroidDevice.waitForBootComplete(BOOT_COMPLETE_TIMEOUT)).isTrue();
assertThat(mMicrodroidDevice.enableAdbRoot()).isTrue();
}
@@ -1408,16 +1431,19 @@
android.run("echo advise > " + SHMEM_ENABLED_PATH);
final String configPath = "assets/vm_config.json";
- mMicrodroidDevice =
+ MicrodroidBuilder microdroidBuilder =
MicrodroidBuilder.fromDevicePath(getPathForPackage(PACKAGE_NAME), configPath)
.debugLevel(DEBUG_LEVEL_FULL)
.memoryMib(minMemorySize())
.cpuTopology("match_host")
.protectedVm(protectedVm)
- .os(SUPPORTED_OSES.get(os))
.hugePages(true)
- .name("test_huge_pages")
- .build(getAndroidDevice());
+ .name("test_huge_pages");
+ if (getAndroidDevice().getApiLevel() >= 36) {
+ microdroidBuilder.os(SUPPORTED_OSES.get(os));
+ }
+
+ mMicrodroidDevice = microdroidBuilder.build(getAndroidDevice());
mMicrodroidDevice.waitForBootComplete(BOOT_COMPLETE_TIMEOUT);
android.run("echo never >" + SHMEM_ENABLED_PATH);