]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
x86: mce: Split timer init
authorThomas Gleixner <tglx@linutronix.de>
Thu, 19 Jul 2012 17:59:39 +0000 (13:59 -0400)
committerTony Luck <tony.luck@intel.com>
Fri, 3 Aug 2012 18:46:29 +0000 (11:46 -0700)
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 <tglx@linutronix.de>
Signed-off-by: Chen Gong <gong.chen@linux.intel.com>
Acked-by: Borislav Petkov <borislav.petkov@amd.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/x86/kernel/cpu/mcheck/mce.c

index 5e095f873e3eb731a42012c5e10310fc238ed9c7..bd3a5e850f4f7129a4baac31128405d7d12bcbc2 100644 (file)
@@ -1557,23 +1557,28 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
        }
 }
 
-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)
 {
@@ -2277,12 +2282,8 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
                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 */