aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/vtime.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2014-09-30 11:37:52 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-10-09 03:14:02 -0400
commitfe0f49768d807a8fe6336b097feb8c4441951710 (patch)
tree5473c103c550bfa72871b4418521f7836a24d6b1 /arch/s390/kernel/vtime.c
parenta9b1649917f0d2058022eda06082f9d299a06354 (diff)
s390/nohz: use a per-cpu flag for arch_needs_cpu
Move the nohz_delay bit from the s390_idle data structure to the per-cpu flags. Clear the nohz delay flag in __cpu_disable and remove the cpu hotplug notifier that used to do this. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/vtime.c')
-rw-r--r--arch/s390/kernel/vtime.c19
1 files changed, 1 insertions, 18 deletions
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 8c34363d6f1e..40709821abde 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -163,7 +163,7 @@ void __kprobes vtime_stop_cpu(void)
163 /* Wait for external, I/O or machine check interrupt. */ 163 /* Wait for external, I/O or machine check interrupt. */
164 psw_mask = PSW_KERNEL_BITS | PSW_MASK_WAIT | PSW_MASK_DAT | 164 psw_mask = PSW_KERNEL_BITS | PSW_MASK_WAIT | PSW_MASK_DAT |
165 PSW_MASK_IO | PSW_MASK_EXT | PSW_MASK_MCHECK; 165 PSW_MASK_IO | PSW_MASK_EXT | PSW_MASK_MCHECK;
166 idle->nohz_delay = 0; 166 clear_cpu_flag(CIF_NOHZ_DELAY);
167 167
168 /* Call the assembler magic in entry.S */ 168 /* Call the assembler magic in entry.S */
169 psw_idle(idle, psw_mask); 169 psw_idle(idle, psw_mask);
@@ -378,25 +378,8 @@ void init_cpu_vtimer(void)
378 set_vtimer(VTIMER_MAX_SLICE); 378 set_vtimer(VTIMER_MAX_SLICE);
379} 379}
380 380
381static int s390_nohz_notify(struct notifier_block *self, unsigned long action,
382 void *hcpu)
383{
384 struct s390_idle_data *idle;
385 long cpu = (long) hcpu;
386
387 idle = &per_cpu(s390_idle, cpu);
388 switch (action & ~CPU_TASKS_FROZEN) {
389 case CPU_DYING:
390 idle->nohz_delay = 0;
391 default:
392 break;
393 }
394 return NOTIFY_OK;
395}
396
397void __init vtime_init(void) 381void __init vtime_init(void)
398{ 382{
399 /* Enable cpu timer interrupts on the boot cpu. */ 383 /* Enable cpu timer interrupts on the boot cpu. */
400 init_cpu_vtimer(); 384 init_cpu_vtimer();
401 cpu_notifier(s390_nohz_notify, 0);
402} 385}