summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/irq/autoprobe.c6
-rw-r--r--kernel/irq/chip.c16
-rw-r--r--kernel/irq/internals.h3
-rw-r--r--kernel/irq/manage.c14
4 files changed, 5 insertions, 34 deletions
diff --git a/kernel/irq/autoprobe.c b/kernel/irq/autoprobe.c
index c8bbc4fabaa..394784c5706 100644
--- a/kernel/irq/autoprobe.c
+++ b/kernel/irq/autoprobe.c
@@ -47,12 +47,6 @@ unsigned long probe_irq_on(void)
raw_spin_lock_irq(&desc->lock);
if (!desc->action && irq_settings_can_probe(desc)) {
/*
- * An old-style architecture might still have
- * the handle_bad_irq handler there:
- */
- compat_irq_chip_set_default_handler(desc);
-
- /*
* Some chips need to know about probing in
* progress:
*/
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 2b0f9192a83..c19c0b562c8 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -644,19 +644,11 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
return;
}
- if (!handle)
+ if (!handle) {
handle = handle_bad_irq;
- else if (desc->irq_data.chip == &no_irq_chip) {
- printk(KERN_WARNING "Trying to install %sinterrupt handler "
- "for IRQ%d\n", is_chained ? "chained " : "", irq);
- /*
- * Some ARM implementations install a handler for really dumb
- * interrupt hardware without setting an irq_chip. This worked
- * with the ARM no_irq_chip but the check in setup_irq would
- * prevent us to setup the interrupt at all. Switch it to
- * dummy_irq_chip for easy transition.
- */
- desc->irq_data.chip = &dummy_irq_chip;
+ } else {
+ if (WARN_ON(desc->irq_data.chip == &no_irq_chip))
+ return;
}
chip_bus_lock(desc);
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index fd5777ab2d3..f80a7747161 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -74,9 +74,6 @@ enum {
/* Set default functions for irq_chip structures: */
extern void irq_chip_set_defaults(struct irq_chip *chip);
-/* Set default handler: */
-extern void compat_irq_chip_set_default_handler(struct irq_desc *desc);
-
extern int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
unsigned long flags);
extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp);
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index ea6add6036b..99395a24f43 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -540,17 +540,6 @@ int can_request_irq(unsigned int irq, unsigned long irqflags)
return !action;
}
-void compat_irq_chip_set_default_handler(struct irq_desc *desc)
-{
- /*
- * If the architecture still has not overriden
- * the flow handler then zap the default. This
- * should catch incorrect flow-type setting.
- */
- if (desc->handle_irq == &handle_bad_irq)
- desc->handle_irq = NULL;
-}
-
int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
unsigned long flags)
{
@@ -912,8 +901,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
if (ret)
goto out_mask;
- } else
- compat_irq_chip_set_default_handler(desc);
+ }
desc->istate &= ~(IRQS_AUTODETECT | IRQS_SPURIOUS_DISABLED | \
IRQS_INPROGRESS | IRQS_ONESHOT | \