aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/io_apic_32.c
diff options
context:
space:
mode:
authorAlan Mayer <ajm@sgi.com>2008-04-15 16:36:56 -0400
committerIngo Molnar <mingo@elte.hu>2008-05-12 15:28:06 -0400
commit305b92a2323eeaa4b481f409d54f778dd7e21a46 (patch)
tree0f32832b033de27b2ae5909bb06d4eabdd1a9b0b /arch/x86/kernel/io_apic_32.c
parent1a331957efd214fc3a84f70956dfaec65e70c031 (diff)
x86: change FIRST_SYSTEM_VECTOR to a variable
The SGI UV system needs several more system vectors than a vanilla x86_64 system. Rather than burden the other archs with extra system vectors that they don't use, change FIRST_SYSTEM_VECTOR to a variable, so that it can be dynamic. Signed-off-by: Alan Mayer <ajm@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/io_apic_32.c')
-rw-r--r--arch/x86/kernel/io_apic_32.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c
index a40d54fc1fdd..0ae4a9d00ce8 100644
--- a/arch/x86/kernel/io_apic_32.c
+++ b/arch/x86/kernel/io_apic_32.c
@@ -83,6 +83,10 @@ int mp_irq_entries;
83 83
84static int disable_timer_pin_1 __initdata; 84static int disable_timer_pin_1 __initdata;
85 85
86int first_system_vector = 0xfe;
87
88char system_vectors[NR_VECTORS] = { [0 ... NR_VECTORS-1] = SYS_VECTOR_FREE};
89
86/* 90/*
87 * Rough estimation of how many shared IRQs there are, can 91 * Rough estimation of how many shared IRQs there are, can
88 * be changed anytime. 92 * be changed anytime.
@@ -1176,7 +1180,7 @@ static int __assign_irq_vector(int irq)
1176 offset = current_offset; 1180 offset = current_offset;
1177next: 1181next:
1178 vector += 8; 1182 vector += 8;
1179 if (vector >= FIRST_SYSTEM_VECTOR) { 1183 if (vector >= first_system_vector) {
1180 offset = (offset + 1) % 8; 1184 offset = (offset + 1) % 8;
1181 vector = FIRST_DEVICE_VECTOR + offset; 1185 vector = FIRST_DEVICE_VECTOR + offset;
1182 } 1186 }
@@ -2269,7 +2273,7 @@ void __init setup_IO_APIC(void)
2269 int i; 2273 int i;
2270 2274
2271 /* Reserve all the system vectors. */ 2275 /* Reserve all the system vectors. */
2272 for (i = FIRST_SYSTEM_VECTOR; i < NR_VECTORS; i++) 2276 for (i = first_system_vector; i < NR_VECTORS; i++)
2273 set_bit(i, used_vectors); 2277 set_bit(i, used_vectors);
2274 2278
2275 enable_IO_APIC(); 2279 enable_IO_APIC();