diff options
Diffstat (limited to 'arch/s390/kernel/setup.c')
| -rw-r--r-- | arch/s390/kernel/setup.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 7e1bfb984064..50f8f1e3760e 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 | ||
| 348 | void machine_restart(char *command) | 348 | void 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. |
| @@ -492,6 +492,10 @@ static void setup_addressing_mode(void) | |||
| 492 | printk("S390 address spaces switched, "); | 492 | printk("S390 address spaces switched, "); |
| 493 | set_amode_and_uaccess(PSW_ASC_PRIMARY, PSW32_ASC_PRIMARY); | 493 | set_amode_and_uaccess(PSW_ASC_PRIMARY, PSW32_ASC_PRIMARY); |
| 494 | } | 494 | } |
| 495 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
| 496 | sysc_restore_trace_psw.mask = psw_kernel_bits & ~PSW_MASK_MCHECK; | ||
| 497 | io_restore_trace_psw.mask = psw_kernel_bits & ~PSW_MASK_MCHECK; | ||
| 498 | #endif | ||
| 495 | } | 499 | } |
| 496 | 500 | ||
| 497 | static void __init | 501 | static void __init |
