@@ -87,81 +87,14 @@ void __init init_IRQ(void)
87
87
x86_init .irqs .intr_init ();
88
88
}
89
89
90
- static void __init smp_intr_init (void )
91
- {
92
- #ifdef CONFIG_SMP
93
- /*
94
- * The reschedule interrupt is a CPU-to-CPU reschedule-helper
95
- * IPI, driven by wakeup.
96
- */
97
- alloc_intr_gate (RESCHEDULE_VECTOR , reschedule_interrupt );
98
-
99
- /* IPI for generic function call */
100
- alloc_intr_gate (CALL_FUNCTION_VECTOR , call_function_interrupt );
101
-
102
- /* IPI for generic single function call */
103
- alloc_intr_gate (CALL_FUNCTION_SINGLE_VECTOR ,
104
- call_function_single_interrupt );
105
-
106
- /* Low priority IPI to cleanup after moving an irq */
107
- set_intr_gate (IRQ_MOVE_CLEANUP_VECTOR , irq_move_cleanup_interrupt );
108
- set_bit (IRQ_MOVE_CLEANUP_VECTOR , used_vectors );
109
-
110
- /* IPI used for rebooting/stopping */
111
- alloc_intr_gate (REBOOT_VECTOR , reboot_interrupt );
112
- #endif /* CONFIG_SMP */
113
- }
114
-
115
- static void __init apic_intr_init (void )
116
- {
117
- smp_intr_init ();
118
-
119
- #ifdef CONFIG_X86_THERMAL_VECTOR
120
- alloc_intr_gate (THERMAL_APIC_VECTOR , thermal_interrupt );
121
- #endif
122
- #ifdef CONFIG_X86_MCE_THRESHOLD
123
- alloc_intr_gate (THRESHOLD_APIC_VECTOR , threshold_interrupt );
124
- #endif
125
-
126
- #ifdef CONFIG_X86_MCE_AMD
127
- alloc_intr_gate (DEFERRED_ERROR_VECTOR , deferred_error_interrupt );
128
- #endif
129
-
130
- #ifdef CONFIG_X86_LOCAL_APIC
131
- /* self generated IPI for local APIC timer */
132
- alloc_intr_gate (LOCAL_TIMER_VECTOR , apic_timer_interrupt );
133
-
134
- /* IPI for X86 platform specific use */
135
- alloc_intr_gate (X86_PLATFORM_IPI_VECTOR , x86_platform_ipi );
136
- #ifdef CONFIG_HAVE_KVM
137
- /* IPI for KVM to deliver posted interrupt */
138
- alloc_intr_gate (POSTED_INTR_VECTOR , kvm_posted_intr_ipi );
139
- /* IPI for KVM to deliver interrupt to wake up tasks */
140
- alloc_intr_gate (POSTED_INTR_WAKEUP_VECTOR , kvm_posted_intr_wakeup_ipi );
141
- /* IPI for KVM to deliver nested posted interrupt */
142
- alloc_intr_gate (POSTED_INTR_NESTED_VECTOR , kvm_posted_intr_nested_ipi );
143
- #endif
144
-
145
- /* IPI vectors for APIC spurious and error interrupts */
146
- alloc_intr_gate (SPURIOUS_APIC_VECTOR , spurious_interrupt );
147
- alloc_intr_gate (ERROR_APIC_VECTOR , error_interrupt );
148
-
149
- /* IRQ work interrupts: */
150
- # ifdef CONFIG_IRQ_WORK
151
- alloc_intr_gate (IRQ_WORK_VECTOR , irq_work_interrupt );
152
- # endif
153
-
154
- #endif
155
- }
156
-
157
90
void __init native_init_IRQ (void )
158
91
{
159
92
int i ;
160
93
161
94
/* Execute any quirks before the call gates are initialised: */
162
95
x86_init .irqs .pre_vector_init ();
163
96
164
- apic_intr_init ();
97
+ idt_setup_apic_and_irq_gates ();
165
98
166
99
/*
167
100
* Cover the whole vector space, no vector can escape
0 commit comments