public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures
@ 2005-11-22  5:19 Matthew Wilcox
  2005-11-22 14:20 ` Matthew Wilcox
  2005-11-22 14:27 ` Christoph Hellwig
  0 siblings, 2 replies; 5+ messages in thread
From: Matthew Wilcox @ 2005-11-22  5:19 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton
  Cc: Matthew Wilcox, Ingo Molnar, linux-kernel, Russell King,
	Ian Molton, David Howells, Benjamin Herrenschmidt, Paul Mackerras

Add a default definition of NO_IRQ to <linux/hardirq.h> and make the
definition in <asm/hardirq.h> uniform across all architectures which
define it.

Signed-off-by: Matthew Wilcox <matthew@wil.cx>

---

 include/asm-arm/irq.h     |    5 +----
 include/asm-arm26/irq.h   |    5 +----
 include/asm-frv/irq.h     |    2 +-
 include/asm-parisc/irq.h  |    2 +-
 include/asm-powerpc/irq.h |    2 +-
 include/linux/hardirq.h   |   10 ++++++++++
 6 files changed, 15 insertions(+), 11 deletions(-)

applies-to: 48ad7d3f9b055a9d4c1a1ab1f6dd0a584cfed99c
8a7e8c26051c3abef81eb155c8a721716e24cc26
diff --git a/include/asm-arm/irq.h b/include/asm-arm/irq.h
index 59975ee..4ea980e 100644
--- a/include/asm-arm/irq.h
+++ b/include/asm-arm/irq.h
@@ -12,12 +12,9 @@
 #endif
 
 /*
- * Use this value to indicate lack of interrupt
- * capability
+ * Use this value to indicate lack of interrupt capability
  */
-#ifndef NO_IRQ
 #define NO_IRQ	((unsigned int)(-1))
-#endif
 
 struct irqaction;
 
diff --git a/include/asm-arm26/irq.h b/include/asm-arm26/irq.h
index 06bd5a5..88e8ab7 100644
--- a/include/asm-arm26/irq.h
+++ b/include/asm-arm26/irq.h
@@ -15,12 +15,9 @@
 
 
 /*
- * Use this value to indicate lack of interrupt
- * capability
+ * Use this value to indicate lack of interrupt capability
  */
-#ifndef NO_IRQ
 #define NO_IRQ	((unsigned int)(-1))
-#endif
 
 struct irqaction;
 
diff --git a/include/asm-frv/irq.h b/include/asm-frv/irq.h
index 2c16d8d..018ef9b 100644
--- a/include/asm-frv/irq.h
+++ b/include/asm-frv/irq.h
@@ -21,7 +21,7 @@
  */
 
 /* this number is used when no interrupt has been assigned */
-#define NO_IRQ				(-1)
+#define NO_IRQ				((unsigned int)(-1))
 
 #define NR_IRQ_LOG2_ACTIONS_PER_GROUP	5
 #define NR_IRQ_ACTIONS_PER_GROUP	(1 << NR_IRQ_LOG2_ACTIONS_PER_GROUP)
diff --git a/include/asm-parisc/irq.h b/include/asm-parisc/irq.h
index b0a30e2..d8de7cf 100644
--- a/include/asm-parisc/irq.h
+++ b/include/asm-parisc/irq.h
@@ -11,7 +11,7 @@
 #include <linux/cpumask.h>
 #include <asm/types.h>
 
-#define NO_IRQ		(-1)
+#define NO_IRQ		((unsigned int)(-1))
 
 #ifdef CONFIG_GSC
 #define GSC_IRQ_BASE	16
diff --git a/include/asm-powerpc/irq.h b/include/asm-powerpc/irq.h
index 8eb7e85..61579c0 100644
--- a/include/asm-powerpc/irq.h
+++ b/include/asm-powerpc/irq.h
@@ -16,7 +16,7 @@
 #include <asm/atomic.h>
 
 /* this number is used when no interrupt has been assigned */
-#define NO_IRQ			(-1)
+#define NO_IRQ			((unsigned int)(-1))
 
 /*
  * These constants are used for passing information about interrupt
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
index 71d2b8a..510d71b 100644
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -5,6 +5,7 @@
 #include <linux/preempt.h>
 #include <linux/smp_lock.h>
 #include <asm/hardirq.h>
+#include <asm/irq.h>
 #include <asm/system.h>
 
 /*
@@ -87,6 +88,15 @@ extern void synchronize_irq(unsigned int
 # define synchronize_irq(irq)	barrier()
 #endif
 
+/*
+ * This value means "Device has no interrupt".  The value 0 has
+ * historically been used, but it's a legal interrupt number on some
+ * architectures.  These architectures typically define it to be -1 instead.
+ */
+#ifndef NO_IRQ
+#define NO_IRQ			((unsigned int)0)
+#endif
+
 #define nmi_enter()		irq_enter()
 #define nmi_exit()		sub_preempt_count(HARDIRQ_OFFSET)
 
---
0.99.8.GIT

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures
  2005-11-22  5:19 [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures Matthew Wilcox
@ 2005-11-22 14:20 ` Matthew Wilcox
  2005-11-22 14:27 ` Christoph Hellwig
  1 sibling, 0 replies; 5+ messages in thread
From: Matthew Wilcox @ 2005-11-22 14:20 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton
  Cc: Ingo Molnar, linux-kernel, Russell King, Ian Molton,
	David Howells, Benjamin Herrenschmidt, Paul Mackerras,
	Matthew Wilcox

On Tue, Nov 22, 2005 at 12:19:06AM -0500, Matthew Wilcox wrote:
> Add a default definition of NO_IRQ to <linux/hardirq.h> and make the
> definition in <asm/hardirq.h> uniform across all architectures which
> define it.

I don't like this patch in the cold light of day, since I made the
include mess worse than it already is.  Updated patch to follow.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures
  2005-11-22  5:19 [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures Matthew Wilcox
  2005-11-22 14:20 ` Matthew Wilcox
@ 2005-11-22 14:27 ` Christoph Hellwig
  2005-11-22 16:43   ` Matthew Wilcox
  1 sibling, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2005-11-22 14:27 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Linus Torvalds, Andrew Morton, Ingo Molnar, linux-kernel,
	Russell King, Ian Molton, David Howells, Benjamin Herrenschmidt,
	Paul Mackerras

On Tue, Nov 22, 2005 at 12:19:06AM -0500, Matthew Wilcox wrote:
> Add a default definition of NO_IRQ to <linux/hardirq.h> and make the
> definition in <asm/hardirq.h> uniform across all architectures which
> define it.

Please put the definition into <asm/irq.h> and <linux/interrupt.h>,
hardirq.h is rather misnamed and about the internal irq/softirq/preempt
mask mechanisms.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures
  2005-11-22 14:27 ` Christoph Hellwig
@ 2005-11-22 16:43   ` Matthew Wilcox
  2005-12-06 17:23     ` Christoph Hellwig
  0 siblings, 1 reply; 5+ messages in thread
From: Matthew Wilcox @ 2005-11-22 16:43 UTC (permalink / raw)
  To: Christoph Hellwig, Linus Torvalds, Andrew Morton, Ingo Molnar,
	linux-kernel, Russell King, Ian Molton, David Howells,
	Benjamin Herrenschmidt, Paul Mackerras

On Tue, Nov 22, 2005 at 02:27:55PM +0000, Christoph Hellwig wrote:
> On Tue, Nov 22, 2005 at 12:19:06AM -0500, Matthew Wilcox wrote:
> > Add a default definition of NO_IRQ to <linux/hardirq.h> and make the
> > definition in <asm/hardirq.h> uniform across all architectures which
> > define it.
> 
> Please put the definition into <asm/irq.h> and <linux/interrupt.h>,
> hardirq.h is rather misnamed and about the internal irq/softirq/preempt
> mask mechanisms.

Either you're wrong or I'm confused.  I don't see the include path which
necessarily drags asm/irq.h in from linux/interrupt.h.  There's a
linux/interrupt.h -> linux/hardirq.h -> asm/hardirq.h path, but not all
asm/hardirq.h files drag in asm/irq.h.  Look at sparc64 or alpha for
examples of that.

Personally, I'd like to see asm/hardirq.h go away and move all its
contents into asm/irq.h.  And I'd like to see asm/irq.h included
explicitly from linux/interrupt.h.  And I'd like to see drivers stop
including asm/irq.h.

While I'm dreaming, I'd like a pony.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures
  2005-11-22 16:43   ` Matthew Wilcox
@ 2005-12-06 17:23     ` Christoph Hellwig
  0 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2005-12-06 17:23 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Christoph Hellwig, Linus Torvalds, Andrew Morton, Ingo Molnar,
	linux-kernel, Russell King, Ian Molton, David Howells,
	Benjamin Herrenschmidt, Paul Mackerras

On Tue, Nov 22, 2005 at 09:43:46AM -0700, Matthew Wilcox wrote:
> > Please put the definition into <asm/irq.h> and <linux/interrupt.h>,
> > hardirq.h is rather misnamed and about the internal irq/softirq/preempt
> > mask mechanisms.
> 
> Either you're wrong or I'm confused.  I don't see the include path which
> necessarily drags asm/irq.h in from linux/interrupt.h.  There's a
> linux/interrupt.h -> linux/hardirq.h -> asm/hardirq.h path, but not all
> asm/hardirq.h files drag in asm/irq.h.  Look at sparc64 or alpha for
> examples of that.

Indeed.  But that still doesn't mean we should pollute <linux/hardirq.h>
with it..

> Personally, I'd like to see asm/hardirq.h go away and move all its
> contents into asm/irq.h.  And I'd like to see asm/irq.h included
> explicitly from linux/interrupt.h.  And I'd like to see drivers stop
> including asm/irq.h.

Agreed.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-12-06 17:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-22  5:19 [PATCH 2/5] Ensure NO_IRQ is appropriately defined on all architectures Matthew Wilcox
2005-11-22 14:20 ` Matthew Wilcox
2005-11-22 14:27 ` Christoph Hellwig
2005-11-22 16:43   ` Matthew Wilcox
2005-12-06 17:23     ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox