diff options
author | Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> | 2005-06-21 20:16:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-21 22:07:32 -0400 |
commit | b77d6adc922b8bbf8b16b67f567958c42962cf88 (patch) | |
tree | 6d212543f10d0330b73ec3932d17c97a1da56bdf | |
parent | faec1e99ba9ca7371d9aee1656938373133c4b21 (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/Kconfig | 5 | ||||
-rw-r--r-- | include/linux/irq.h | 3 | ||||
-rw-r--r-- | kernel/irq/manage.c | 4 |
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 | ||
39 | config IRQ_RELEASE_METHOD | ||
40 | bool | ||
41 | default y | ||
42 | |||
38 | menu "UML-specific options" | 43 | menu "UML-specific options" |
39 | 44 | ||
40 | config MODE_TT | 45 | config 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 | ||
53 | typedef struct hw_interrupt_type hw_irq_controller; | 56 | typedef 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; |