diff --git a/bootstat/boot_reason_test.sh b/bootstat/boot_reason_test.sh index 01b894842..8ed92a680 100755 --- a/bootstat/boot_reason_test.sh +++ b/bootstat/boot_reason_test.sh @@ -445,6 +445,10 @@ validate_reason() { *hw_reset* ) var="hard,hw_reset" ;; *usb* ) var="cold,charger" ;; *rtc* ) var="cold,rtc" ;; + *2sec_reboot* ) var="cold,rtc,2sec" ;; + *wdt_by_pass_pwk* ) var="warm" ;; + wdt ) var="reboot" ;; + *tool_by_pass_pwk* ) var="reboot,tool" ;; *bootloader* ) var="bootloader" ;; * ) var="reboot" ;; esac diff --git a/bootstat/bootstat.cpp b/bootstat/bootstat.cpp index 3250b3e34..529d0c942 100644 --- a/bootstat/bootstat.cpp +++ b/bootstat/bootstat.cpp @@ -201,7 +201,7 @@ const std::map kBootReasonMap = { {"cold", 56}, {"hard", 57}, {"warm", 58}, - // {"recovery", 59}, // Duplicate of enum 3 above. Immediate reuse possible. + {"reboot,kernel_power_off_charging__reboot_system", 59}, // Can not happen {"thermal-shutdown", 60}, {"shutdown,thermal", 61}, {"shutdown,battery", 62}, @@ -228,7 +228,7 @@ const std::map kBootReasonMap = { {"2sec_reboot", 83}, {"reboot,by_key", 84}, {"reboot,longkey", 85}, - {"reboot,2sec", 86}, + {"reboot,2sec", 86}, // Deprecate in two years, replaced with cold,rtc,2sec {"shutdown,thermal,battery", 87}, {"reboot,its_just_so_hard", 88}, // produced by boot_reason_test {"reboot,Its Just So Hard", 89}, // produced by boot_reason_test @@ -790,7 +790,10 @@ std::string BootReasonStrToReason(const std::string& boot_reason) { {"hard,hw_reset", "hw_reset"}, {"cold,charger", "usb"}, {"cold,rtc", "rtc"}, - {"reboot,2sec", "2sec_reboot"}, + {"cold,rtc,2sec", "2sec_reboot"}, + {"!warm", "wdt_by_pass_pwk"}, // change flavour of blunt + {"!reboot", "^wdt$"}, // change flavour of blunt + {"reboot,tool", "tool_by_pass_pwk"}, {"bootloader", ""}, }; @@ -850,6 +853,10 @@ std::string BootReasonStrToReason(const std::string& boot_reason) { ret = "reboot," + subReason; // legitimize unknown reasons } } + // Some bootloaders shutdown results record in last kernel message. + if (!strcmp(ret.c_str(), "reboot,kernel_power_off_charging__reboot_system")) { + ret = "shutdown"; + } } // Check for kernel panics, allowed to override reboot command.