diff options
Diffstat (limited to 'arch/x86/kernel/io_apic_32.c')
-rw-r--r-- | arch/x86/kernel/io_apic_32.c | 8 |
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 | ||
84 | static int disable_timer_pin_1 __initdata; | 84 | static int disable_timer_pin_1 __initdata; |
85 | 85 | ||
86 | int first_system_vector = 0xfe; | ||
87 | |||
88 | char 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; |
1177 | next: | 1181 | next: |
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(); |