lkml.org 
[lkml]   [2007]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch] fix emergency reboot: call reboot notifier list if possible
    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);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-01-17 11:01    [W:0.030 / U:29.772 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site