Changeset View
Changeset View
Standalone View
Standalone View
head/sys/x86/x86/mp_x86.c
Show All 35 Lines | |||||
#include "opt_sched.h" | #include "opt_sched.h" | ||||
#include "opt_smp.h" | #include "opt_smp.h" | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <sys/cons.h> /* cngetc() */ | #include <sys/cons.h> /* cngetc() */ | ||||
#include <sys/cpuset.h> | #include <sys/cpuset.h> | ||||
#include <sys/csan.h> | |||||
#ifdef GPROF | #ifdef GPROF | ||||
#include <sys/gmon.h> | #include <sys/gmon.h> | ||||
#endif | #endif | ||||
#include <sys/kdb.h> | #include <sys/kdb.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/ktr.h> | #include <sys/ktr.h> | ||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
▲ Show 20 Lines • Show All 1,022 Lines • ▼ Show 20 Lines | #endif | ||||
/* Wait until all the AP's are up. */ | /* Wait until all the AP's are up. */ | ||||
while (atomic_load_acq_int(&smp_started) == 0) | while (atomic_load_acq_int(&smp_started) == 0) | ||||
ia32_pause(); | ia32_pause(); | ||||
#ifndef EARLY_AP_STARTUP | #ifndef EARLY_AP_STARTUP | ||||
/* Start per-CPU event timers. */ | /* Start per-CPU event timers. */ | ||||
cpu_initclocks_ap(); | cpu_initclocks_ap(); | ||||
#endif | #endif | ||||
kcsan_cpu_init(cpuid); | |||||
sched_throw(NULL); | sched_throw(NULL); | ||||
panic("scheduler returned us to %s", __func__); | panic("scheduler returned us to %s", __func__); | ||||
/* NOTREACHED */ | /* NOTREACHED */ | ||||
} | } | ||||
static void | static void | ||||
▲ Show 20 Lines • Show All 740 Lines • Show Last 20 Lines |