diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-15 22:49:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-15 22:49:10 -0400 |
commit | 181f977d134a9f8e3f8839f42af655b045fc059e (patch) | |
tree | 5d9bb67c62ef1476c18ed350106a84c02f0dd8e4 /arch/x86/kernel/irqinit.c | |
parent | d5d42399bd7b66bd6b55363b311810504110c967 (diff) | |
parent | 25542c646afbf14c43fa7d2b443055cadb73b07a (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.c | 79 |
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); |