aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/nmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/nmi.c')
-rw-r--r--arch/s390/kernel/nmi.c13
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);
95static int notrace s390_revalidate_registers(struct mci *mci) 96static 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);