Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26c3c283 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Tony Luck
Browse files

x86: mce: Split timer init



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: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarChen Gong <gong.chen@linux.intel.com>
Acked-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent b5975917
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -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 */