aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/irqinit.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-15 22:49:10 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-15 22:49:10 -0400
commit181f977d134a9f8e3f8839f42af655b045fc059e (patch)
tree5d9bb67c62ef1476c18ed350106a84c02f0dd8e4 /arch/x86/kernel/irqinit.c
parentd5d42399bd7b66bd6b55363b311810504110c967 (diff)
parent25542c646afbf14c43fa7d2b443055cadb73b07a (diff)
Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (93 commits) x86, tlb, UV: Do small micro-optimization for native_flush_tlb_others() x86-64, NUMA: Don't call numa_set_distanc() for all possible node combinations during emulation x86-64, NUMA: Don't assume phys node 0 is always online in numa_emulation() x86-64, NUMA: Clean up initmem_init() x86-64, NUMA: Fix numa_emulation code with node0 without RAM x86-64, NUMA: Revert NUMA affine page table allocation x86: Work around old gas bug x86-64, NUMA: Better explain numa_distance handling x86-64, NUMA: Fix distance table handling mm: Move early_node_map[] reverse scan helpers under HAVE_MEMBLOCK x86-64, NUMA: Fix size of numa_distance array x86: Rename e820_table_* to pgt_buf_* bootmem: Move __alloc_memory_core_early() to nobootmem.c bootmem: Move contig_page_data definition to bootmem.c/nobootmem.c bootmem: Separate out CONFIG_NO_BOOTMEM code into nobootmem.c x86-64, NUMA: Seperate out numa_alloc_distance() from numa_set_distance() x86-64, NUMA: Add proper function comments to global functions x86-64, NUMA: Move NUMA emulation into numa_emulation.c x86-64, NUMA: Prepare numa_emulation() for moving NUMA emulation into a separate file x86-64, NUMA: Do not scan two times for setup_node_bootmem() ... Fix up conflicts in arch/x86/kernel/smpboot.c
Diffstat (limited to 'arch/x86/kernel/irqinit.c')
-rw-r--r--arch/x86/kernel/irqinit.c79
1 files changed, 71 insertions, 8 deletions
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c
index 1cc302d16fb4..d30854b18d25 100644
--- a/arch/x86/kernel/irqinit.c
+++ b/arch/x86/kernel/irqinit.c
@@ -166,14 +166,77 @@ static void __init smp_intr_init(void)
166 alloc_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt); 166 alloc_intr_gate(RESCHEDULE_VECTOR, reschedule_interrupt);
167 167
168 /* IPIs for invalidation */ 168 /* IPIs for invalidation */
169 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+0, invalidate_interrupt0); 169#define ALLOC_INVTLB_VEC(NR) \
170 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+1, invalidate_interrupt1); 170 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+NR, \
171 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+2, invalidate_interrupt2); 171 invalidate_interrupt##NR)
172 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+3, invalidate_interrupt3); 172
173 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+4, invalidate_interrupt4); 173 switch (NUM_INVALIDATE_TLB_VECTORS) {
174 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+5, invalidate_interrupt5); 174 default:
175 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+6, invalidate_interrupt6); 175 ALLOC_INVTLB_VEC(31);
176 alloc_intr_gate(INVALIDATE_TLB_VECTOR_START+7, invalidate_interrupt7); 176 case 31:
177 ALLOC_INVTLB_VEC(30);
178 case 30:
179 ALLOC_INVTLB_VEC(29);
180 case 29:
181 ALLOC_INVTLB_VEC(28);
182 case 28:
183 ALLOC_INVTLB_VEC(27);
184 case 27:
185 ALLOC_INVTLB_VEC(26);
186 case 26:
187 ALLOC_INVTLB_VEC(25);
188 case 25:
189 ALLOC_INVTLB_VEC(24);
190 case 24:
191 ALLOC_INVTLB_VEC(23);
192 case 23:
193 ALLOC_INVTLB_VEC(22);
194 case 22:
195 ALLOC_INVTLB_VEC(21);
196 case 21:
197 ALLOC_INVTLB_VEC(20);
198 case 20:
199 ALLOC_INVTLB_VEC(19);
200 case 19:
201 ALLOC_INVTLB_VEC(18);
202 case 18:
203 ALLOC_INVTLB_VEC(17);
204 case 17:
205 ALLOC_INVTLB_VEC(16);
206 case 16:
207 ALLOC_INVTLB_VEC(15);
208 case 15:
209 ALLOC_INVTLB_VEC(14);
210 case 14:
211 ALLOC_INVTLB_VEC(13);
212 case 13:
213 ALLOC_INVTLB_VEC(12);
214 case 12:
215 ALLOC_INVTLB_VEC(11);
216 case 11:
217 ALLOC_INVTLB_VEC(10);
218 case 10:
219 ALLOC_INVTLB_VEC(9);
220 case 9:
221 ALLOC_INVTLB_VEC(8);
222 case 8:
223 ALLOC_INVTLB_VEC(7);
224 case 7:
225 ALLOC_INVTLB_VEC(6);
226 case 6:
227 ALLOC_INVTLB_VEC(5);
228 case 5:
229 ALLOC_INVTLB_VEC(4);
230 case 4:
231 ALLOC_INVTLB_VEC(3);
232 case 3:
233 ALLOC_INVTLB_VEC(2);
234 case 2:
235 ALLOC_INVTLB_VEC(1);
236 case 1:
237 ALLOC_INVTLB_VEC(0);
238 break;
239 }
177 240
178 /* IPI for generic function call */ 241 /* IPI for generic function call */
179 alloc_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt); 242 alloc_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);