Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 31711
b: refs/heads/master
c: f8b5473
h: refs/heads/master
i:
  31709: f92962a
  31707: c396189
  31703: d5bd09f
  31695: 85ccaf0
  31679: ce0e63d
v: v3
  • Loading branch information
Thomas Gleixner authored and Russell King committed Jul 1, 2006
1 parent 8749a7a commit a87f166
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a2166abd06e7a9fd34eb18b7b27da18c6146e6ef
refs/heads/master: f8b5473fcbddbfde827ecf82aa0e81fa2a878220
3 changes: 2 additions & 1 deletion trunk/include/linux/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -348,8 +348,9 @@ extern int noirqdebug_setup(char *str);
/* Checks whether the interrupt can be requested by request_irq(): */
extern int can_request_irq(unsigned int irq, unsigned long irqflags);

/* Dummy irq-chip implementation: */
/* Dummy irq-chip implementations: */
extern struct irq_chip no_irq_chip;
extern struct irq_chip dummy_irq_chip;

extern void
set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
Expand Down
15 changes: 12 additions & 3 deletions trunk/kernel/irq/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -462,9 +462,18 @@ __set_irq_handler(unsigned int irq,
if (!handle)
handle = handle_bad_irq;

if (is_chained && desc->chip == &no_irq_chip)
printk(KERN_WARNING "Trying to install "
"chained interrupt type for IRQ%d\n", irq);
if (desc->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->chip = &dummy_irq_chip;
}

spin_lock_irqsave(&desc->lock, flags);

Expand Down
16 changes: 16 additions & 0 deletions trunk/kernel/irq/handle.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,22 @@ struct irq_chip no_irq_chip = {
.end = noop,
};

/*
* Generic dummy implementation which can be used for
* real dumb interrupt sources
*/
struct irq_chip dummy_irq_chip = {
.name = "dummy",
.startup = noop_ret,
.shutdown = noop,
.enable = noop,
.disable = noop,
.ack = noop,
.mask = noop,
.unmask = noop,
.end = noop,
};

/*
* Special, empty irq handler:
*/
Expand Down

0 comments on commit a87f166

Please sign in to comment.