Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 146802
b: refs/heads/master
c: 05ff300
h: refs/heads/master
v: v3
  • Loading branch information
Paul Mundt committed May 21, 2009
1 parent 735c920 commit 1d0460b
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 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: fa1d43ab451084785153d37ae559c4fdd1546a5b
refs/heads/master: 05ff3004d278b54760abd71530506d803182c71d
8 changes: 8 additions & 0 deletions trunk/arch/sh/kernel/cpu/irq/ipr.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,18 @@ void register_ipr_controller(struct ipr_desc *desc)

for (i = 0; i < desc->nr_irqs; i++) {
struct ipr_data *p = desc->ipr_data + i;
struct irq_desc *irq_desc;

BUG_ON(p->ipr_idx >= desc->nr_offsets);
BUG_ON(!desc->ipr_offsets[p->ipr_idx]);

irq_desc = irq_to_desc_alloc_cpu(p->irq, smp_processor_id());
if (unlikely(!irq_desc)) {
printk(KERN_INFO "can not get irq_desc for %d\n",
p->irq);
continue;
}

disable_irq_nosync(p->irq);
set_irq_chip_and_handler_name(p->irq, &desc->chip,
handle_level_irq, "level");
Expand Down
12 changes: 10 additions & 2 deletions trunk/drivers/sh/intc.c
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ unsigned int intc_evt2irq(unsigned int vector)

void __init register_intc_controller(struct intc_desc *desc)
{
unsigned int i, k, smp;
unsigned int i, k, smp, cpu = smp_processor_id();
struct intc_desc_int *d;

d = alloc_bootmem(sizeof(*d));
Expand Down Expand Up @@ -770,11 +770,19 @@ void __init register_intc_controller(struct intc_desc *desc)
/* register the vectors one by one */
for (i = 0; i < desc->nr_vectors; i++) {
struct intc_vect *vect = desc->vectors + i;
unsigned int irq = evt2irq(vect->vect);
struct irq_desc *irq_desc;

if (!vect->enum_id)
continue;

intc_register_irq(desc, d, vect->enum_id, evt2irq(vect->vect));
irq_desc = irq_to_desc_alloc_cpu(irq, cpu);
if (unlikely(!irq_desc)) {
printk(KERN_INFO "can not get irq_desc for %d\n", irq);
continue;
}

intc_register_irq(desc, d, vect->enum_id, irq);
}
}

Expand Down

0 comments on commit 1d0460b

Please sign in to comment.