x86, mce: percpu mcheck_timer should be pinned
If CONFIG_NO_HZ + CONFIG_SMP, timer added via add_timer() might be migrated on other cpu. Use add_timer_on() instead. Avoids the following failure: Maciej Rutecki wrote: > > After normal boot I try: > > > > echo 1 > /sys/devices/system/machinecheck/machinecheck0/check_interval > > > > I found this in dmesg: > > > > [ 141.704025] ------------[ cut here ]------------ > > [ 141.704039] WARNING: at arch/x86/kernel/cpu/mcheck/mce.c:1102 > > mcheck_timer+0xf5/0x100() Reported-by: Maciej Rutecki <maciej.rutecki@gmail.com> Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Tested-by: Maciej Rutecki <maciej.rutecki@gmail.com> Acked-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
5211a242d0
commit
5be6066a7f
1 changed files with 2 additions and 2 deletions
|
@ -1117,7 +1117,7 @@ static void mcheck_timer(unsigned long data)
|
|||
*n = min(*n*2, (int)round_jiffies_relative(check_interval*HZ));
|
||||
|
||||
t->expires = jiffies + *n;
|
||||
add_timer(t);
|
||||
add_timer_on(t, smp_processor_id());
|
||||
}
|
||||
|
||||
static void mce_do_trigger(struct work_struct *work)
|
||||
|
@ -1321,7 +1321,7 @@ static void mce_init_timer(void)
|
|||
return;
|
||||
setup_timer(t, mcheck_timer, smp_processor_id());
|
||||
t->expires = round_jiffies(jiffies + *n);
|
||||
add_timer(t);
|
||||
add_timer_on(t, smp_processor_id());
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue