From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 23 Mar 2009 13:50:03 +0000 (+0100)
Subject: Merge branch 'cpus4096' into irq/threaded
X-Git-Tag: v2.6.30-rc1~3^2~6
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=80c5520811d3805adcb15c570ea5e2d489fa5d0b;p=linux.git

Merge branch 'cpus4096' into irq/threaded

Conflicts:
	arch/parisc/kernel/irq.c
	kernel/irq/handle.c

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---

80c5520811d3805adcb15c570ea5e2d489fa5d0b
diff --cc arch/parisc/kernel/irq.c
index adfd617b4c18,49482806863f..1c740f5cbd63
--- 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 f6cdda68e5c6,f51eaee921b6..9ebf77968871
--- 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 b60950bf5a16,40416a81a0f5..ee1aa9f8e8b9
--- 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);