summaryrefslogtreecommitdiff
path: root/power/skylake.c
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2017-06-11 17:09:31 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-06-15 20:13:56 -0700
commit7651e32a95233c8b59fe0eb60095e1be3d3fef58 (patch)
treef066c4240b6c056368b8220dc698ca0fe9cd62fa /power/skylake.c
parent0153e43f7f7704baded1020c18332898098750a6 (diff)
downloadchrome-ec-7651e32a95233c8b59fe0eb60095e1be3d3fef58.tar.gz
power/skylake: Ensure panic data is backed up before PMIC reset
On PMIC reset, VCC power rail goes down thus resulting in loss of panic data. Thus, provide a chance to the chip to backup panic data if available. BUG=b:62076222 BRANCH=None TEST=make -j buildall 1. > crash divzero > panic === PROCESS EXCEPTION: 06 ====== xPSR: ffffffff === r0 : r1 : r2 : r3 : r4 :00000001 r5 :00000000 r6 :00000000 r7 :00000000 r8 :00000000 r9 :00000000 r10:00000000 r11:00000000 r12: sp :00000000 lr : pc : Divide by 0 mmfs = 2000000, shcsr = 0, hfsr = 0, dfsr = 0 2. > crash assert > panic === PROCESS EXCEPTION: 00 ====== xPSR: ffffffff === r0 : r1 : r2 : r3 : r4 :dead6663 r5 :000000a4 r6 :00000000 r7 :00000000 r8 :00000000 r9 :00000000 r10:00000000 r11:00000000 r12: sp :00000000 lr : pc : mmfs = 0, shcsr = 0, hfsr = 0, dfsr = 0 3. > crash watchdog > panic === PROCESS EXCEPTION: 3c ====== xPSR: ffffffff === r0 : r1 : r2 : r3 : r4 :dead6664 r5 :0000000a r6 :00000000 r7 :00000000 r8 :00000000 r9 :00000000 r10:00000000 r11:00000000 r12: sp :00000000 lr : pc : mmfs = 0, shcsr = 0, hfsr = 0, dfsr = 0 4. > crash unaligned > panic === PROCESS EXCEPTION: 06 ====== xPSR: ffffffff === r0 : r1 : r2 : r3 : r4 :200c0d9e r5 :00000000 r6 :00000000 r7 :00000000 r8 :00000000 r9 :00000000 r10:00000000 r11:00000000 r12: sp :00000000 lr : pc : Unaligned mmfs = 1000000, shcsr = 0, hfsr = 0, dfsr = 0 Change-Id: Ife5c9bbc12dcf6c4922f18b7530b21a3b87e65b3 Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/530138
Diffstat (limited to 'power/skylake.c')
-rw-r--r--power/skylake.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/power/skylake.c b/power/skylake.c
index e13604559d..8f9533d79a 100644
--- a/power/skylake.c
+++ b/power/skylake.c
@@ -11,6 +11,7 @@
#include "hooks.h"
#include "intel_x86.h"
#include "lpc.h"
+#include "panic.h"
#include "power_button.h"
#include "skylake.h"
#include "system.h"
@@ -163,6 +164,11 @@ static void chipset_handle_reboot(void)
chip_save_reset_flags(RESET_FLAG_AP_OFF);
}
+#ifdef CONFIG_CHIP_PANIC_BACKUP
+ /* Ensure panic data if any is backed up. */
+ chip_panic_data_backup();
+#endif
+
ccprintf("Restarting system with PMIC.\n");
/* Flush console */
cflush();