aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/io_apic.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2008-12-19 18:23:44 -0500
committerIngo Molnar <mingo@elte.hu>2008-12-23 16:37:28 -0500
commitb77b881f21b29aa7efa668fde69ee3dc0372ae3f (patch)
treea4039161e9bcab3e9c2fd2e2aa70fee16103857b /arch/x86/kernel/io_apic.c
parenta7883dece6ef82097e6bdf19c1d0a20351e06056 (diff)
x86: fix lguest used_vectors breakage, -v2
Impact: fix lguest, clean up 32-bit lguest used used_vectors to record vectors, but that model of allocating vectors changed and got broken, after we changed vector allocation to a per_cpu array. Try enable that for 64bit, and the array is used for all vectors that are not managed by vector_irq per_cpu array. Also kill system_vectors[], that is now a duplication of the used_vectors bitmap. [ merged in cpus4096 due to io_apic.c cpumask changes. ] [ -v2, fix build failure ] Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/io_apic.c')
-rw-r--r--arch/x86/kernel/io_apic.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c
index 908c1d00a5c..1cbf7c8d46e 100644
--- a/arch/x86/kernel/io_apic.c
+++ b/arch/x86/kernel/io_apic.c
@@ -1326,13 +1326,10 @@ next:
1326 } 1326 }
1327 if (unlikely(current_vector == vector)) 1327 if (unlikely(current_vector == vector))
1328 continue; 1328 continue;
1329#ifdef CONFIG_X86_64 1329
1330 if (vector == IA32_SYSCALL_VECTOR) 1330 if (test_bit(vector, used_vectors))
1331 goto next;
1332#else
1333 if (vector == SYSCALL_VECTOR)
1334 goto next; 1331 goto next;
1335#endif 1332
1336 for_each_cpu_and(new_cpu, tmp_mask, cpu_online_mask) 1333 for_each_cpu_and(new_cpu, tmp_mask, cpu_online_mask)
1337 if (per_cpu(vector_irq, new_cpu)[vector] != -1) 1334 if (per_cpu(vector_irq, new_cpu)[vector] != -1)
1338 goto next; 1335 goto next;