aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/setup.c')
-rw-r--r--arch/s390/kernel/setup.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 7e1bfb984064..577aa7dd660e 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;
347 347
348void machine_restart(char *command) 348void machine_restart(char *command)
349{ 349{
350 if (!in_interrupt() || oops_in_progress) 350 if ((!in_interrupt() && !in_atomic()) || oops_in_progress)
351 /* 351 /*
352 * Only unblank the console if we are called in enabled 352 * Only unblank the console if we are called in enabled
353 * context or a bust_spinlocks cleared the way for us. 353 * context or a bust_spinlocks cleared the way for us.
@@ -486,12 +486,14 @@ static void setup_addressing_mode(void)
486 if (s390_noexec) { 486 if (s390_noexec) {
487 printk("S390 execute protection active, "); 487 printk("S390 execute protection active, ");
488 set_amode_and_uaccess(PSW_ASC_SECONDARY, PSW32_ASC_SECONDARY); 488 set_amode_and_uaccess(PSW_ASC_SECONDARY, PSW32_ASC_SECONDARY);
489 return; 489 } else if (switch_amode) {
490 }
491 if (switch_amode) {
492 printk("S390 address spaces switched, "); 490 printk("S390 address spaces switched, ");
493 set_amode_and_uaccess(PSW_ASC_PRIMARY, PSW32_ASC_PRIMARY); 491 set_amode_and_uaccess(PSW_ASC_PRIMARY, PSW32_ASC_PRIMARY);
494 } 492 }
493#ifdef CONFIG_TRACE_IRQFLAGS
494 sysc_restore_trace_psw.mask = psw_kernel_bits & ~PSW_MASK_MCHECK;
495 io_restore_trace_psw.mask = psw_kernel_bits & ~PSW_MASK_MCHECK;
496#endif
495} 497}
496 498
497static void __init 499static void __init