aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/handle.c
diff options
context:
space:
mode:
authorYinghai Lu <yhlu.kernel@gmail.com>2008-08-19 20:50:15 -0700
committerIngo Molnar <mingo@elte.hu>2008-10-16 16:52:50 +0200
commit46926b67fc663d357a1a8174328998a9e49da0b8 (patch)
tree33870a6c416bbc4d246ecfbf015a78c61943a36d /kernel/irq/handle.c
parentirq: remove >= nr_irqs checking with config_have_sparse_irq (diff)
downloadlinux-dev-46926b67fc663d357a1a8174328998a9e49da0b8.tar.xz
linux-dev-46926b67fc663d357a1a8174328998a9e49da0b8.zip
generic: add irq_desc in function in parameter
So we could remove some duplicated calling to irq_desc v2: make sure irq_desc in init/main.c is not used without generic_hardirqs Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/irq/handle.c')
-rw-r--r--kernel/irq/handle.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
index 8e55dbe50afc..e1d787e9169b 100644
--- a/kernel/irq/handle.c
+++ b/kernel/irq/handle.c
@@ -197,6 +197,21 @@ struct irq_desc *irq_to_desc(unsigned int irq)
* we run out of pre-allocate ones, allocate more
*/
printk(KERN_DEBUG "try to get more irq_desc %d\n", nr_irq_desc);
+ {
+ /* double check if some one mess up the list */
+ struct irq_desc *desc;
+ int count = 0;
+
+ desc = &sparse_irqs[0];
+ while (desc) {
+ printk(KERN_DEBUG "found irq_desc for irq %d\n", desc->irq);
+ if (desc->next)
+ printk(KERN_DEBUG "found irq_desc for irq %d and next will be irq %d\n", desc->irq, desc->next->irq);
+ desc = desc->next;
+ count++;
+ }
+ printk(KERN_DEBUG "all preallocted %d\n", count);
+ }
total_bytes = sizeof(struct irq_desc) * nr_irq_desc;
if (after_bootmem)
@@ -221,6 +236,21 @@ struct irq_desc *irq_to_desc(unsigned int irq)
desc->irq = irq;
desc_pri->next = desc;
+ {
+ /* double check if some one mess up the list */
+ struct irq_desc *desc;
+ int count = 0;
+
+ desc = &sparse_irqs[0];
+ while (desc) {
+ printk(KERN_DEBUG "1 found irq_desc for irq %d\n", desc->irq);
+ if (desc->next)
+ printk(KERN_DEBUG "1 found irq_desc for irq %d and next will be irq %d\n", desc->irq, desc->next->irq);
+ desc = desc->next;
+ count++;
+ }
+ printk(KERN_DEBUG "1 all preallocted %d\n", count);
+ }
return desc;
}