[PATCH -next] genirq: Add SPARSE_NR_IRQS Kconfig option
From: Chen Lifu
Date: Fri Sep 30 2022 - 05:03:04 EST
On a large-scale multi-core and NUMA platform, more than 1024 cores and
16 NUMA nodes for example, even if SPASE_IRQ is selected to increase the
number of interrupt numbers by 8196 base on NR_IRQS, the interrupt numbers
requirement cannot be met. Therefore, make the number of sparse interrupt
numbers configurable.
Signed-off-by: Chen Lifu <chenlifu@xxxxxxxxxx>
---
kernel/irq/Kconfig | 8 ++++++++
kernel/irq/internals.h | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index db3d174c53d4..b517b820e329 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -123,10 +123,18 @@ config SPARSE_IRQ
( Sparse irqs can also be beneficial on NUMA boxes, as they spread
out the interrupt descriptors in a more NUMA-friendly way. )
If you don't know what to do here, say N.
+config SPARSE_NR_IRQS
+ int "Number of sparse interrupt numbers"
+ depends on SPARSE_IRQ
+ default 8196
+ help
+ This defines the maximum number of interrupt numbers
+ that can be dynamically expanded.
+
config GENERIC_IRQ_DEBUGFS
bool "Expose irq internals in debugfs"
depends on DEBUG_FS
select GENERIC_IRQ_INJECTION
default n
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index f09c60393e55..ab8ac93c60e6 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -10,11 +10,11 @@
#include <linux/kernel_stat.h>
#include <linux/pm_runtime.h>
#include <linux/sched/clock.h>
#ifdef CONFIG_SPARSE_IRQ
-# define IRQ_BITMAP_BITS (NR_IRQS + 8196)
+# define IRQ_BITMAP_BITS (NR_IRQS + CONFIG_SPARSE_NR_IRQS)
#else
# define IRQ_BITMAP_BITS NR_IRQS
#endif
#define istate core_internal_state__do_not_mess_with_it
--
2.37.1