projects
/
linux-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
perf tools: Adjust make rules
[linux-block.git]
/
arch
/
x86
/
kernel
/
irq.c
diff --git
a/arch/x86/kernel/irq.c
b/arch/x86/kernel/irq.c
index 429e0c92924eede7d925c92836ac25505de86007..7943e0c21bde4daa742ed209e5121ab697f659e8 100644
(file)
--- a/
arch/x86/kernel/irq.c
+++ b/
arch/x86/kernel/irq.c
@@
-74,6
+74,10
@@
int arch_show_interrupts(struct seq_file *p, int prec)
for_each_online_cpu(j)
seq_printf(p, "%10u ", irq_stats(j)->apic_irq_work_irqs);
seq_printf(p, " IRQ work interrupts\n");
for_each_online_cpu(j)
seq_printf(p, "%10u ", irq_stats(j)->apic_irq_work_irqs);
seq_printf(p, " IRQ work interrupts\n");
+ seq_printf(p, "%*s: ", prec, "RTR");
+ for_each_online_cpu(j)
+ seq_printf(p, "%10u ", irq_stats(j)->icr_read_retry_count);
+ seq_printf(p, " APIC ICR read retries\n");
#endif
if (x86_platform_ipi_callback) {
seq_printf(p, "%*s: ", prec, "PLT");
#endif
if (x86_platform_ipi_callback) {
seq_printf(p, "%*s: ", prec, "PLT");
@@
-136,6
+140,7
@@
u64 arch_irq_stat_cpu(unsigned int cpu)
sum += irq_stats(cpu)->irq_spurious_count;
sum += irq_stats(cpu)->apic_perf_irqs;
sum += irq_stats(cpu)->apic_irq_work_irqs;
sum += irq_stats(cpu)->irq_spurious_count;
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
if (x86_platform_ipi_callback)
sum += irq_stats(cpu)->x86_platform_ipis;
@@
-181,8
+186,8
@@
unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
unsigned vector = ~regs->orig_ax;
unsigned irq;
unsigned vector = ~regs->orig_ax;
unsigned irq;
- exit_idle();
irq_enter();
irq_enter();
+ exit_idle();
irq = __this_cpu_read(vector_irq[vector]);
irq = __this_cpu_read(vector_irq[vector]);
@@
-209,10
+214,10
@@
void smp_x86_platform_ipi(struct pt_regs *regs)
ack_APIC_irq();
ack_APIC_irq();
- exit_idle();
-
irq_enter();
irq_enter();
+ exit_idle();
+
inc_irq_stat(x86_platform_ipis);
if (x86_platform_ipi_callback)
inc_irq_stat(x86_platform_ipis);
if (x86_platform_ipi_callback)