From: Thomas Gleixner Date: Mon, 23 Mar 2009 13:50:03 +0000 (+0100) Subject: Merge branch 'cpus4096' into irq/threaded X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=80c5520811d3805adcb15c570ea5e2d489fa5d0b;p=linux-2.6-omap-h63xx.git Merge branch 'cpus4096' into irq/threaded Conflicts: arch/parisc/kernel/irq.c kernel/irq/handle.c Signed-off-by: Thomas Gleixner --- 80c5520811d3805adcb15c570ea5e2d489fa5d0b diff --cc arch/parisc/kernel/irq.c index adfd617b4c1,49482806863..1c740f5cbd6 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c @@@ -132,13 -133,10 +132,13 @@@ int cpu_check_affinity(unsigned int irq static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest) { - if (cpu_check_affinity(irq, dest)) + int cpu_dest; + + cpu_dest = cpu_check_affinity(irq, dest); + if (cpu_dest < 0) return; - cpumask_copy(&irq_desc[irq].affinity, &cpumask_of_cpu(cpu_dest)); - cpumask_copy(irq_desc[irq].affinity, dest); ++ cpumask_copy(&irq_desc[irq].affinity, dest); } #endif diff --cc kernel/irq/handle.c index f6cdda68e5c,f51eaee921b..9ebf7796887 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@@ -243,9 -252,8 +255,9 @@@ int __init early_irq_init(void for (i = 0; i < count; i++) { desc[i].irq = i; + init_alloc_desc_masks(&desc[i], 0, true); + desc[i].kstat_irqs = kstat_irqs_all[i]; } - return arch_early_irq_init(); } diff --cc kernel/irq/internals.h index b60950bf5a1,40416a81a0f..ee1aa9f8e8b --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h @@@ -15,9 -15,15 +15,16 @@@ extern int __irq_set_trigger(struct irq extern struct lock_class_key irq_desc_lock_class; extern void init_kstat_irqs(struct irq_desc *desc, int cpu, int nr); +extern void clear_kstat_irqs(struct irq_desc *desc); extern spinlock_t sparse_irq_lock; + + #ifdef CONFIG_SPARSE_IRQ + /* irq_desc_ptrs allocated at boot time */ + extern struct irq_desc **irq_desc_ptrs; + #else + /* irq_desc_ptrs is a fixed size array */ extern struct irq_desc *irq_desc_ptrs[NR_IRQS]; + #endif #ifdef CONFIG_PROC_FS extern void register_irq_proc(unsigned int irq, struct irq_desc *desc);