LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: [patch] fix emergency reboot: call reboot notifier list if possible
Date: Wed, 17 Jan 2007 10:13:19 +0100	[thread overview]
Message-ID: <20070117091319.GA30036@elte.hu> (raw)

Subject: [patch] call reboot notifier list when doing an emergency reboot
From: Ingo Molnar <mingo@elte.hu>

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 <mingo@elte.hu>
---
 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);

             reply	other threads:[~2007-01-17  9:14 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-17  9:13 Ingo Molnar [this message]
2007-01-17  9:22 ` Russell King
2007-01-17  9:39   ` Ingo Molnar
2007-01-17 10:03     ` Andrew Morton
2007-01-17 10:25       ` Ingo Molnar
2007-01-23 19:57       ` Pavel Machek
2007-01-24 16:30         ` Randy Dunlap
2007-01-24 17:49           ` linux-os (Dick Johnson)
2007-01-17  9:51 ` [patch] KVM: do VMXOFF upon reboot Ingo Molnar
2007-01-17 10:02   ` Ingo Molnar
2007-01-21 10:17     ` Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070117091319.GA30036@elte.hu \
    --to=mingo@elte.hu \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --subject='Re: [patch] fix emergency reboot: call reboot notifier list if possible' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).