Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 181168
b: refs/heads/master
c: e9867c5
h: refs/heads/master
v: v3
  • Loading branch information
Paul Mundt committed Feb 2, 2010
1 parent 9bee39c commit a3f4d72
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 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: b4f74767a04e175c028336e06507fcc05f5a8618
refs/heads/master: e9867c569970d8afb4b882bafbbe81426bd46333
28 changes: 16 additions & 12 deletions trunk/drivers/sh/intc.c
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,7 @@ device_initcall(register_intc_sysdevs);
/*
* Dynamic IRQ allocation and deallocation
*/
static unsigned int create_irq_on_node(unsigned int irq_want, int node)
unsigned int create_irq_nr(unsigned int irq_want, int node)
{
unsigned int irq = 0, new;
unsigned long flags;
Expand All @@ -881,24 +881,28 @@ static unsigned int create_irq_on_node(unsigned int irq_want, int node)
spin_lock_irqsave(&vector_lock, flags);

/*
* First try the wanted IRQ, then scan.
* First try the wanted IRQ
*/
if (test_and_set_bit(irq_want, intc_irq_map)) {
if (test_and_set_bit(irq_want, intc_irq_map) == 0) {
new = irq_want;
} else {
/* .. then fall back to scanning. */
new = find_first_zero_bit(intc_irq_map, nr_irqs);
if (unlikely(new == nr_irqs))
goto out_unlock;

desc = irq_to_desc_alloc_node(new, node);
if (unlikely(!desc)) {
pr_info("can't get irq_desc for %d\n", new);
goto out_unlock;
}

desc = move_irq_desc(desc, node);
__set_bit(new, intc_irq_map);
irq = new;
}

desc = irq_to_desc_alloc_node(new, node);
if (unlikely(!desc)) {
pr_info("can't get irq_desc for %d\n", new);
goto out_unlock;
}

desc = move_irq_desc(desc, node);
irq = new;

out_unlock:
spin_unlock_irqrestore(&vector_lock, flags);

Expand All @@ -913,7 +917,7 @@ int create_irq(void)
int nid = cpu_to_node(smp_processor_id());
int irq;

irq = create_irq_on_node(NR_IRQS_LEGACY, nid);
irq = create_irq_nr(NR_IRQS_LEGACY, nid);
if (irq == 0)
irq = -1;

Expand Down

0 comments on commit a3f4d72

Please sign in to comment.