Re: Full dynticks needs evtdesc set before marking cpu online.

From: Robin Holt
Date: Mon May 13 2013 - 08:55:26 EST


On Mon, May 13, 2013 at 11:21:00AM +0200, Thomas Gleixner wrote:
> On Wed, 8 May 2013, Robin Holt wrote:
>
> > Thomas,
> >
> > We are seeing failures booting medium sized machines which I think is
> > a change in expectations that dyntick put on x86's start_secondary.
> >
> > During boot of cpus, we see an occassional panic in tick_do_broadcast at
>
> http://lkml.indiana.edu/hypermail/linux/kernel/1305.0/01818.html
>
> Will hit Linus tree soon.

I think this is really due to a sequence in start_secondary. The cpu
has been marked as online, but its evtdesc has not been initialized.
I sent a followup to this with a hack/patch.

It was essentially:
--- linux.orig/arch/x86/kernel/smpboot.c
+++ linux/arch/x86/kernel/smpboot.c
@@ -264,6 +264,8 @@ notrace static void __cpuinit start_seco
*/
check_tsc_sync_target();

+ x86_cpuinit.setup_percpu_clockev();
+
/*
* We need to hold vector_lock so there the set of online cpus
* does not change while we are assigning vectors to cpus. Holding
@@ -281,8 +283,6 @@ notrace static void __cpuinit start_seco
/* to prevent fake stack check failure in clock setup */
boot_init_stack_canary();

- x86_cpuinit.setup_percpu_clockev();
-
wmb();
cpu_startup_entry(CPUHP_ONLINE);
}


Robin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/