linux_dsm_epyc7002/arch/blackfin/mach-common
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
..
arch_checks.c Blackfin: check for anomaly 05000475 2009-11-25 02:35:41 -05:00
cache-c.c Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
cache.S Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
clocks-init.c Blackfin: pull in asm/dpmc.h for power defines 2009-12-15 00:14:50 -05:00
cpufreq.c Blackfin: pull in asm/dpmc.h for power defines 2009-12-15 00:14:50 -05:00
dpmc_modes.S Blackfin: bf538: add support for extended GPIO banks 2009-12-15 00:14:05 -05:00
dpmc.c [Blackfin] arch: Functional power management support: Add CPU and platform voltage scaling support 2008-05-07 11:41:26 +08:00
entry.S Unify sys_mmap* 2009-12-11 06:44:29 -05:00
head.S Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
interrupt.S Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
ints-priority.c Blackfin: pull in asm/dpmc.h for power defines 2009-12-15 00:14:50 -05:00
irqpanic.c Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
Makefile Blackfin: punt dead cache locking code 2009-09-16 22:10:25 -04:00
pm.c Blackfin: mass clean up of copyright/licensing info 2009-10-07 04:36:26 -04:00
smp.c Blackfin: SMP: don't start up core b until its state has been completely onlined 2009-12-15 00:16:09 -05:00