diff options
Diffstat (limited to 'arch/x86/kernel/apic/io_apic.c')
| -rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index e4e0ddcb154..127b8718abf 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -36,6 +36,7 @@  #include <linux/freezer.h>  #include <linux/kthread.h>  #include <linux/jiffies.h>	/* time_after() */ +#include <linux/slab.h>  #ifdef CONFIG_ACPI  #include <acpi/acpi_bus.h>  #endif @@ -1268,6 +1269,14 @@ void __setup_vector_irq(int cpu)  	/* Mark the inuse vectors */  	for_each_irq_desc(irq, desc) {  		cfg = desc->chip_data; + +		/* +		 * If it is a legacy IRQ handled by the legacy PIC, this cpu +		 * will be part of the irq_cfg's domain. +		 */ +		if (irq < legacy_pic->nr_legacy_irqs && !IO_APIC_IRQ(irq)) +			cpumask_set_cpu(cpu, cfg->domain); +  		if (!cpumask_test_cpu(cpu, cfg->domain))  			continue;  		vector = cfg->vector;  |