[patch] fix emergency reboot: call reboot notifier list if possible

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Subject: [patch] call reboot notifier list when doing an emergency reboot
From: Ingo Molnar <[email protected]>

my laptop (Lenovo T60) hangs during reboot if the shutdown notifiers are 
not called. So the following command, which on other systems i use as a 
quick way to reboot into a new kernel:

   echo b > /proc/sysrq-trigger

just hangs indefinitely after the kernel prints "Restarting system".

we dont call the reboot notifiers during emergency reboot mainly because 
it could be called from atomic context and reboot notifiers are a 
blocking notifier list. But actually the kernel is often perfectly 
reschedulable in this stage, so we could as well process the 
reboot_notifier_list.

(furthermore, on -rt kernels this place is preemptable even during 
SysRq-b)

So just process the reboot notifier list if we are preemptable. This 
will shut disk caches and chipsets off.

Signed-off-by: Ingo Molnar <[email protected]>
---
 kernel/sys.c |    7 +++++++
 1 file changed, 7 insertions(+)

Index: linux/kernel/sys.c
===================================================================
--- linux.orig/kernel/sys.c
+++ linux/kernel/sys.c
@@ -710,6 +710,13 @@ out_unlock:
  */
 void emergency_restart(void)
 {
+	/*
+	 * Call the notifier chain if we are not in an
+	 * atomic context:
+	 */
+	if (!preempt_count() && !irqs_disabled())
+		blocking_notifier_call_chain(&reboot_notifier_list,
+					     SYS_RESTART, NULL);
 	machine_emergency_restart();
 }
 EXPORT_SYMBOL_GPL(emergency_restart);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux