From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759135Ab2FFVxy (ORCPT ); Wed, 6 Jun 2012 17:53:54 -0400 Received: from www.linutronix.de ([62.245.132.108]:52287 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759040Ab2FFVxZ (ORCPT ); Wed, 6 Jun 2012 17:53:25 -0400 Message-Id: <20120606215116.614980367@linutronix.de> User-Agent: quilt/0.48-1 Date: Wed, 06 Jun 2012 21:53:23 -0000 From: Thomas Gleixner To: LKML Cc: Tony Luck , Borislav Petkov , Chen Gong , x86@kernel.org, Peter Zijlstra Subject: [patch 3/5] x86: mce: Split timer init References: <20120606214941.104735929@linutronix.de> Content-Disposition: inline; filename=x86-mce-split-timer-init.patch X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Split timer init function into the init and the start part, so the start part can replace the open coded version in CPU_DOWN_FAILED. Signed-off-by: Thomas Gleixner --- arch/x86/kernel/cpu/mcheck/mce.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) Index: tip/arch/x86/kernel/cpu/mcheck/mce.c =================================================================== --- tip.orig/arch/x86/kernel/cpu/mcheck/mce.c +++ tip/arch/x86/kernel/cpu/mcheck/mce.c @@ -1554,23 +1554,28 @@ static void __mcheck_cpu_init_vendor(str } } -static void __mcheck_cpu_init_timer(void) +static void mce_start_timer(unsigned int cpu, struct timer_list *t) { - struct timer_list *t = &__get_cpu_var(mce_timer); unsigned long iv = check_interval * HZ; - setup_timer(t, mce_timer_fn, smp_processor_id()); + __this_cpu_write(mce_next_interval, iv); - if (mce_ignore_ce) + if (mce_ignore_ce || !iv) return; - __this_cpu_write(mce_next_interval, iv); - if (!iv) - return; t->expires = round_jiffies(jiffies + iv); add_timer_on(t, smp_processor_id()); } +static void __mcheck_cpu_init_timer(void) +{ + struct timer_list *t = &__get_cpu_var(mce_timer); + unsigned int cpu = smp_processor_id(); + + setup_timer(t, mce_timer_fn, cpu); + mce_start_timer(cpu, t); +} + /* Handle unconfigured int18 (should never happen) */ static void unexpected_machine_check(struct pt_regs *regs, long error_code) { @@ -2275,12 +2280,8 @@ mce_cpu_callback(struct notifier_block * break; case CPU_DOWN_FAILED: case CPU_DOWN_FAILED_FROZEN: - if (!mce_ignore_ce && check_interval) { - t->expires = round_jiffies(jiffies + - per_cpu(mce_next_interval, cpu)); - add_timer_on(t, cpu); - } smp_call_function_single(cpu, mce_reenable_cpu, &action, 1); + mce_start_timer(cpu, t); break; case CPU_POST_DEAD: /* intentionally ignoring frozen here */