1519925149
Some devices report the following canonical boot reason for all shutdown operations: reboot,kernel_power_off_charging__reboot_system because shutdown switches to a charging kernel, and reboots into the system when the user presses the power button. Thus last kernel messages arrives as: <0>.(0)[53:pmic_thread]reboot: Restarting system with command \ 'kernel power off charging reboot system' -> "shutdown" (w/o last boot reason) -> "shutdown,<subreason>" (w/last boot reason) The reboot reason from that charging instance propagates as a fortified boot reason blocking interpretation of the last boot reason that manages shutdown canonical boot reason determination. The fix is to change reboot,kernel_power_off_charging__reboot_system to shutdown, so that it is viewed as a blunt reason that can be overridden by last boot reason. We added the above boot reason to kBootReasonMap because the Bit Error Handler can use it to reconstruct if there is any damage to the last kernel messages content. The sad thing is that the enum will never propagate as we are filtering it out and reporting "shutdown" instead. Of course, we are now covered for a can not happen. Test: boot_reason_test.sh Bug: 74595769 Bug: 63736262 Change-Id: I28987f0871af7d967cc4bbbffed43bd42349acdd |
||
---|---|---|
.. | ||
.clang-format | ||
Android.bp | ||
AndroidTest.xml | ||
boot_event_record_store.cpp | ||
boot_event_record_store.h | ||
boot_event_record_store_test.cpp | ||
boot_reason_test.sh | ||
bootstat-debug.rc | ||
bootstat.cpp | ||
bootstat.rc | ||
OWNERS | ||
README.md | ||
testrunner.cpp |
bootstat
The bootstat command records boot events (e.g., firmware_loaded
,
boot_complete
) and the relative time at which these events occurred. The
command also aggregates boot event metrics locally and logs the metrics for
analysis.
Usage: bootstat [options]
options include:
-h, --help Show this help
-l, --log Log all metrics to logstorage
-p, --print Dump the boot event records to the console
-r, --record Record the timestamp of a named boot event
--record_boot_reason Record the reason why the device booted
--record_time_since_factory_reset Record the time since the device was reset
Relative time
The timestamp recorded by bootstat is the uptime of the system, i.e., the number of seconds since the system booted.
Recording boot events
To record the relative time of an event during the boot phase, call bootstat
with the -r
option and the name of the boot event.
$ bootstat -r boot_complete
The relative time at which the command runs is recorded along with the name of the boot event to be persisted.
Logging boot events
To log the persisted boot events, call bootstat
with the -l
option.
$ bootstat -l
bootstat logs all boot events recorded using the -r
option to the EventLog
using the Tron histogram. These logs may be uploaded by interested parties
for aggregation and analysis of boot time across different devices and
versions.
Printing boot events
To print the set of persisted boot events, call bootstat
with the -p
option.
$ bootstat -p
Boot events:
------------
boot_complete 71