alistair23-linux/arch/x86/kernel/apic
Yinghai Lu 087d7e56de x86: Fix MSI-X initialization by using online_mask for x2apic target_cpus
found a system where x2apic reports an MSI-X irq initialization
failure:

[  302.859446] igbvf 0000:81:10.4: enabling device (0000 -> 0002)
[  302.874369] igbvf 0000:81:10.4: using 64bit DMA mask
[  302.879023] igbvf 0000:81:10.4: using 64bit consistent DMA mask
[  302.894386] igbvf 0000:81:10.4: enabling bus mastering
[  302.898171] igbvf 0000:81:10.4: setting latency timer to 64
[  302.914050] reserve_memtype added 0xefb08000-0xefb0c000, track uncached-minus, req uncached-minus, ret uncached-minus
[  302.933839] reserve_memtype added 0xefb28000-0xefb29000, track uncached-minus, req uncached-minus, ret uncached-minus
[  302.940367]   alloc irq_desc for 265 on node 4
[  302.956874]   alloc kstat_irqs on node 4
[  302.959452] alloc irq_2_iommu on node 0
[  302.974328] igbvf 0000:81:10.4: irq 265 for MSI/MSI-X
[  302.977778]   alloc irq_desc for 266 on node 4
[  302.980347]   alloc kstat_irqs on node 4
[  302.995312] free_memtype request 0xefb28000-0xefb29000
[  302.998816] igbvf 0000:81:10.4: Failed to initialize MSI-X interrupts.

... it turns out that when trying to enable MSI-X,
__assign_irq_vector(new, cfg_new, apic->target_cpus()) can not
get vector because for x2apic target-cpus returns cpumask_of(0)

Update that to online_mask like xapic.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>
LKML-Reference: <4A785AFF.3050902@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-08-08 17:04:58 +02:00
..
apic.c x86: Remove unused variable disable_x2apic 2009-07-03 14:34:27 +02:00
apic_flat_64.c x86: don't call read_apic_id if !cpu_has_apic 2009-05-18 08:43:25 +02:00
bigsmp_32.c cpumask: use new cpumask functions throughout x86 2009-03-13 14:49:54 +10:30
es7000_32.c x86: Fix false positive section mismatch in es7000_32.c 2009-07-13 11:03:26 +02:00
io_apic.c x86, UV: Complete IRQ interrupt migration in arch_enable_uv_irq() 2009-08-04 16:32:52 +02:00
ipi.c x86, apic: move APIC drivers to arch/x86/kernel/apic/* 2009-02-17 18:17:36 +01:00
Makefile x86, apic: separate 32-bit setup functionality out of apic_32.c 2009-02-17 23:12:48 +01:00
nmi.c Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
numaq_32.c x86, apic: Fix false positive section mismatch in numaq_32.c 2009-07-13 11:03:27 +02:00
probe_32.c x86: Remove duplicated #include's 2009-06-17 19:02:35 +02:00
probe_64.c x86: x2apic, IR: Clean up X86_X2APIC and INTR_REMAP config checks 2009-04-21 09:08:25 +02:00
summit_32.c x86: Remove duplicated #include's 2009-06-17 19:02:35 +02:00
x2apic_cluster.c x86: Fix MSI-X initialization by using online_mask for x2apic target_cpus 2009-08-08 17:04:58 +02:00
x2apic_phys.c x86: Fix MSI-X initialization by using online_mask for x2apic target_cpus 2009-08-08 17:04:58 +02:00
x2apic_uv_x.c x86, UV: Fix UV apic mode 2009-08-04 16:19:14 +02:00