genirq: Use hlist for managing resend handlers
authorShanker Donthineni <sdonthineni@nvidia.com>
Fri, 19 May 2023 13:49:00 +0000 (08:49 -0500)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 24 May 2023 09:39:44 +0000 (11:39 +0200)
commitbc06a9e0874239cb6d4eebcb0ecd1a91ad9272db
tree219f3876ab774118e3cad8937392d9e4f6a812ff
parentd15121be7485655129101f3960ae6add40204463
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
include/linux/irqdesc.h
kernel/irq/chip.c
kernel/irq/internals.h
kernel/irq/irqdesc.c
kernel/irq/resend.c