Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 31081
b: refs/heads/master
c: 43f7775
h: refs/heads/master
i:
  31079: e468bb6
v: v3
  • Loading branch information
Ingo Molnar authored and Linus Torvalds committed Jun 29, 2006
1 parent 7533dc9 commit 21c10fe
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f1c2662cbc6a0a9772655649bdf579803d33470b
refs/heads/master: 43f7775944e40221827e4b3aec43824aa4c4e4a9
2 changes: 2 additions & 0 deletions trunk/kernel/irq/handle.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
void fastcall
handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs)
{
print_irq_desc(irq, desc);
kstat_this_cpu.irqs[irq]++;
ack_bad_irq(irq);
}
Expand Down Expand Up @@ -61,6 +62,7 @@ struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned = {
*/
static void ack_bad(unsigned int irq)
{
print_irq_desc(irq, irq_desc + irq);
ack_bad_irq(irq);
}

Expand Down
40 changes: 40 additions & 0 deletions trunk/kernel/irq/internals.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,43 @@ static inline void unregister_handler_proc(unsigned int irq,
struct irqaction *action) { }
#endif

/*
* Debugging printout:
*/

#include <linux/kallsyms.h>

#define P(f) if (desc->status & f) printk("%14s set\n", #f)

static inline void print_irq_desc(unsigned int irq, struct irq_desc *desc)
{
printk("irq %d, desc: %p, depth: %d, count: %d, unhandled: %d\n",
irq, desc, desc->depth, desc->irq_count, desc->irqs_unhandled);
printk("->handle_irq(): %p, ", desc->handle_irq);
print_symbol("%s\n", (unsigned long)desc->handle_irq);
printk("->chip(): %p, ", desc->chip);
print_symbol("%s\n", (unsigned long)desc->chip);
printk("->action(): %p\n", desc->action);
if (desc->action) {
printk("->action->handler(): %p, ", desc->action->handler);
print_symbol("%s\n", (unsigned long)desc->action->handler);
}

P(IRQ_INPROGRESS);
P(IRQ_DISABLED);
P(IRQ_PENDING);
P(IRQ_REPLAY);
P(IRQ_AUTODETECT);
P(IRQ_WAITING);
P(IRQ_LEVEL);
P(IRQ_MASKED);
#ifdef CONFIG_IRQ_PER_CPU
P(IRQ_PER_CPU);
#endif
P(IRQ_NOPROBE);
P(IRQ_NOREQUEST);
P(IRQ_NOAUTOEN);
}

#undef P

0 comments on commit 21c10fe

Please sign in to comment.