From 786b4ea8c01ef08088c1f3ea5d0abbafab6b63e9 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Mon, 18 Jan 2021 13:44:37 -0800 Subject: [PATCH] [kernel] Don't unmask IOAPIC IRQs immediately The amount of spurious IRQ activity on real hardware severely slows down the system (minutes per frame instead of frames per second). There's no reason to unmask all of them from the get-go before they're set up to be handled. --- src/kernel/device_manager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/kernel/device_manager.cpp b/src/kernel/device_manager.cpp index 6d611c4..597a4be 100644 --- a/src/kernel/device_manager.cpp +++ b/src/kernel/device_manager.cpp @@ -63,7 +63,7 @@ void irq4_callback(void *) device_manager::device_manager() : - m_lapic(0) + m_lapic(nullptr) { m_irqs.ensure_capacity(32); m_irqs.set_size(16); @@ -236,12 +236,14 @@ device_manager::load_apic(const acpi_apic *apic) p += length; } + /* for (uint8_t i = 0; i < m_ioapics[0].get_num_gsi(); ++i) { switch (i) { case 2: break; default: m_ioapics[0].mask(i, false); } } + */ m_lapic->enable(); }