Make exporting tombstone (out of VM) configurable
VM owner must specify export_tombstones value in assets/vm_config in
payload apk to enable/disable exporting the tombstones out of VM. This
is also dm-verity protected so only the owner of the VM can make the
change. There is no default value for this for now. Virtualization
service will fail at load_config() throw binder_exception to client.
Test: atest . (all tests in /packages/modules/Virtualization)
Bug: 227443903
Change-Id: I82325a9ffc57d4d4825d51d9d41ebb767e6c1f6f
diff --git a/compos/apk/assets/vm_config.json b/compos/apk/assets/vm_config.json
index b93c3f7..c4abfd9 100644
--- a/compos/apk/assets/vm_config.json
+++ b/compos/apk/assets/vm_config.json
@@ -25,5 +25,6 @@
{
"name": "{CLASSPATH}"
}
- ]
+ ],
+ "export_tombstones": true
}
diff --git a/compos/apk/assets/vm_config_staged.json b/compos/apk/assets/vm_config_staged.json
index 83fa6eb..0be6e78 100644
--- a/compos/apk/assets/vm_config_staged.json
+++ b/compos/apk/assets/vm_config_staged.json
@@ -26,5 +26,6 @@
{
"name": "{CLASSPATH}"
}
- ]
+ ],
+ "export_tombstones": true
}
diff --git a/demo/assets/vm_config.json b/demo/assets/vm_config.json
index b814394..da420ff 100644
--- a/demo/assets/vm_config.json
+++ b/demo/assets/vm_config.json
@@ -9,5 +9,6 @@
"hello",
"microdroid"
]
- }
+ },
+ "export_tombstones": true
}
diff --git a/microdroid/bootconfig.common b/microdroid/bootconfig.common
index c202ba0..eda95a2 100644
--- a/microdroid/bootconfig.common
+++ b/microdroid/bootconfig.common
@@ -1,6 +1,2 @@
androidboot.first_stage_console = 1
androidboot.hardware = microdroid
-
-# tombstone_transmit is enabled. Tombstones will be transmitted to the host
-# TODO(b/227443903) : Make this configurable by VM owners
-androidboot.tombstone_transmit.enabled=1
diff --git a/microdroid/init.rc b/microdroid/init.rc
index dbe5ac7..93cced8 100644
--- a/microdroid/init.rc
+++ b/microdroid/init.rc
@@ -173,9 +173,6 @@
mkdir /data/local 0751 root root
mkdir /data/local/tmp 0771 shell shell
-on init && property:ro.boot.tombstone_transmit.enabled=1
- start tombstone_transmit
-
service tombstone_transmit /system/bin/tombstone_transmit.microdroid -cid 2 -port 2000
user root
group system
diff --git a/microdroid/payload/config/src/lib.rs b/microdroid/payload/config/src/lib.rs
index 67e8feb..b82544f 100644
--- a/microdroid/payload/config/src/lib.rs
+++ b/microdroid/payload/config/src/lib.rs
@@ -38,6 +38,10 @@
/// Tells VirtualizationService to use staged APEXes if possible
#[serde(default)]
pub prefer_staged: bool,
+
+ /// Whether to export the tomsbtones (VM crashes) out of VM to host
+ /// This does not have a default & the value is expected to be in json for deserialization
+ pub export_tombstones: bool,
}
/// OS config
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index 9e159d2..8c85d3e 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -254,6 +254,13 @@
);
let config = load_config(Path::new(&metadata.payload_config_path))?;
+
+ // Start tombstone_transmit if enabled
+ if config.export_tombstones {
+ system_properties::write("ctl.start", "tombstone_transmit")
+ .context("Failed to start tombstone_transmit")?;
+ }
+
if config.extra_apks.len() != verified_data.extra_apks_data.len() {
return Err(anyhow!(
"config expects {} extra apks, but found only {}",
diff --git a/tests/benchmark/assets/vm_config.json b/tests/benchmark/assets/vm_config.json
index d431877..d8cbb86 100644
--- a/tests/benchmark/assets/vm_config.json
+++ b/tests/benchmark/assets/vm_config.json
@@ -6,6 +6,7 @@
"type": "microdroid_launcher",
"command": "empty_payload.so",
"args": []
- }
+ },
+ "export_tombstones": true
}
diff --git a/tests/testapk/assets/vm_config.json b/tests/testapk/assets/vm_config.json
index b814394..da420ff 100644
--- a/tests/testapk/assets/vm_config.json
+++ b/tests/testapk/assets/vm_config.json
@@ -9,5 +9,6 @@
"hello",
"microdroid"
]
- }
+ },
+ "export_tombstones": true
}
diff --git a/tests/testapk/assets/vm_config_extra_apk.json b/tests/testapk/assets/vm_config_extra_apk.json
index a5bae63..d7d3dd7 100644
--- a/tests/testapk/assets/vm_config_extra_apk.json
+++ b/tests/testapk/assets/vm_config_extra_apk.json
@@ -14,5 +14,6 @@
{
"path": "/system/etc/security/fsverity/BuildManifest.apk"
}
- ]
+ ],
+ "export_tombstones": true
}