diff --git a/arch/arm/mach-msm/restart.c b/arch/arm/mach-msm/restart.c
index 303073c..0e2b2d4 100644
--- a/arch/arm/mach-msm/restart.c
+++ b/arch/arm/mach-msm/restart.c
@@ -81,8 +81,11 @@ static int panic_prep_restart(struct notifier_block *this,
 	return NOTIFY_DONE;
 }
 
+static int dload_mode_normal_reboot_handler(struct notifier_block *nb,
+				unsigned long l, void *p);
+
 static struct notifier_block panic_blk = {
-	.notifier_call	= panic_prep_restart,
+	.notifier_call	= dload_mode_normal_reboot_handler,
 };
 
 static void set_dload_mode(int on)
diff --git a/arch/arm/mach-msm/sec_debug.c b/arch/arm/mach-msm/sec_debug.c
index e099b90..f411360 100755
--- a/arch/arm/mach-msm/sec_debug.c
+++ b/arch/arm/mach-msm/sec_debug.c
@@ -644,7 +644,7 @@ static struct notifier_block nb_reboot_block = {
 };
 
 static struct notifier_block nb_panic_block = {
-	.notifier_call = sec_debug_panic_handler,
+	.notifier_call = sec_debug_normal_reboot_handler,
 };
 
 static void sec_debug_set_build_info(void)
diff --git a/arch/arm/mach-msm/subsystem_restart.c b/arch/arm/mach-msm/subsystem_restart.c
index f6b9cf9..e36b21d 100644
--- a/arch/arm/mach-msm/subsystem_restart.c
+++ b/arch/arm/mach-msm/subsystem_restart.c
@@ -595,9 +595,6 @@ static int __init ssr_init_soc_restart_orders(void)
 {
 	int i;
 
-	atomic_notifier_chain_register(&panic_notifier_list,
-			&panic_nb);
-
 	if (cpu_is_msm8x60()) {
 		for (i = 0; i < ARRAY_SIZE(orders_8x60_all); i++) {
 			mutex_init(&orders_8x60_all[i]->powerup_lock);
diff --git a/include/asm-generic/emergency-restart.h b/include/asm-generic/emergency-restart.h
index 0d68a1e..aaf589c 100644
--- a/include/asm-generic/emergency-restart.h
+++ b/include/asm-generic/emergency-restart.h
@@ -3,7 +3,7 @@
 
 static inline void machine_emergency_restart(void)
 {
-	machine_restart(NULL);
+	machine_restart("recovery");
 }
 
 #endif /* _ASM_GENERIC_EMERGENCY_RESTART_H */
