msm: subsystem_restart: Ignore SSR requests during system reboot/shutdown
When a system reboot or shutdown is already underway, ignore
SSR errors so that the reboot/shutdown process is uninterrupted.
However, log the SSR request so that we know that the subsystem
behaved unexpectedly.
CRs-Fixed: 416175
Change-Id: Idb07580f15d72cc1fab6045470ad494a07907a8c
Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
diff --git a/arch/arm/mach-msm/subsystem_restart.c b/arch/arm/mach-msm/subsystem_restart.c
index e5cc4ec..b18ebd2 100644
--- a/arch/arm/mach-msm/subsystem_restart.c
+++ b/arch/arm/mach-msm/subsystem_restart.c
@@ -671,6 +671,18 @@
}
name = dev->desc->name;
+
+ /*
+ * If a system reboot/shutdown is underway, ignore subsystem errors.
+ * However, print a message so that we know that a subsystem behaved
+ * unexpectedly here.
+ */
+ if (system_state == SYSTEM_RESTART
+ || system_state == SYSTEM_POWER_OFF) {
+ pr_err("%s crashed during a system poweroff/shutdown.\n", name);
+ return -EBUSY;
+ }
+
pr_info("Restart sequence requested for %s, restart_level = %d.\n",
name, restart_level);