aboutsummaryrefslogtreecommitdiff
path: root/sys/arm64/arm64/mp_machdep.c
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2020-01-23 16:07:27 +0000
committerMark Johnston <markj@FreeBSD.org>2020-01-23 16:07:27 +0000
commit32a1f92f2c33002f1b6b89d3a7195563e812cb84 (patch)
tree45746ae6e2b70de824d37cd16f8eebb78d7e608d /sys/arm64/arm64/mp_machdep.c
parentaf6fbe519c93135f820b55e2fb1f1c9076c7cddd (diff)
downloadsrc-32a1f92f2c33002f1b6b89d3a7195563e812cb84.tar.gz
src-32a1f92f2c33002f1b6b89d3a7195563e812cb84.zip
arm64: Don't enable interrupts in init_secondary().
Doing so can cause deadlocks or panics during boot, if an interrupt handler accesses uninitialized per-CPU scheduler structures. This seems to occur frequently when running under QEMU or AWS. The idle threads are set up to release a spinlock section and enable interrupts in fork_exit(), so there is no need to enable interrupts earlier. Reviewed by: kib MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D23328
Notes
Notes: svn path=/head/; revision=357048
Diffstat (limited to 'sys/arm64/arm64/mp_machdep.c')
-rw-r--r--sys/arm64/arm64/mp_machdep.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c
index bbda274bb226..e16a1f416c93 100644
--- a/sys/arm64/arm64/mp_machdep.c
+++ b/sys/arm64/arm64/mp_machdep.c
@@ -240,18 +240,12 @@ init_secondary(uint64_t cpu)
dbg_init();
pan_enable();
- /* Enable interrupts */
- intr_enable();
-
mtx_lock_spin(&ap_boot_mtx);
-
atomic_add_rel_32(&smp_cpus, 1);
-
if (smp_cpus == mp_ncpus) {
/* enable IPI's, tlb shootdown, freezes etc */
atomic_store_rel_int(&smp_started, 1);
}
-
mtx_unlock_spin(&ap_boot_mtx);
kcsan_cpu_init(cpu);