diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-02-09 08:58:11 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-09 08:58:11 -0500 |
commit | 249d51b53aea1b7cdb1be65a1a9a0c59d9e06f3e (patch) | |
tree | 7fc06930e46ee13d394f5b031166c40206af3189 /kernel/irq | |
parent | 44581a28e805a31661469c4b466b9cd14b36e7b6 (diff) | |
parent | 8e4921515c1a379539607eb443d51c30f4f7f338 (diff) |
Merge commit 'v2.6.29-rc4' into core/percpu
Conflicts:
arch/x86/mach-voyager/voyager_smp.c
arch/x86/mm/fault.c
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/chip.c | 2 | ||||
-rw-r--r-- | kernel/irq/numa_migrate.c | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index c248eba98b43..122fef4b0bd3 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -386,6 +386,7 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc) | |||
386 | out_unlock: | 386 | out_unlock: |
387 | spin_unlock(&desc->lock); | 387 | spin_unlock(&desc->lock); |
388 | } | 388 | } |
389 | EXPORT_SYMBOL_GPL(handle_level_irq); | ||
389 | 390 | ||
390 | /** | 391 | /** |
391 | * handle_fasteoi_irq - irq handler for transparent controllers | 392 | * handle_fasteoi_irq - irq handler for transparent controllers |
@@ -596,6 +597,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, | |||
596 | } | 597 | } |
597 | spin_unlock_irqrestore(&desc->lock, flags); | 598 | spin_unlock_irqrestore(&desc->lock, flags); |
598 | } | 599 | } |
600 | EXPORT_SYMBOL_GPL(__set_irq_handler); | ||
599 | 601 | ||
600 | void | 602 | void |
601 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, | 603 | set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, |
diff --git a/kernel/irq/numa_migrate.c b/kernel/irq/numa_migrate.c index 666260e4c065..7f9b80434e32 100644 --- a/kernel/irq/numa_migrate.c +++ b/kernel/irq/numa_migrate.c | |||
@@ -78,7 +78,7 @@ static struct irq_desc *__real_move_irq_desc(struct irq_desc *old_desc, | |||
78 | desc = irq_desc_ptrs[irq]; | 78 | desc = irq_desc_ptrs[irq]; |
79 | 79 | ||
80 | if (desc && old_desc != desc) | 80 | if (desc && old_desc != desc) |
81 | goto out_unlock; | 81 | goto out_unlock; |
82 | 82 | ||
83 | node = cpu_to_node(cpu); | 83 | node = cpu_to_node(cpu); |
84 | desc = kzalloc_node(sizeof(*desc), GFP_ATOMIC, node); | 84 | desc = kzalloc_node(sizeof(*desc), GFP_ATOMIC, node); |
@@ -97,10 +97,15 @@ static struct irq_desc *__real_move_irq_desc(struct irq_desc *old_desc, | |||
97 | } | 97 | } |
98 | 98 | ||
99 | irq_desc_ptrs[irq] = desc; | 99 | irq_desc_ptrs[irq] = desc; |
100 | spin_unlock_irqrestore(&sparse_irq_lock, flags); | ||
100 | 101 | ||
101 | /* free the old one */ | 102 | /* free the old one */ |
102 | free_one_irq_desc(old_desc, desc); | 103 | free_one_irq_desc(old_desc, desc); |
104 | spin_unlock(&old_desc->lock); | ||
103 | kfree(old_desc); | 105 | kfree(old_desc); |
106 | spin_lock(&desc->lock); | ||
107 | |||
108 | return desc; | ||
104 | 109 | ||
105 | out_unlock: | 110 | out_unlock: |
106 | spin_unlock_irqrestore(&sparse_irq_lock, flags); | 111 | spin_unlock_irqrestore(&sparse_irq_lock, flags); |