From 7d0583a33f4e6730ebdf331d035eab199b3e254f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 14 Dec 2019 12:21:39 +0100 Subject: [PATCH] Kernel: Ignore IRQ 15 for now Sometimes QEMU hits us with an IRQ 15 and I don't know what it is. Just ignore it for now instead of crashing the system. --- Kernel/Arch/i386/CPU.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Kernel/Arch/i386/CPU.cpp b/Kernel/Arch/i386/CPU.cpp index df0c4f30af..76bf8ace1c 100644 --- a/Kernel/Arch/i386/CPU.cpp +++ b/Kernel/Arch/i386/CPU.cpp @@ -437,15 +437,16 @@ void flush_idt() asm("lidt %0" ::"m"(s_idtr)); } -/* If an 8259 gets cranky, it'll generate a spurious IRQ7. - * ATM I don't have a clear grasp on when/why this happens, - * so I ignore them and assume it makes no difference. - */ - extern "C" void irq7_handler(); asm( - ".globl irq7_handler \n" - "irq7_handler: \n" + ".globl irq7_handler\n" + "irq7_handler:\n" + " iret\n"); + +extern "C" void irq15_handler(); +asm( + ".globl irq15_handler\n" + "irq15_handler:\n" " iret\n"); void idt_init() @@ -475,6 +476,7 @@ void idt_init() register_interrupt_handler(0x10, _exception16); register_interrupt_handler(0x57, irq7_handler); + register_interrupt_handler(0x5f, irq15_handler); for (u8 i = 0; i < 16; ++i) { s_irq_handler[i] = nullptr;