[PATCH 20/25] irq: Generalize the check for HARDIRQ_BITS.

From: Eric W. Biederman
Date: Tue Jun 20 2006 - 18:28:23 EST


This patch adds support for systems that cannot receive every interrupt
on a single cpu simultaneously, in the check to see if we have enough HARDIRQ_BITS.

MAX_HARDIRQS_PER_CPU becomes the count of the maximum number of hardare
generated interrupts per cpu.

On architectures that support per cpu interrupt delivery this can be a
significant space savings and scalability bonus.

This patch adds support for systems that cannot receive every interrupt on

Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxx>
---
include/asm-x86_64/hardirq.h | 3 +++
include/linux/hardirq.h | 7 ++++++-
2 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/include/asm-x86_64/hardirq.h b/include/asm-x86_64/hardirq.h
index 64a65ce..95d5e09 100644
--- a/include/asm-x86_64/hardirq.h
+++ b/include/asm-x86_64/hardirq.h
@@ -6,6 +6,9 @@ #include <linux/irq.h>
#include <asm/pda.h>
#include <asm/apic.h>

+/* We can have at most NR_VECTORS irqs routed to a cpu at a time */
+#define MAX_HARDIRQS_PER_CPU NR_VECTORS
+
#define __ARCH_IRQ_STAT 1

#define local_softirq_pending() read_pda(__softirq_pending)
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
index ccabda7..f60b8c3 100644
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -27,11 +27,16 @@ #define SOFTIRQ_BITS 8

#ifndef HARDIRQ_BITS
#define HARDIRQ_BITS 12
+
+#ifndef MAX_HARDIRQS_PER_CPU
+#define MAX_HARDIRQS_PER_CPU NR_IRQS
+#endif
+
/*
* The hardirq mask has to be large enough to have space for potentially
* all IRQ sources in the system nesting on a single CPU.
*/
-#if (1 << HARDIRQ_BITS) < NR_IRQS
+#if (1 << HARDIRQ_BITS) < MAX_HARDIRQS_PER_CPU
# error HARDIRQ_BITS is too low!
#endif
#endif
--
1.4.0.gc07e

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/