mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
RISC-V: Support EARLY_AP_STARTUP
The EARLY_AP_STARTUP option initializes non-boot processors much sooner during startup. This adds support for this option on RISC-V and enables it by default for GENERIC. Reviewed by: jhb, markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D21661
This commit is contained in:
parent
4cace859c2
commit
b698d9178d
3 changed files with 27 additions and 0 deletions
|
|
@ -71,6 +71,7 @@ options RACCT # Resource accounting framework
|
|||
options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default
|
||||
options RCTL # Resource limits
|
||||
options SMP
|
||||
options EARLY_AP_STARTUP
|
||||
options INTRNG
|
||||
|
||||
# RISC-V SBI console
|
||||
|
|
|
|||
|
|
@ -37,10 +37,34 @@ __FBSDID("$FreeBSD$");
|
|||
|
||||
#include <sys/types.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/lock.h>
|
||||
#include <sys/mutex.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/sched.h>
|
||||
#include <sys/smp.h>
|
||||
|
||||
void
|
||||
cpu_initclocks(void)
|
||||
{
|
||||
#ifdef EARLY_AP_STARTUP
|
||||
struct thread *td;
|
||||
int i;
|
||||
|
||||
td = curthread;
|
||||
cpu_initclocks_bsp();
|
||||
CPU_FOREACH(i) {
|
||||
if (i == 0)
|
||||
continue;
|
||||
thread_lock(td);
|
||||
sched_bind(td, i);
|
||||
thread_unlock(td);
|
||||
cpu_initclocks_ap();
|
||||
}
|
||||
thread_lock(td);
|
||||
if (sched_is_bound(td))
|
||||
sched_unbind(td);
|
||||
thread_unlock(td);
|
||||
#else
|
||||
cpu_initclocks_bsp();
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -257,8 +257,10 @@ init_secondary(uint64_t hart)
|
|||
/* Enable software interrupts */
|
||||
riscv_unmask_ipi();
|
||||
|
||||
#ifndef EARLY_AP_STARTUP
|
||||
/* Start per-CPU event timers. */
|
||||
cpu_initclocks_ap();
|
||||
#endif
|
||||
|
||||
/* Enable external (PLIC) interrupts */
|
||||
csr_set(sie, SIE_SEIE);
|
||||
|
|
|
|||
Loading…
Reference in a new issue