Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1721108
| From | Thomas Gleixner <tglx@linutronix.de> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [patch V3 13/44] x86/mce: Remove duplicated tracing interrupt code |
| Date | 2017-08-28 09:10 +0200 |
| Message-ID | <ujmll-2xk-43@gated-at.bofh.it> (permalink) |
| References | <ujmbD-2dY-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Machine checks are not really high frequency events. The extra two NOP5 for
the disabled tracepoints are noise vs. the heavy lifting which needs to be
done in the MCE handler.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/include/asm/hw_irq.h | 6 +++---
arch/x86/kernel/cpu/mcheck/mce_amd.c | 16 ++--------------
arch/x86/kernel/cpu/mcheck/therm_throt.c | 20 +++-----------------
arch/x86/kernel/cpu/mcheck/threshold.c | 16 ++--------------
4 files changed, 10 insertions(+), 48 deletions(-)
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -48,12 +48,12 @@ extern asmlinkage void call_function_sin
#ifdef CONFIG_TRACING
/* Interrupt handlers registered during init_IRQ */
-extern void trace_thermal_interrupt(void);
extern void trace_reschedule_interrupt(void);
-extern void trace_threshold_interrupt(void);
-extern void trace_deferred_error_interrupt(void);
extern void trace_call_function_interrupt(void);
extern void trace_call_function_single_interrupt(void);
+#define trace_thermal_interrupt thermal_interrupt
+#define trace_threshold_interrupt threshold_interrupt
+#define trace_deferred_error_interrupt deferred_error_interrupt
#define trace_irq_work_interrupt irq_work_interrupt
#define trace_error_interrupt error_interrupt
#define trace_spurious_interrupt spurious_interrupt
--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -776,24 +776,12 @@ static void __log_error(unsigned int ban
mce_log(&m);
}
-static inline void __smp_deferred_error_interrupt(void)
-{
- inc_irq_stat(irq_deferred_error_count);
- deferred_error_int_vector();
-}
-
asmlinkage __visible void __irq_entry smp_deferred_error_interrupt(void)
{
entering_irq();
- __smp_deferred_error_interrupt();
- exiting_ack_irq();
-}
-
-asmlinkage __visible void __irq_entry smp_trace_deferred_error_interrupt(void)
-{
- entering_irq();
trace_deferred_error_apic_entry(DEFERRED_ERROR_VECTOR);
- __smp_deferred_error_interrupt();
+ inc_irq_stat(irq_deferred_error_count);
+ deferred_error_int_vector();
trace_deferred_error_apic_exit(DEFERRED_ERROR_VECTOR);
exiting_ack_irq();
}
--- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
+++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
@@ -390,26 +390,12 @@ static void unexpected_thermal_interrupt
static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt;
-static inline void __smp_thermal_interrupt(void)
-{
- inc_irq_stat(irq_thermal_count);
- smp_thermal_vector();
-}
-
-asmlinkage __visible void __irq_entry
-smp_thermal_interrupt(struct pt_regs *regs)
-{
- entering_irq();
- __smp_thermal_interrupt();
- exiting_ack_irq();
-}
-
-asmlinkage __visible void __irq_entry
-smp_trace_thermal_interrupt(struct pt_regs *regs)
+asmlinkage __visible void __irq_entry smp_thermal_interrupt(struct pt_regs *r)
{
entering_irq();
trace_thermal_apic_entry(THERMAL_APIC_VECTOR);
- __smp_thermal_interrupt();
+ inc_irq_stat(irq_thermal_count);
+ smp_thermal_vector();
trace_thermal_apic_exit(THERMAL_APIC_VECTOR);
exiting_ack_irq();
}
--- a/arch/x86/kernel/cpu/mcheck/threshold.c
+++ b/arch/x86/kernel/cpu/mcheck/threshold.c
@@ -17,24 +17,12 @@ static void default_threshold_interrupt(
void (*mce_threshold_vector)(void) = default_threshold_interrupt;
-static inline void __smp_threshold_interrupt(void)
-{
- inc_irq_stat(irq_threshold_count);
- mce_threshold_vector();
-}
-
asmlinkage __visible void __irq_entry smp_threshold_interrupt(void)
{
entering_irq();
- __smp_threshold_interrupt();
- exiting_ack_irq();
-}
-
-asmlinkage __visible void __irq_entry smp_trace_threshold_interrupt(void)
-{
- entering_irq();
trace_threshold_apic_entry(THRESHOLD_APIC_VECTOR);
- __smp_threshold_interrupt();
+ inc_irq_stat(irq_threshold_count);
+ mce_threshold_vector();
trace_threshold_apic_exit(THRESHOLD_APIC_VECTOR);
exiting_ack_irq();
}
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[patch V3 00/44] x86: Cleanup IDT code Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[patch V3 13/44] x86/mce: Remove duplicated tracing interrupt code Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/mce: Remove duplicated tracing interrupt code tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 05/44] x86/boot: Move EISA setup to a proper place Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/boot: Move EISA setup to a separate file tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 15/44] x86/smp: Use static key for reschedule interrupt tracing Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/smp: Use static key for reschedule interrupt tracing tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 12/44] x86/irqwork: Get rid of duplicated tracing interrupt code Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/irqwork: Get rid of duplicated tracing interrupt code tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 10/44] x86/irq: Get rid of duplicated trace_x86_platform_ipi() code Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/irq: Get rid of duplicated trace_x86_platform_ipi() code tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 06/44] x86/tracing: Introduce a static key for exception tracing Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/tracing: Introduce a static key for exception tracing tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 08/44] x86/apic: Remove the duplicated tracing version of local_timer_interrupt Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/apic: Remove the duplicated tracing version of local_timer_interrupt() tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 14/44] x86/smp: Remove pointless duplicated interrupt code Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/smp: Remove pointless duplicated interrupt code tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 04/44] x86/irq: Remove duplicated used_vectors definition Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/irq: Remove duplicated used_vectors definition tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 03/44] x86/irq: Get rid of the first_system_vector bogisity Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/irq: Get rid of the 'first_system_vector' indirection bogosity tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
[patch V3 28/44] x86/idt: Create file for IDT related code Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:10 +0200
[tip:x86/apic] x86/idt: Create file for IDT related code tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:30 +0200
csiph-web