linux_dsm_epyc7002/arch
Yi Li 578d36f5e1 Blackfin: SMP: don't start up core b until its state has been completely onlined
When testing PREEMPT_RT kernel on BF561-EZKit, the kernel blocks while
booting.  When the kernel initializes the ethernet driver, it sleeps and
never wakes up.

The issue happens when the kernel waits for a timer for Core B to timeout
(the timers are per-cpu based: static DEFINE_PER_CPU(struct tvec_base *,
tvec_bases) = &boot_tvec_bases).

However, the ksoftirqd thread for Core B (note, the ksoftirqd thread is
also per-cpu based) cannot work properly, and the timers for Core B never
times out.

When ksoftirqd() for the first time runs on core B, it is possible core A
is still initializing core B (see smp_init() -> cpu_up() -> __cpu_up()).
So the "cpu_is_offline()" check may return true and ksoftirqd moves to
"wait_to_die".

So delay the core b start up until the per-cpu timers have been set up
fully.

Signed-off-by: Yi Li <yi.li@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-12-15 00:16:09 -05:00
..
alpha Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 2009-12-11 15:31:13 -08:00
arm Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6 2009-12-14 10:22:11 -08:00
avr32 Unify sys_mmap* 2009-12-11 06:44:29 -05:00
blackfin Blackfin: SMP: don't start up core b until its state has been completely onlined 2009-12-15 00:16:09 -05:00
cris Unify sys_mmap* 2009-12-11 06:44:29 -05:00
frv Unify sys_mmap* 2009-12-11 06:44:29 -05:00
h8300 Unify sys_mmap* 2009-12-11 06:44:29 -05:00
ia64 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
m32r Unify sys_mmap* 2009-12-11 06:44:29 -05:00
m68k Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
m68knommu Unify sys_mmap* 2009-12-11 06:44:29 -05:00
microblaze microblaze: Remove rt_sigsuspend wrapper 2009-12-14 08:45:12 +01:00
mips Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 2009-12-11 15:31:13 -08:00
mn10300 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
parisc Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 2009-12-11 15:31:13 -08:00
powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
s390 Unify sys_mmap* 2009-12-11 06:44:29 -05:00
score Add missing alignment check in arch/score sys_mmap() 2009-12-11 06:48:57 -05:00
sh fix broken aliasing checks for MAP_FIXED on sparc32, mips, arm and sh 2009-12-11 06:44:59 -05:00
sparc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
um Unify sys_mmap* 2009-12-11 06:44:29 -05:00
x86 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-14 12:36:46 -08:00
xtensa Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 2009-12-11 15:34:40 -08:00
.gitignore
Kconfig Merge branch 'kvm-updates/2.6.33' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2009-12-08 08:02:38 -08:00