diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/kernel/cpu/irq/ipr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/irq/ipr.c b/arch/sh/kernel/cpu/irq/ipr.c index 3eb17ee5540e..fa0c8467a280 100644 --- a/arch/sh/kernel/cpu/irq/ipr.c +++ b/arch/sh/kernel/cpu/irq/ipr.c | |||
@@ -59,10 +59,18 @@ void register_ipr_controller(struct ipr_desc *desc) | |||
59 | 59 | ||
60 | for (i = 0; i < desc->nr_irqs; i++) { | 60 | for (i = 0; i < desc->nr_irqs; i++) { |
61 | struct ipr_data *p = desc->ipr_data + i; | 61 | struct ipr_data *p = desc->ipr_data + i; |
62 | struct irq_desc *irq_desc; | ||
62 | 63 | ||
63 | BUG_ON(p->ipr_idx >= desc->nr_offsets); | 64 | BUG_ON(p->ipr_idx >= desc->nr_offsets); |
64 | BUG_ON(!desc->ipr_offsets[p->ipr_idx]); | 65 | BUG_ON(!desc->ipr_offsets[p->ipr_idx]); |
65 | 66 | ||
67 | irq_desc = irq_to_desc_alloc_cpu(p->irq, smp_processor_id()); | ||
68 | if (unlikely(!irq_desc)) { | ||
69 | printk(KERN_INFO "can not get irq_desc for %d\n", | ||
70 | p->irq); | ||
71 | continue; | ||
72 | } | ||
73 | |||
66 | disable_irq_nosync(p->irq); | 74 | disable_irq_nosync(p->irq); |
67 | set_irq_chip_and_handler_name(p->irq, &desc->chip, | 75 | set_irq_chip_and_handler_name(p->irq, &desc->chip, |
68 | handle_level_irq, "level"); | 76 | handle_level_irq, "level"); |