diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-12-31 12:00:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-12-31 12:00:59 -0500 |
commit | db200df0b3530f673d8e9f5bd535e9e10305842a (patch) | |
tree | 9a94039b8813452c51a50fcb45e95c32a9f0e537 /arch/x86 | |
parent | ec270e59a74eee972006a87c8e12514a20588369 (diff) | |
parent | 43a256322ac1fc105c181b3cade3b9bfc0b63ca1 (diff) |
Merge branch 'irq-fixes-for-linus-4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'irq-fixes-for-linus-4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
sparseirq: move __weak symbols into separate compilation unit
sparseirq: work around __weak alias bug
sparseirq: fix hang with !SPARSE_IRQ
sparseirq: set lock_class for legacy irq when sparse_irq is selected
sparseirq: work around compiler optimizing away __weak functions
sparseirq: fix desc->lock init
sparseirq: do not printk when migrating IRQ descriptors
sparseirq: remove duplicated arch_early_irq_init()
irq: simplify for_each_irq_desc() usage
proc: remove ifdef CONFIG_SPARSE_IRQ from stat.c
irq: for_each_irq_desc() move to irqnr.h
hrtimer: remove #include <linux/irq.h>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/io_apic.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c index f6ea94b74da1..74917658b004 100644 --- a/arch/x86/kernel/io_apic.c +++ b/arch/x86/kernel/io_apic.c | |||
@@ -170,7 +170,7 @@ static struct irq_cfg irq_cfgx[NR_IRQS] = { | |||
170 | [15] = { .domain = CPU_MASK_ALL, .vector = IRQ15_VECTOR, }, | 170 | [15] = { .domain = CPU_MASK_ALL, .vector = IRQ15_VECTOR, }, |
171 | }; | 171 | }; |
172 | 172 | ||
173 | void __init arch_early_irq_init(void) | 173 | int __init arch_early_irq_init(void) |
174 | { | 174 | { |
175 | struct irq_cfg *cfg; | 175 | struct irq_cfg *cfg; |
176 | struct irq_desc *desc; | 176 | struct irq_desc *desc; |
@@ -184,6 +184,8 @@ void __init arch_early_irq_init(void) | |||
184 | desc = irq_to_desc(i); | 184 | desc = irq_to_desc(i); |
185 | desc->chip_data = &cfg[i]; | 185 | desc->chip_data = &cfg[i]; |
186 | } | 186 | } |
187 | |||
188 | return 0; | ||
187 | } | 189 | } |
188 | 190 | ||
189 | #ifdef CONFIG_SPARSE_IRQ | 191 | #ifdef CONFIG_SPARSE_IRQ |
@@ -212,7 +214,7 @@ static struct irq_cfg *get_one_free_irq_cfg(int cpu) | |||
212 | return cfg; | 214 | return cfg; |
213 | } | 215 | } |
214 | 216 | ||
215 | void arch_init_chip_data(struct irq_desc *desc, int cpu) | 217 | int arch_init_chip_data(struct irq_desc *desc, int cpu) |
216 | { | 218 | { |
217 | struct irq_cfg *cfg; | 219 | struct irq_cfg *cfg; |
218 | 220 | ||
@@ -224,6 +226,8 @@ void arch_init_chip_data(struct irq_desc *desc, int cpu) | |||
224 | BUG_ON(1); | 226 | BUG_ON(1); |
225 | } | 227 | } |
226 | } | 228 | } |
229 | |||
230 | return 0; | ||
227 | } | 231 | } |
228 | 232 | ||
229 | #ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC | 233 | #ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC |
@@ -1345,8 +1349,6 @@ void __setup_vector_irq(int cpu) | |||
1345 | 1349 | ||
1346 | /* Mark the inuse vectors */ | 1350 | /* Mark the inuse vectors */ |
1347 | for_each_irq_desc(irq, desc) { | 1351 | for_each_irq_desc(irq, desc) { |
1348 | if (!desc) | ||
1349 | continue; | ||
1350 | cfg = desc->chip_data; | 1352 | cfg = desc->chip_data; |
1351 | if (!cpu_isset(cpu, cfg->domain)) | 1353 | if (!cpu_isset(cpu, cfg->domain)) |
1352 | continue; | 1354 | continue; |
@@ -1730,8 +1732,6 @@ __apicdebuginit(void) print_IO_APIC(void) | |||
1730 | for_each_irq_desc(irq, desc) { | 1732 | for_each_irq_desc(irq, desc) { |
1731 | struct irq_pin_list *entry; | 1733 | struct irq_pin_list *entry; |
1732 | 1734 | ||
1733 | if (!desc) | ||
1734 | continue; | ||
1735 | cfg = desc->chip_data; | 1735 | cfg = desc->chip_data; |
1736 | entry = cfg->irq_2_pin; | 1736 | entry = cfg->irq_2_pin; |
1737 | if (!entry) | 1737 | if (!entry) |
@@ -2378,9 +2378,6 @@ static void ir_irq_migration(struct work_struct *work) | |||
2378 | struct irq_desc *desc; | 2378 | struct irq_desc *desc; |
2379 | 2379 | ||
2380 | for_each_irq_desc(irq, desc) { | 2380 | for_each_irq_desc(irq, desc) { |
2381 | if (!desc) | ||
2382 | continue; | ||
2383 | |||
2384 | if (desc->status & IRQ_MOVE_PENDING) { | 2381 | if (desc->status & IRQ_MOVE_PENDING) { |
2385 | unsigned long flags; | 2382 | unsigned long flags; |
2386 | 2383 | ||
@@ -2670,9 +2667,6 @@ static inline void init_IO_APIC_traps(void) | |||
2670 | * 0x80, because int 0x80 is hm, kind of importantish. ;) | 2667 | * 0x80, because int 0x80 is hm, kind of importantish. ;) |
2671 | */ | 2668 | */ |
2672 | for_each_irq_desc(irq, desc) { | 2669 | for_each_irq_desc(irq, desc) { |
2673 | if (!desc) | ||
2674 | continue; | ||
2675 | |||
2676 | cfg = desc->chip_data; | 2670 | cfg = desc->chip_data; |
2677 | if (IO_APIC_IRQ(irq) && cfg && !cfg->vector) { | 2671 | if (IO_APIC_IRQ(irq) && cfg && !cfg->vector) { |
2678 | /* | 2672 | /* |