diff options
author | Shanker Donthineni <sdonthineni@nvidia.com> | 2023-05-19 15:49:00 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2023-05-24 11:39:44 +0200 |
commit | bc06a9e0874239cb6d4eebcb0ecd1a91ad9272db (patch) | |
tree | 219f3876ab774118e3cad8937392d9e4f6a812ff /kernel/irq/internals.h | |
parent | Revert "softirq: Let ksoftirqd do its job" (diff) | |
download | linux-bc06a9e0874239cb6d4eebcb0ecd1a91ad9272db.tar.xz linux-bc06a9e0874239cb6d4eebcb0ecd1a91ad9272db.zip |
genirq: Use hlist for managing resend handlers
The current implementation utilizes a bitmap for managing interrupt resend
handlers, which is allocated based on the SPARSE_IRQ/NR_IRQS macros.
However, this method may not efficiently utilize memory during runtime,
particularly when IRQ_BITMAP_BITS is large.
Address this issue by using an hlist to manage interrupt resend handlers
instead of relying on a static bitmap memory allocation. Additionally, a
new function, clear_irq_resend(), is introduced and called from
irq_shutdown to ensure a graceful teardown of the interrupt.
Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20230519134902.1495562-2-sdonthineni@nvidia.com
Diffstat (limited to 'kernel/irq/internals.h')
-rw-r--r-- | kernel/irq/internals.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h index 5fdc0b557579..51fc8c497c22 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h @@ -113,6 +113,8 @@ irqreturn_t handle_irq_event(struct irq_desc *desc); /* Resending of interrupts :*/ int check_irq_resend(struct irq_desc *desc, bool inject); +void clear_irq_resend(struct irq_desc *desc); +void irq_resend_init(struct irq_desc *desc); bool irq_wait_for_poll(struct irq_desc *desc); void __irq_wake_thread(struct irq_desc *desc, struct irqaction *action); |