diff options
author | Shanker Donthineni <sdonthineni@nvidia.com> | 2023-05-19 08:49:02 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2023-05-24 11:39:44 +0200 |
commit | 721255b9826bd11c7a38b585905fc2dd0fb94e52 (patch) | |
tree | 2c266db0d16e3708c17e86e3adb6cc644a0d9e4b /kernel/irq/internals.h | |
parent | 5e630aa8d9fcd4c0cb6d5d09422009533aba979a (diff) | |
download | linux-721255b9826bd11c7a38b585905fc2dd0fb94e52.tar.gz linux-721255b9826bd11c7a38b585905fc2dd0fb94e52.tar.bz2 linux-721255b9826bd11c7a38b585905fc2dd0fb94e52.zip |
genirq: Use a maple tree for interrupt descriptor management
The current implementation uses a static bitmap for interrupt descriptor
allocation and a radix tree to pointer store the pointer for lookup.
However, the size of the bitmap is constrained by the build time macro
MAX_SPARSE_IRQS, which may not be sufficient to support high-end servers,
particularly those with GICv4.1 hardware, which require a large interrupt
space to cover LPIs and vSGIs.
Replace the bitmap and the radix tree with a maple tree, which not only
stores pointers for lookup, but also provides a mechanism to find free
ranges. That removes the build time hardcoded upper limit.
Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20230519134902.1495562-4-sdonthineni@nvidia.com
Diffstat (limited to 'kernel/irq/internals.h')
-rw-r--r-- | kernel/irq/internals.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h index f3f2090dd2de..7bdb7507efb0 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h @@ -12,7 +12,7 @@ #include <linux/sched/clock.h> #ifdef CONFIG_SPARSE_IRQ -# define MAX_SPARSE_IRQS (NR_IRQS + 8196) +# define MAX_SPARSE_IRQS INT_MAX #else # define MAX_SPARSE_IRQS NR_IRQS #endif |