diff options
Diffstat (limited to 'arch/s390/kernel/vtime.c')
| -rw-r--r-- | arch/s390/kernel/vtime.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c index 56c8687b29b..7eff9b7347c 100644 --- a/arch/s390/kernel/vtime.c +++ b/arch/s390/kernel/vtime.c @@ -19,6 +19,7 @@  #include <linux/kernel_stat.h>  #include <linux/rcupdate.h>  #include <linux/posix-timers.h> +#include <linux/cpu.h>  #include <asm/s390_ext.h>  #include <asm/timer.h> @@ -566,6 +567,23 @@ void init_cpu_vtimer(void)  	__ctl_set_bit(0,10);  } +static int __cpuinit s390_nohz_notify(struct notifier_block *self, +				      unsigned long action, void *hcpu) +{ +	struct s390_idle_data *idle; +	long cpu = (long) hcpu; + +	idle = &per_cpu(s390_idle, cpu); +	switch (action) { +	case CPU_DYING: +	case CPU_DYING_FROZEN: +		idle->nohz_delay = 0; +	default: +		break; +	} +	return NOTIFY_OK; +} +  void __init vtime_init(void)  {  	/* request the cpu timer external interrupt */ @@ -574,5 +592,6 @@ void __init vtime_init(void)  	/* Enable cpu timer interrupts on the boot cpu. */  	init_cpu_vtimer(); +	cpu_notifier(s390_nohz_notify, 0);  }  |