diff --git a/kernel-src/arch/x86-64/smp.c b/kernel-src/arch/x86-64/smp.c index 70495425..404cb6d5 100644 --- a/kernel-src/arch/x86-64/smp.c +++ b/kernel-src/arch/x86-64/smp.c @@ -50,8 +50,11 @@ static void cpuwakeup(struct limine_mp_info *info) { arch_profiling_init(); #endif - __atomic_add_fetch(&arch_smp_cpusawake, 1, __ATOMIC_SEQ_CST); sched_ap_entry(); + + __atomic_add_fetch(&arch_smp_cpusawake, 1, __ATOMIC_SEQ_CST); + + sched_stop_current_thread(); } void arch_smp_send_ipi(cpu_t *targcpu, isr_t *isr, int target, bool nmi) { diff --git a/kernel-src/sys/scheduler/scheduler.c b/kernel-src/sys/scheduler/scheduler.c index 5b0b6a0b..a7fd8ebd 100644 --- a/kernel-src/sys/scheduler/scheduler.c +++ b/kernel-src/sys/scheduler/scheduler.c @@ -376,7 +376,6 @@ void sched_ap_entry() { timer_insert(current_cpu()->timer, ¤t_cpu()->schedtimerentry, reschedule_timer_dpc, NULL, QUANTUM_US, true); timer_insert(current_cpu()->timer, ¤t_cpu()->calendar_tick_timer_entry, sched_calendar_tick, NULL, 10000, true); timer_resume(current_cpu()->timer); - sched_stop_current_thread(); } void sched_init() {