提交 b77d6adc 编写于 作者: P Paolo 'Blaisorblade' Giarrusso 提交者: Linus Torvalds

[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: NPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
CC: Ingo Molnar <mingo@redhat.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 faec1e99
...@@ -35,6 +35,11 @@ config GENERIC_CALIBRATE_DELAY ...@@ -35,6 +35,11 @@ config GENERIC_CALIBRATE_DELAY
bool bool
default y default y
# Used in kernel/irq/manage.c and include/linux/irq.h
config IRQ_RELEASE_METHOD
bool
default y
menu "UML-specific options" menu "UML-specific options"
config MODE_TT config MODE_TT
......
...@@ -47,7 +47,10 @@ struct hw_interrupt_type { ...@@ -47,7 +47,10 @@ struct hw_interrupt_type {
void (*ack)(unsigned int irq); void (*ack)(unsigned int irq);
void (*end)(unsigned int irq); void (*end)(unsigned int irq);
void (*set_affinity)(unsigned int irq, cpumask_t dest); void (*set_affinity)(unsigned int irq, cpumask_t dest);
/* Currently used only by UML, might disappear one day.*/
#ifdef CONFIG_IRQ_RELEASE_METHOD
void (*release)(unsigned int irq, void *dev_id); void (*release)(unsigned int irq, void *dev_id);
#endif
}; };
typedef struct hw_interrupt_type hw_irq_controller; typedef struct hw_interrupt_type hw_irq_controller;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* This file contains driver APIs to the irq subsystem. * This file contains driver APIs to the irq subsystem.
*/ */
#include <linux/config.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/random.h> #include <linux/random.h>
...@@ -256,8 +257,11 @@ void free_irq(unsigned int irq, void *dev_id) ...@@ -256,8 +257,11 @@ void free_irq(unsigned int irq, void *dev_id)
/* Found it - now remove it from the list of entries */ /* Found it - now remove it from the list of entries */
*pp = action->next; *pp = action->next;
/* Currently used only by UML, might disappear one day.*/
#ifdef CONFIG_IRQ_RELEASE_METHOD
if (desc->handler->release) if (desc->handler->release)
desc->handler->release(irq, dev_id); desc->handler->release(irq, dev_id);
#endif
if (!desc->action) { if (!desc->action) {
desc->status |= IRQ_DISABLED; desc->status |= IRQ_DISABLED;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册