From 42469b83fe28e75c967d4d47f0abc1921c2fb992 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 15 Mar 2024 13:45:01 +0200 Subject: [PATCH] Kernel: kernel panic is now sent to all processors --- kernel/arch/x86_64/IDT.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel/arch/x86_64/IDT.cpp b/kernel/arch/x86_64/IDT.cpp index 239d8007..ceadf745 100644 --- a/kernel/arch/x86_64/IDT.cpp +++ b/kernel/arch/x86_64/IDT.cpp @@ -145,8 +145,8 @@ namespace Kernel { if (g_paniced) { - // FIXME: tell other processors kernel panic has occured dprintln("Processor {} halted", Processor::current_id()); + InterruptController::get().broadcast_ipi(); asm volatile("cli; 1: hlt; jmp 1b"); } @@ -299,6 +299,13 @@ done: extern "C" void cpp_irq_handler(uint64_t irq, InterruptStack& interrupt_stack) { + if (g_paniced) + { + dprintln("Processor {} halted", Processor::current_id()); + InterruptController::get().broadcast_ipi(); + asm volatile("cli; 1: hlt; jmp 1b"); + } + if (Scheduler::current_tid()) { Thread::current().set_return_rsp(interrupt_stack.rsp);