diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-31 11:32:31 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-05 16:30:01 -0500 |
commit | 9d45cf9e36bf9bcf16df6e1cbf049807c8402823 (patch) | |
tree | 2118a16701418af10d215d2174df7ee0a5cbe6bd /kernel/irq | |
parent | a146649bc19d5eba4f5bfac6720c5f252d517a71 (diff) | |
parent | 0cd5c3c80a0ebd68c08312fa7d8c13149cc61c4c (diff) |
Merge branch 'x86/urgent' into x86/apic
Conflicts:
arch/x86/mach-default/setup.c
Semantic merge:
arch/x86/kernel/irqinit_32.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
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); |