sched_throw() expects the caller to hold a spinlock section; see the
td_md initialization in cpu_fork(). This bug can cause a deadlock when
APs are started: statclock() fires before the thread lock acquired in
sched_throw() is released, and recurses on the thread lock.
Details
Details
Diff Detail
Diff Detail
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 21823 Build 21091: arc lint + arc unit
Event Timeline
sys/riscv/riscv/mp_machdep.c | ||
---|---|---|
231 | Are interrupts enabled here at all? We really depend on them not being enabled on APs until after the first context switch. |
sys/riscv/riscv/mp_machdep.c | ||
---|---|---|
231 | Hmm, it was added here: https://svnweb.freebsd.org/changeset/base/335005 We boot in QEMU without the intr_disable(), though. I added code to read and print sstatus here, and SIE is disabled. So it seems safe to remove the intr_disable(). |