Merge "Use new binder exception constructors moved from binder_common."
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 90aac1e..f6e9a71 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -122,6 +122,7 @@
 
         final int trialCount = 10;
 
+        List<Double> vmStartingTimeMetrics = new ArrayList<>();
         List<Double> bootTimeMetrics = new ArrayList<>();
         List<Double> bootloaderTimeMetrics = new ArrayList<>();
         List<Double> kernelBootTimeMetrics = new ArrayList<>();
@@ -139,13 +140,15 @@
             BootResult result = tryBootVm(TAG, "test_vm_boot_time");
             assertThat(result.payloadStarted).isTrue();
 
-            final Double nanoToMilli = 1000000.0;
+            final double nanoToMilli = 1000000.0;
+            vmStartingTimeMetrics.add(result.getVMStartingElapsedNanoTime() / nanoToMilli);
             bootTimeMetrics.add(result.endToEndNanoTime / nanoToMilli);
             bootloaderTimeMetrics.add(result.getBootloaderElapsedNanoTime() / nanoToMilli);
             kernelBootTimeMetrics.add(result.getKernelElapsedNanoTime() / nanoToMilli);
             userspaceBootTimeMetrics.add(result.getUserspaceElapsedNanoTime() / nanoToMilli);
         }
 
+        reportMetrics(vmStartingTimeMetrics,    "avf_perf/microdroid/vm_starting_time_",    "_ms");
         reportMetrics(bootTimeMetrics,          "avf_perf/microdroid/boot_time_",           "_ms");
         reportMetrics(bootloaderTimeMetrics,    "avf_perf/microdroid/bootloader_time_",     "_ms");
         reportMetrics(kernelBootTimeMetrics,    "avf_perf/microdroid/kernel_boot_time_",    "_ms");
diff --git a/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java b/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
index 84e189a..efd7c85 100644
--- a/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
+++ b/tests/helper/src/java/com/android/microdroid/test/MicrodroidDeviceTestBase.java
@@ -234,6 +234,7 @@
     public static class BootResult {
         public final boolean payloadStarted;
         public final int deathReason;
+        public final long apiCallNanoTime;
         public final long endToEndNanoTime;
 
         public final OptionalLong vcpuStartedNanoTime;
@@ -243,11 +244,13 @@
 
         BootResult(boolean payloadStarted,
                 int deathReason,
+                long apiCallNanoTime,
                 long endToEndNanoTime,
                 OptionalLong vcpuStartedNanoTime,
                 OptionalLong kernelStartedNanoTime,
                 OptionalLong initStartedNanoTime,
                 OptionalLong payloadStartedNanoTime) {
+            this.apiCallNanoTime = apiCallNanoTime;
             this.payloadStarted = payloadStarted;
             this.deathReason = deathReason;
             this.endToEndNanoTime = endToEndNanoTime;
@@ -273,6 +276,10 @@
             return payloadStartedNanoTime.getAsLong();
         }
 
+        public long getVMStartingElapsedNanoTime() {
+            return getVcpuStartedNanoTime() - apiCallNanoTime;
+        }
+
         public long getBootloaderElapsedNanoTime() {
             return getKernelStartedNanoTime() - getVcpuStartedNanoTime();
         }
@@ -307,12 +314,13 @@
                         super.onDied(vm, reason);
                     }
                 };
-        long beginTime = System.nanoTime();
+        long apiCallNanoTime = System.nanoTime();
         listener.runToFinish(logTag, vm);
         return new BootResult(
                 payloadStarted.getNow(false),
                 deathReason.getNow(DeathReason.INFRASTRUCTURE_ERROR),
-                endTime.getNow(beginTime) - beginTime,
+                apiCallNanoTime,
+                endTime.getNow(apiCallNanoTime) - apiCallNanoTime,
                 listener.getVcpuStartedNanoTime(),
                 listener.getKernelStartedNanoTime(),
                 listener.getInitStartedNanoTime(),