Commit 302a98f8 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Ingo Molnar

x86/apic: Remove the duplicated tracing version of local_timer_interrupt()

The two NOP5s are noise in the rest of the work which is done by the timer
interrupt and modern CPUs are pretty good in optimizing NOPs anyway.

Get rid of the interrupt handler duplication and move the tracepoints into
the regular handler.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20170828064956.751247330@linutronix.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 11a7ffb0
...@@ -48,7 +48,6 @@ extern asmlinkage void call_function_single_interrupt(void); ...@@ -48,7 +48,6 @@ extern asmlinkage void call_function_single_interrupt(void);
#ifdef CONFIG_TRACING #ifdef CONFIG_TRACING
/* Interrupt handlers registered during init_IRQ */ /* Interrupt handlers registered during init_IRQ */
extern void trace_apic_timer_interrupt(void);
extern void trace_x86_platform_ipi(void); extern void trace_x86_platform_ipi(void);
extern void trace_error_interrupt(void); extern void trace_error_interrupt(void);
extern void trace_irq_work_interrupt(void); extern void trace_irq_work_interrupt(void);
...@@ -59,6 +58,7 @@ extern void trace_threshold_interrupt(void); ...@@ -59,6 +58,7 @@ extern void trace_threshold_interrupt(void);
extern void trace_deferred_error_interrupt(void); extern void trace_deferred_error_interrupt(void);
extern void trace_call_function_interrupt(void); extern void trace_call_function_interrupt(void);
extern void trace_call_function_single_interrupt(void); extern void trace_call_function_single_interrupt(void);
#define trace_apic_timer_interrupt apic_timer_interrupt
#define trace_irq_move_cleanup_interrupt irq_move_cleanup_interrupt #define trace_irq_move_cleanup_interrupt irq_move_cleanup_interrupt
#define trace_reboot_interrupt reboot_interrupt #define trace_reboot_interrupt reboot_interrupt
#define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi #define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi
......
...@@ -1029,25 +1029,6 @@ __visible void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs) ...@@ -1029,25 +1029,6 @@ __visible void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
{ {
struct pt_regs *old_regs = set_irq_regs(regs); struct pt_regs *old_regs = set_irq_regs(regs);
/*
* NOTE! We'd better ACK the irq immediately,
* because timer handling can be slow.
*
* update_process_times() expects us to have done irq_enter().
* Besides, if we don't timer interrupts ignore the global
* interrupt lock, which is the WrongThing (tm) to do.
*/
entering_ack_irq();
local_apic_timer_interrupt();
exiting_irq();
set_irq_regs(old_regs);
}
__visible void __irq_entry smp_trace_apic_timer_interrupt(struct pt_regs *regs)
{
struct pt_regs *old_regs = set_irq_regs(regs);
/* /*
* NOTE! We'd better ACK the irq immediately, * NOTE! We'd better ACK the irq immediately,
* because timer handling can be slow. * because timer handling can be slow.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment