platform_BootPerf: Collect firmware timestamps

When firmware boot times are not spec, it's important to have the
detailed firmware timestamps available right in the test results so
reports uploaded by OEMs are actionable.

BUG=None
TEST=Ran on CoachZ.

Change-Id: I17fed8ccb49e02662e967719c9d52549151a739c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2844963
Reviewed-by: Philip Chen <philipchen@chromium.org>
Tested-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Julius Werner <jwerner@chromium.org>
diff --git a/client/site_tests/platform_BootPerf/platform_BootPerf.py b/client/site_tests/platform_BootPerf/platform_BootPerf.py
index 4bbc2f4..b9d193d 100644
--- a/client/site_tests/platform_BootPerf/platform_BootPerf.py
+++ b/client/site_tests/platform_BootPerf/platform_BootPerf.py
@@ -97,6 +97,7 @@
 
     _UPTIME_PREFIX = 'uptime-'
     _DISK_PREFIX = 'disk-'
+    _FW_TIMESTAMPS = 'cbmem-timestamps'
 
 
     _BOOTSTAT_ARCHIVE_GLOB = '/var/log/metrics/shutdown.[0-9]*'
@@ -125,6 +126,12 @@
             except Exception:
                 pass
 
+    def _store_fw_timestamps(self):
+        """Store detailed firmware timestamps for debugging."""
+        with open(os.path.join(self.resultsdir, self._FW_TIMESTAMPS),
+                  'w') as f:
+            utils.run('cbmem -t', stdout_tee=f)
+
     def _parse_bootstat(self, filename, fieldnum, required=False):
         """Read values from a bootstat event file.
 
@@ -444,6 +451,7 @@
 
         self._copy_timestamp_files()
         self._copy_console_ramoops()
+        self._store_fw_timestamps()
 
         self.write_perf_keyval(results)