diff options
Diffstat (limited to 'arch/s390/kernel/nmi.c')
-rw-r--r-- | arch/s390/kernel/nmi.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c index ac151399ef34..fab88431a06f 100644 --- a/arch/s390/kernel/nmi.c +++ b/arch/s390/kernel/nmi.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * Heiko Carstens <heiko.carstens@de.ibm.com>, | 8 | * Heiko Carstens <heiko.carstens@de.ibm.com>, |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/kernel_stat.h> | ||
11 | #include <linux/init.h> | 12 | #include <linux/init.h> |
12 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
13 | #include <linux/hardirq.h> | 14 | #include <linux/hardirq.h> |
@@ -95,7 +96,6 @@ EXPORT_SYMBOL_GPL(s390_handle_mcck); | |||
95 | static int notrace s390_revalidate_registers(struct mci *mci) | 96 | static int notrace s390_revalidate_registers(struct mci *mci) |
96 | { | 97 | { |
97 | int kill_task; | 98 | int kill_task; |
98 | u64 tmpclock; | ||
99 | u64 zero; | 99 | u64 zero; |
100 | void *fpt_save_area, *fpt_creg_save_area; | 100 | void *fpt_save_area, *fpt_creg_save_area; |
101 | 101 | ||
@@ -214,11 +214,10 @@ static int notrace s390_revalidate_registers(struct mci *mci) | |||
214 | : "0", "cc"); | 214 | : "0", "cc"); |
215 | #endif | 215 | #endif |
216 | /* Revalidate clock comparator register */ | 216 | /* Revalidate clock comparator register */ |
217 | asm volatile( | 217 | if (S390_lowcore.clock_comparator == -1) |
218 | " stck 0(%1)\n" | 218 | set_clock_comparator(S390_lowcore.mcck_clock); |
219 | " sckc 0(%1)" | 219 | else |
220 | : "=m" (tmpclock) : "a" (&(tmpclock)) : "cc", "memory"); | 220 | set_clock_comparator(S390_lowcore.clock_comparator); |
221 | |||
222 | /* Check if old PSW is valid */ | 221 | /* Check if old PSW is valid */ |
223 | if (!mci->wp) | 222 | if (!mci->wp) |
224 | /* | 223 | /* |
@@ -257,7 +256,7 @@ void notrace s390_do_machine_check(struct pt_regs *regs) | |||
257 | nmi_enter(); | 256 | nmi_enter(); |
258 | s390_idle_check(regs, S390_lowcore.mcck_clock, | 257 | s390_idle_check(regs, S390_lowcore.mcck_clock, |
259 | S390_lowcore.mcck_enter_timer); | 258 | S390_lowcore.mcck_enter_timer); |
260 | 259 | kstat_cpu(smp_processor_id()).irqs[NMI_NMI]++; | |
261 | mci = (struct mci *) &S390_lowcore.mcck_interruption_code; | 260 | mci = (struct mci *) &S390_lowcore.mcck_interruption_code; |
262 | mcck = &__get_cpu_var(cpu_mcck); | 261 | mcck = &__get_cpu_var(cpu_mcck); |
263 | umode = user_mode(regs); | 262 | umode = user_mode(regs); |