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>
This commit is contained in:
@@ -163,7 +163,7 @@ void __kprobes vtime_stop_cpu(void)
|
||||
/* Wait for external, I/O or machine check interrupt. */
|
||||
psw_mask = PSW_KERNEL_BITS | PSW_MASK_WAIT | PSW_MASK_DAT |
|
||||
PSW_MASK_IO | PSW_MASK_EXT | PSW_MASK_MCHECK;
|
||||
idle->nohz_delay = 0;
|
||||
clear_cpu_flag(CIF_NOHZ_DELAY);
|
||||
|
||||
/* Call the assembler magic in entry.S */
|
||||
psw_idle(idle, psw_mask);
|
||||
@@ -378,25 +378,8 @@ void init_cpu_vtimer(void)
|
||||
set_vtimer(VTIMER_MAX_SLICE);
|
||||
}
|
||||
|
||||
static int 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 & ~CPU_TASKS_FROZEN) {
|
||||
case CPU_DYING:
|
||||
idle->nohz_delay = 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
void __init vtime_init(void)
|
||||
{
|
||||
/* Enable cpu timer interrupts on the boot cpu. */
|
||||
init_cpu_vtimer();
|
||||
cpu_notifier(s390_nohz_notify, 0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user