svn commit: r357048 - head/sys/arm64/arm64
Mark Johnston
markj at FreeBSD.org
Thu Jan 23 16:07:28 UTC 2020
Author: markj
Date: Thu Jan 23 16:07:27 2020
New Revision: 357048
URL: https://svnweb.freebsd.org/changeset/base/357048
Log:
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
Modified:
head/sys/arm64/arm64/mp_machdep.c
Modified: head/sys/arm64/arm64/mp_machdep.c
==============================================================================
--- head/sys/arm64/arm64/mp_machdep.c Thu Jan 23 15:59:30 2020 (r357047)
+++ head/sys/arm64/arm64/mp_machdep.c Thu Jan 23 16:07:27 2020 (r357048)
@@ -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);
More information about the svn-src-head
mailing list