diff options
-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; |