Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7aa8dac7ac68f5c2293e2ecf5ef542aa849f541f
Commit:     7aa8dac7ac68f5c2293e2ecf5ef542aa849f541f
Parent:     3b8c88993e3709b4d44f7ca4e886044a49605394
Author:     Christian Borntraeger <[EMAIL PROTECTED]>
AuthorDate: Tue Nov 20 11:13:31 2007 +0100
Committer:  Martin Schwidefsky <[EMAIL PROTECTED]>
CommitDate: Tue Nov 20 11:13:44 2007 +0100

    [S390] magic sysrq: check for in_atomic before doing an console_unblank
    
    When doing an magic sysrq reboot on s390 the following bug message
    appears:
    
    SysRq : Resetting
    BUG: sleeping function called from invalid context at 
include/asm/semaphore.h:61
    
    in_atomic():1, irqs_disabled():0
    07000000004002a8 000000000fe6bc48 0000000000000002 0000000000000000
           000000000fe6bce8 000000000fe6bc60 000000000fe6bc60 000000000012a79a
           0000000000000000 07000000004002a8 0000000000000006 0000000000000000
           0000000000000000 000000000fe6bc48 000000000000000d 000000000fe6bcb8
           00000000004000c8 0000000000103234 000000000fe6bc48 000000000fe6bc90
    Call Trace:
    (¬<00000000001031b2>| show_trace+0x12e/0x148)
     ¬<000000000011ffca>| __might_sleep+0x10a/0x118
     ¬<0000000000129fba>| acquire_console_sem+0x92/0xf4
     ¬<000000000012a2ca>| console_unblank+0xc2/0xc8
     ¬<0000000000107bb4>| machine_restart+0x54/0x6c
     ¬<000000000028e806>| sysrq_handle_reboot+0x26/0x30
     ¬<000000000028e52a>| __handle_sysrq+0xa6/0x180
     ¬<0000000000140134>| run_workqueue+0xcc/0x18c
     ¬<000000000014029a>| worker_thread+0xa6/0x108
     ¬<00000000001458e4>| kthread+0x64/0x9c
     ¬<0000000000106f0e>| kernel_thread_starter+0x6/0xc
     ¬<0000000000106f08>| kernel_thread_starter+0x0/0xc
    
    The only reason for doing a console_unblank on s390 is to flush the
    log buffer. We have to check for in_atomic before doing a
    console_unblank as the console is otherwise filled with an unrelated
    bug message.
    
    Signed-off-by: Christian Borntraeger <[EMAIL PROTECTED]>
    Signed-off-by: Martin Schwidefsky <[EMAIL PROTECTED]>
---
 arch/s390/kernel/setup.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 7e1bfb9..c4131a8 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -347,7 +347,7 @@ void (*_machine_power_off)(void) = 
do_machine_power_off_nonsmp;
 
 void machine_restart(char *command)
 {
-       if (!in_interrupt() || oops_in_progress)
+       if ((!in_interrupt() && !in_atomic()) || oops_in_progress)
                /*
                 * Only unblank the console if we are called in enabled
                 * context or a bust_spinlocks cleared the way for us.
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to