diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-03-26 21:39:17 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-03-27 17:28:43 +0100 | 
| commit | 6e15cf04860074ad032e88c306bea656bbdd0f22 (patch) | |
| tree | c346383bb7563e8d66b2f4a502f875b259c34870 /arch/arm/kernel/irq.c | |
| parent | be0ea69674ed95e1e98cb3687a241badc756d228 (diff) | |
| parent | 60db56422043aaa455ac7f858ce23c273220f9d9 (diff) | |
| download | olio-linux-3.10-6e15cf04860074ad032e88c306bea656bbdd0f22.tar.xz olio-linux-3.10-6e15cf04860074ad032e88c306bea656bbdd0f22.zip  | |
Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2
Conflicts:
	arch/parisc/kernel/irq.c
	arch/x86/include/asm/fixmap_64.h
	arch/x86/include/asm/setup.h
	kernel/irq/handle.c
Semantic merge:
        arch/x86/include/asm/fixmap.h
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/arm/kernel/irq.c')
| -rw-r--r-- | arch/arm/kernel/irq.c | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 7296f041628..6874c7dca75 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -104,6 +104,11 @@ static struct irq_desc bad_irq_desc = {  	.lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock),  }; +#ifdef CONFIG_CPUMASK_OFFSTACK +/* We are not allocating bad_irq_desc.affinity or .pending_mask */ +#error "ARM architecture does not support CONFIG_CPUMASK_OFFSTACK." +#endif +  /*   * do_IRQ handles all hardware IRQ's.  Decoded IRQs should not   * come via this function.  Instead, they should provide their @@ -161,7 +166,7 @@ void __init init_IRQ(void)  		irq_desc[irq].status |= IRQ_NOREQUEST | IRQ_NOPROBE;  #ifdef CONFIG_SMP -	bad_irq_desc.affinity = CPU_MASK_ALL; +	cpumask_setall(bad_irq_desc.affinity);  	bad_irq_desc.cpu = smp_processor_id();  #endif  	init_arch_irq(); @@ -191,15 +196,16 @@ void migrate_irqs(void)  		struct irq_desc *desc = irq_desc + i;  		if (desc->cpu == cpu) { -			unsigned int newcpu = any_online_cpu(desc->affinity); - -			if (newcpu == NR_CPUS) { +			unsigned int newcpu = cpumask_any_and(desc->affinity, +							      cpu_online_mask); +			if (newcpu >= nr_cpu_ids) {  				if (printk_ratelimit())  					printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n",  					       i, cpu); -				cpus_setall(desc->affinity); -				newcpu = any_online_cpu(desc->affinity); +				cpumask_setall(desc->affinity); +				newcpu = cpumask_any_and(desc->affinity, +							 cpu_online_mask);  			}  			route_irq(desc, i, newcpu);  |