From 8634bbb792a37537a8684751c2fe3ddbbd0a3a14 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 6 Jan 2026 15:52:59 +0200 Subject: [PATCH] Kernel: Don't save/restore sse or reschedule on spurious interrupts I think these should be just fully ignored :D --- kernel/kernel/IDT.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/kernel/kernel/IDT.cpp b/kernel/kernel/IDT.cpp index 6e4f5669..164a9c24 100644 --- a/kernel/kernel/IDT.cpp +++ b/kernel/kernel/IDT.cpp @@ -382,16 +382,16 @@ namespace Kernel asm volatile("cli; 1: hlt; jmp 1b"); } + if (!InterruptController::get().is_in_service(irq)) + return; + Thread::current().save_sse(); - if (InterruptController::get().is_in_service(irq)) - { - InterruptController::get().eoi(irq); - if (auto* handler = s_interruptables[irq]) - handler->handle_irq(); - else - dprintln("no handler for irq 0x{2H}", irq); - } + InterruptController::get().eoi(irq); + if (auto* handler = s_interruptables[irq]) + handler->handle_irq(); + else + dprintln("no handler for irq 0x{2H}", irq); auto& current_thread = Thread::current(); if (current_thread.can_add_signal_to_execute())