diff options
author | Jeremy Erickson <jerickso@cs.unc.edu> | 2014-04-11 13:24:45 -0400 |
---|---|---|
committer | Jeremy Erickson <jerickso@cs.unc.edu> | 2014-04-11 13:24:45 -0400 |
commit | 438145c7ef5c9445f25bb8fc4d52e2c9d11fdc7c (patch) | |
tree | 76941991e36f4a32bf1be0db3854959053f24619 /arch/s390/kernel | |
parent | 9ddd1b8ad8abd321964b8add5581910de6d67c2a (diff) |
Update from 2.6.36 to 2.6.36.4wip-dissipation-jerickso
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r-- | arch/s390/kernel/nmi.c | 10 | ||||
-rw-r--r-- | arch/s390/kernel/vtime.c | 19 |
2 files changed, 23 insertions, 6 deletions
diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c index ac151399ef34..1995c1712fc8 100644 --- a/arch/s390/kernel/nmi.c +++ b/arch/s390/kernel/nmi.c | |||
@@ -95,7 +95,6 @@ EXPORT_SYMBOL_GPL(s390_handle_mcck); | |||
95 | static int notrace s390_revalidate_registers(struct mci *mci) | 95 | static int notrace s390_revalidate_registers(struct mci *mci) |
96 | { | 96 | { |
97 | int kill_task; | 97 | int kill_task; |
98 | u64 tmpclock; | ||
99 | u64 zero; | 98 | u64 zero; |
100 | void *fpt_save_area, *fpt_creg_save_area; | 99 | void *fpt_save_area, *fpt_creg_save_area; |
101 | 100 | ||
@@ -214,11 +213,10 @@ static int notrace s390_revalidate_registers(struct mci *mci) | |||
214 | : "0", "cc"); | 213 | : "0", "cc"); |
215 | #endif | 214 | #endif |
216 | /* Revalidate clock comparator register */ | 215 | /* Revalidate clock comparator register */ |
217 | asm volatile( | 216 | if (S390_lowcore.clock_comparator == -1) |
218 | " stck 0(%1)\n" | 217 | set_clock_comparator(S390_lowcore.mcck_clock); |
219 | " sckc 0(%1)" | 218 | else |
220 | : "=m" (tmpclock) : "a" (&(tmpclock)) : "cc", "memory"); | 219 | set_clock_comparator(S390_lowcore.clock_comparator); |
221 | |||
222 | /* Check if old PSW is valid */ | 220 | /* Check if old PSW is valid */ |
223 | if (!mci->wp) | 221 | if (!mci->wp) |
224 | /* | 222 | /* |
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index 3479f1b0d4e0..c1e326cedea5 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/kernel_stat.h> | 19 | #include <linux/kernel_stat.h> |
20 | #include <linux/rcupdate.h> | 20 | #include <linux/rcupdate.h> |
21 | #include <linux/posix-timers.h> | 21 | #include <linux/posix-timers.h> |
22 | #include <linux/cpu.h> | ||
22 | 23 | ||
23 | #include <asm/s390_ext.h> | 24 | #include <asm/s390_ext.h> |
24 | #include <asm/timer.h> | 25 | #include <asm/timer.h> |
@@ -565,6 +566,23 @@ void init_cpu_vtimer(void) | |||
565 | __ctl_set_bit(0,10); | 566 | __ctl_set_bit(0,10); |
566 | } | 567 | } |
567 | 568 | ||
569 | static int __cpuinit s390_nohz_notify(struct notifier_block *self, | ||
570 | unsigned long action, void *hcpu) | ||
571 | { | ||
572 | struct s390_idle_data *idle; | ||
573 | long cpu = (long) hcpu; | ||
574 | |||
575 | idle = &per_cpu(s390_idle, cpu); | ||
576 | switch (action) { | ||
577 | case CPU_DYING: | ||
578 | case CPU_DYING_FROZEN: | ||
579 | idle->nohz_delay = 0; | ||
580 | default: | ||
581 | break; | ||
582 | } | ||
583 | return NOTIFY_OK; | ||
584 | } | ||
585 | |||
568 | void __init vtime_init(void) | 586 | void __init vtime_init(void) |
569 | { | 587 | { |
570 | /* request the cpu timer external interrupt */ | 588 | /* request the cpu timer external interrupt */ |
@@ -573,5 +591,6 @@ void __init vtime_init(void) | |||
573 | 591 | ||
574 | /* Enable cpu timer interrupts on the boot cpu. */ | 592 | /* Enable cpu timer interrupts on the boot cpu. */ |
575 | init_cpu_vtimer(); | 593 | init_cpu_vtimer(); |
594 | cpu_notifier(s390_nohz_notify, 0); | ||
576 | } | 595 | } |
577 | 596 | ||