Merge changes from topic "avf_unprotected_crashkernel"
* changes:
Temporally disable tombstone tests
virtualizationservice: Specify crashkernel only when necessary
diff --git a/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java b/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java
index 0623ff2..c87ed80 100644
--- a/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java
+++ b/tests/hostside/java/com/android/microdroid/test/MicrodroidHostTests.java
@@ -55,6 +55,7 @@
import org.json.JSONObject;
import org.junit.After;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
@@ -583,6 +584,7 @@
}
@Test
+ @Ignore("b/243630590: Temporal workaround until lab devices has flashed new DPM")
public void testTombstonesAreGeneratedUponKernelCrash() throws Exception {
assumeFalse("Cuttlefish is not supported", isCuttlefish());
assertThat(
diff --git a/virtualizationmanager/src/crosvm.rs b/virtualizationmanager/src/crosvm.rs
index 8f88daf..19d862a 100644
--- a/virtualizationmanager/src/crosvm.rs
+++ b/virtualizationmanager/src/crosvm.rs
@@ -663,6 +663,24 @@
}
}
+fn should_configure_ramdump(protected: bool) -> bool {
+ if protected {
+ // Protected VM needs ramdump configuration here.
+ // pvmfw will disable ramdump if unnecessary.
+ true
+ } else {
+ // For unprotected VM, ramdump should be handled here.
+ // ramdump wouldn't be enabled if ramdump is explicitly set to <1>.
+ if let Ok(mut file) = File::open("/proc/device-tree/avf/guest/common/ramdump") {
+ let mut ramdump: [u8; 4] = Default::default();
+ file.read_exact(&mut ramdump).map_err(|_| false).unwrap();
+ // DT spec uses big endian although Android is always little endian.
+ return u32::from_be_bytes(ramdump) == 1;
+ }
+ false
+ }
+}
+
/// Starts an instance of `crosvm` to manage a new VM.
fn run_vm(
config: CrosvmConfig,
@@ -779,7 +797,10 @@
debug!("Preserving FDs {:?}", preserved_fds);
command.preserved_fds(preserved_fds);
- command.arg("--params").arg("crashkernel=17M");
+ if should_configure_ramdump(config.protected) {
+ command.arg("--params").arg("crashkernel=17M");
+ }
+
print_crosvm_args(&command);
let result = SharedChild::spawn(&mut command)?;