aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>2005-06-21 20:16:24 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-21 22:07:32 -0400
commitb77d6adc922b8bbf8b16b67f567958c42962cf88 (patch)
tree6d212543f10d0330b73ec3932d17c97a1da56bdf
parentfaec1e99ba9ca7371d9aee1656938373133c4b21 (diff)
[PATCH] uml: make hw_controller_type->release exist only for archs needing it
With Chris Wedgwood <cw@f00f.org> As suggested by Chris, we can make the "just added" method ->release conditional to UML only (better: to archs requesting it, i.e. only UML currently), so that other archs don't get this unneeded crud, and if UML won't need it any more we can kill this. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> CC: Ingo Molnar <mingo@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/um/Kconfig5
-rw-r--r--include/linux/irq.h3
-rw-r--r--kernel/irq/manage.c4
3 files changed, 12 insertions, 0 deletions
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index c5292181a664..b8e952c88fd1 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -35,6 +35,11 @@ config GENERIC_CALIBRATE_DELAY
35 bool 35 bool
36 default y 36 default y
37 37
38# Used in kernel/irq/manage.c and include/linux/irq.h
39config IRQ_RELEASE_METHOD
40 bool
41 default y
42
38menu "UML-specific options" 43menu "UML-specific options"
39 44
40config MODE_TT 45config MODE_TT
diff --git a/include/linux/irq.h b/include/linux/irq.h
index b68ad80e2464..7fc1022be9ee 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -47,7 +47,10 @@ struct hw_interrupt_type {
47 void (*ack)(unsigned int irq); 47 void (*ack)(unsigned int irq);
48 void (*end)(unsigned int irq); 48 void (*end)(unsigned int irq);
49 void (*set_affinity)(unsigned int irq, cpumask_t dest); 49 void (*set_affinity)(unsigned int irq, cpumask_t dest);
50 /* Currently used only by UML, might disappear one day.*/
51#ifdef CONFIG_IRQ_RELEASE_METHOD
50 void (*release)(unsigned int irq, void *dev_id); 52 void (*release)(unsigned int irq, void *dev_id);
53#endif
51}; 54};
52 55
53typedef struct hw_interrupt_type hw_irq_controller; 56typedef struct hw_interrupt_type hw_irq_controller;
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 5fde8177eedf..ac6700985705 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -6,6 +6,7 @@
6 * This file contains driver APIs to the irq subsystem. 6 * This file contains driver APIs to the irq subsystem.
7 */ 7 */
8 8
9#include <linux/config.h>
9#include <linux/irq.h> 10#include <linux/irq.h>
10#include <linux/module.h> 11#include <linux/module.h>
11#include <linux/random.h> 12#include <linux/random.h>
@@ -256,8 +257,11 @@ void free_irq(unsigned int irq, void *dev_id)
256 /* Found it - now remove it from the list of entries */ 257 /* Found it - now remove it from the list of entries */
257 *pp = action->next; 258 *pp = action->next;
258 259
260 /* Currently used only by UML, might disappear one day.*/
261#ifdef CONFIG_IRQ_RELEASE_METHOD
259 if (desc->handler->release) 262 if (desc->handler->release)
260 desc->handler->release(irq, dev_id); 263 desc->handler->release(irq, dev_id);
264#endif
261 265
262 if (!desc->action) { 266 if (!desc->action) {
263 desc->status |= IRQ_DISABLED; 267 desc->status |= IRQ_DISABLED;