Re: [PATCH -next] genirq: Add SPARSE_NR_IRQS Kconfig option

From: chenlifu
Date: Sun Oct 30 2022 - 20:38:56 EST


在 2022/10/18 9:22, chenlifu 写道:
在 2022/9/30 16:58, Chen Lifu 写道:
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

Friendly ping ...

Friendly ping ...