hc
2024-11-01 2f529f9b558ca1c1bd74be7437a84e4711743404
kernel/arch/x86/kernel/irq.c
....@@ -4,6 +4,7 @@
44 */
55 #include <linux/cpu.h>
66 #include <linux/interrupt.h>
7
+#include <linux/irq_pipeline.h>
78 #include <linux/kernel_stat.h>
89 #include <linux/of.h>
910 #include <linux/seq_file.h>
....@@ -48,7 +49,7 @@
4849 * completely.
4950 * But only ack when the APIC is enabled -AK
5051 */
51
- ack_APIC_irq();
52
+ __ack_APIC_irq();
5253 }
5354
5455 #define irq_stats(x) (&per_cpu(irq_stat, x))
....@@ -235,8 +236,11 @@
235236 /*
236237 * common_interrupt() handles all normal device IRQ's (the special SMP
237238 * cross-CPU interrupts have their own entry points).
239
+ *
240
+ * Compiled out if CONFIG_IRQ_PIPELINE is enabled, replaced by
241
+ * arch_handle_irq().
238242 */
239
-DEFINE_IDTENTRY_IRQ(common_interrupt)
243
+DEFINE_IDTENTRY_IRQ_PIPELINED(common_interrupt)
240244 {
241245 struct pt_regs *old_regs = set_irq_regs(regs);
242246 struct irq_desc *desc;
....@@ -268,7 +272,8 @@
268272 /*
269273 * Handler for X86_PLATFORM_IPI_VECTOR.
270274 */
271
-DEFINE_IDTENTRY_SYSVEC(sysvec_x86_platform_ipi)
275
+DEFINE_IDTENTRY_SYSVEC_PIPELINED(X86_PLATFORM_IPI_VECTOR,
276
+ sysvec_x86_platform_ipi)
272277 {
273278 struct pt_regs *old_regs = set_irq_regs(regs);
274279
....@@ -300,7 +305,8 @@
300305 /*
301306 * Handler for POSTED_INTERRUPT_VECTOR.
302307 */
303
-DEFINE_IDTENTRY_SYSVEC_SIMPLE(sysvec_kvm_posted_intr_ipi)
308
+DEFINE_IDTENTRY_SYSVEC_SIMPLE_PIPELINED(POSTED_INTR_VECTOR,
309
+ sysvec_kvm_posted_intr_ipi)
304310 {
305311 ack_APIC_irq();
306312 inc_irq_stat(kvm_posted_intr_ipis);
....@@ -309,7 +315,8 @@
309315 /*
310316 * Handler for POSTED_INTERRUPT_WAKEUP_VECTOR.
311317 */
312
-DEFINE_IDTENTRY_SYSVEC(sysvec_kvm_posted_intr_wakeup_ipi)
318
+DEFINE_IDTENTRY_SYSVEC_PIPELINED(POSTED_INTR_WAKEUP_VECTOR,
319
+ sysvec_kvm_posted_intr_wakeup_ipi)
313320 {
314321 ack_APIC_irq();
315322 inc_irq_stat(kvm_posted_intr_wakeup_ipis);
....@@ -319,7 +326,8 @@
319326 /*
320327 * Handler for POSTED_INTERRUPT_NESTED_VECTOR.
321328 */
322
-DEFINE_IDTENTRY_SYSVEC_SIMPLE(sysvec_kvm_posted_intr_nested_ipi)
329
+DEFINE_IDTENTRY_SYSVEC_SIMPLE_PIPELINED(POSTED_INTR_NESTED_VECTOR,
330
+ sysvec_kvm_posted_intr_nested_ipi)
323331 {
324332 ack_APIC_irq();
325333 inc_irq_stat(kvm_posted_intr_nested_ipis);