From: Paolo 'Blaisorblade' Giarrusso , Chris Wedgwood 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 CC: Ingo Molnar Signed-off-by: Andrew Morton --- arch/um/Kconfig | 5 +++++ include/linux/irq.h | 3 +++ kernel/irq/manage.c | 4 ++++ 3 files changed, 12 insertions(+) diff -puN arch/um/Kconfig~uml-make-hw_controller_type-release-exist-only-for-archs-needing-it arch/um/Kconfig --- 25/arch/um/Kconfig~uml-make-hw_controller_type-release-exist-only-for-archs-needing-it 2005-06-08 15:28:28.000000000 -0700 +++ 25-akpm/arch/um/Kconfig 2005-06-08 15:28:28.000000000 -0700 @@ -35,6 +35,11 @@ config GENERIC_CALIBRATE_DELAY bool default y +# Used in kernel/irq/manage.c and include/linux/irq.h +config IRQ_RELEASE_METHOD + bool + default y + menu "UML-specific options" config MODE_TT diff -puN include/linux/irq.h~uml-make-hw_controller_type-release-exist-only-for-archs-needing-it include/linux/irq.h --- 25/include/linux/irq.h~uml-make-hw_controller_type-release-exist-only-for-archs-needing-it 2005-06-08 15:28:28.000000000 -0700 +++ 25-akpm/include/linux/irq.h 2005-06-08 15:28:28.000000000 -0700 @@ -47,7 +47,10 @@ struct hw_interrupt_type { void (*ack)(unsigned int irq); void (*end)(unsigned int irq); 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); +#endif }; typedef struct hw_interrupt_type hw_irq_controller; diff -puN kernel/irq/manage.c~uml-make-hw_controller_type-release-exist-only-for-archs-needing-it kernel/irq/manage.c --- 25/kernel/irq/manage.c~uml-make-hw_controller_type-release-exist-only-for-archs-needing-it 2005-06-08 15:28:28.000000000 -0700 +++ 25-akpm/kernel/irq/manage.c 2005-06-08 15:28:28.000000000 -0700 @@ -6,6 +6,7 @@ * This file contains driver APIs to the irq subsystem. */ +#include #include #include #include @@ -260,8 +261,11 @@ void free_irq(unsigned int irq, void *de /* Found it - now remove it from the list of entries */ *pp = action->next; + /* Currently used only by UML, might disappear one day.*/ +#ifdef CONFIG_IRQ_RELEASE_METHOD if (desc->handler->release) desc->handler->release(irq, dev_id); +#endif if (!desc->action) { desc->status |= IRQ_DISABLED; _