diff options
| author | Olof Johansson <olof@lixom.net> | 2012-09-05 15:35:48 -0700 | 
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-09-05 15:35:48 -0700 | 
| commit | 1875962377574b4edb7b164001e3e341c25290d5 (patch) | |
| tree | 374a5299403ec21e2d9a66a6548ce876a388b589 /arch/x86/kernel/apic/io_apic.c | |
| parent | 5cbee140a28c2746449ae31e85738043ae4da927 (diff) | |
| parent | c88a79a7789b2909ad1cf69ea2c9142030bbd6f4 (diff) | |
| download | olio-linux-3.10-1875962377574b4edb7b164001e3e341c25290d5.tar.xz olio-linux-3.10-1875962377574b4edb7b164001e3e341c25290d5.zip  | |
Merge branch 'soc-core' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/dt
* 'soc-core' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
  ARM: mach-shmobile: Add compilation support for dtbs using 'make dtbs'
  + sync to 3.6-rc3
Diffstat (limited to 'arch/x86/kernel/apic/io_apic.c')
| -rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 406eee78468..c265593ec2c 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -1204,7 +1204,7 @@ static void __clear_irq_vector(int irq, struct irq_cfg *cfg)  	BUG_ON(!cfg->vector);  	vector = cfg->vector; -	for_each_cpu(cpu, cfg->domain) +	for_each_cpu_and(cpu, cfg->domain, cpu_online_mask)  		per_cpu(vector_irq, cpu)[vector] = -1;  	cfg->vector = 0; @@ -1212,7 +1212,7 @@ static void __clear_irq_vector(int irq, struct irq_cfg *cfg)  	if (likely(!cfg->move_in_progress))  		return; -	for_each_cpu(cpu, cfg->old_domain) { +	for_each_cpu_and(cpu, cfg->old_domain, cpu_online_mask) {  		for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS;  								vector++) {  			if (per_cpu(vector_irq, cpu)[vector] != irq) @@ -1356,6 +1356,16 @@ static void setup_ioapic_irq(unsigned int irq, struct irq_cfg *cfg,  	if (!IO_APIC_IRQ(irq))  		return; +	/* +	 * For legacy irqs, cfg->domain starts with cpu 0. Now that IO-APIC +	 * can handle this irq and the apic driver is finialized at this point, +	 * update the cfg->domain. +	 */ +	if (irq < legacy_pic->nr_legacy_irqs && +	    cpumask_equal(cfg->domain, cpumask_of(0))) +		apic->vector_allocation_domain(0, cfg->domain, +					       apic->target_cpus()); +  	if (assign_irq_vector(irq, cfg, apic->target_cpus()))  		return;  |