|
@@ -29,9 +29,6 @@ EXPORT_PER_CPU_SYMBOL(irq_regs);
|
|
|
|
|
|
atomic_t irq_err_count;
|
|
|
|
|
|
-/* Function pointer for generic interrupt vector handling */
|
|
|
-void (*x86_platform_ipi_callback)(void) = NULL;
|
|
|
-
|
|
|
/*
|
|
|
* 'what should we do if we get a hw irq event on an illegal vector'.
|
|
|
* each architecture has to answer this themselves.
|
|
@@ -87,13 +84,13 @@ int arch_show_interrupts(struct seq_file *p, int prec)
|
|
|
for_each_online_cpu(j)
|
|
|
seq_printf(p, "%10u ", irq_stats(j)->icr_read_retry_count);
|
|
|
seq_puts(p, " APIC ICR read retries\n");
|
|
|
-#endif
|
|
|
if (x86_platform_ipi_callback) {
|
|
|
seq_printf(p, "%*s: ", prec, "PLT");
|
|
|
for_each_online_cpu(j)
|
|
|
seq_printf(p, "%10u ", irq_stats(j)->x86_platform_ipis);
|
|
|
seq_puts(p, " Platform interrupts\n");
|
|
|
}
|
|
|
+#endif
|
|
|
#ifdef CONFIG_SMP
|
|
|
seq_printf(p, "%*s: ", prec, "RES");
|
|
|
for_each_online_cpu(j)
|
|
@@ -183,9 +180,9 @@ u64 arch_irq_stat_cpu(unsigned int cpu)
|
|
|
sum += irq_stats(cpu)->apic_perf_irqs;
|
|
|
sum += irq_stats(cpu)->apic_irq_work_irqs;
|
|
|
sum += irq_stats(cpu)->icr_read_retry_count;
|
|
|
-#endif
|
|
|
if (x86_platform_ipi_callback)
|
|
|
sum += irq_stats(cpu)->x86_platform_ipis;
|
|
|
+#endif
|
|
|
#ifdef CONFIG_SMP
|
|
|
sum += irq_stats(cpu)->irq_resched_count;
|
|
|
sum += irq_stats(cpu)->irq_call_count;
|
|
@@ -259,6 +256,9 @@ __visible unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_X86_LOCAL_APIC
|
|
|
+/* Function pointer for generic interrupt vector handling */
|
|
|
+void (*x86_platform_ipi_callback)(void) = NULL;
|
|
|
/*
|
|
|
* Handler for X86_PLATFORM_IPI_VECTOR.
|
|
|
*/
|
|
@@ -275,6 +275,7 @@ __visible void __irq_entry smp_x86_platform_ipi(struct pt_regs *regs)
|
|
|
exiting_irq();
|
|
|
set_irq_regs(old_regs);
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
#ifdef CONFIG_HAVE_KVM
|
|
|
static void dummy_handler(void) {}
|