From e5cc78e9db15fbedd67a3248dc637e55e59022b5 Mon Sep 17 00:00:00 2001 From: Pankaj Raghav Date: Fri, 28 Apr 2023 14:06:26 +0200 Subject: [PATCH] Kernel: Add m_reserved private variable to GenericInterruptHandler Pin-based PCI device are allocated an IRQ, and it could be shared with multiple devices. An interrupt handler with an IRQ for a PCI device will get registered only during the driver initialization. For MSI(x) interrupts, the driver has to allocate IRQs and this field can be used to skip IRQs that have already been reserved by pin-based interrupts so that we don't have to share IRQs, which generally will reduce the performance. --- Kernel/Interrupts/GenericInterruptHandler.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Kernel/Interrupts/GenericInterruptHandler.h b/Kernel/Interrupts/GenericInterruptHandler.h index a7000b7e45..cb2e492d5e 100644 --- a/Kernel/Interrupts/GenericInterruptHandler.h +++ b/Kernel/Interrupts/GenericInterruptHandler.h @@ -48,6 +48,8 @@ public: virtual bool eoi() = 0; void increment_call_count(); + void set_reserved() { m_reserved = true; }; + bool reserved() const { return m_reserved; }; protected: void change_interrupt_number(u8 number); @@ -61,6 +63,7 @@ private: u8 m_interrupt_number { 0 }; bool m_disable_remap { false }; bool m_registered { false }; + bool m_reserved { false }; IntrusiveListNode m_list_node;