diff options
| -rw-r--r-- | kernel/irq/autoprobe.c | 6 | ||||
| -rw-r--r-- | kernel/irq/chip.c | 16 | ||||
| -rw-r--r-- | kernel/irq/internals.h | 3 | ||||
| -rw-r--r-- | kernel/irq/manage.c | 14 | 
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 | \  |