|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef _LINUX_FTRACE_IRQ_H | 
|  | #define _LINUX_FTRACE_IRQ_H | 
|  |  | 
|  |  | 
|  | #ifdef CONFIG_FTRACE_NMI_ENTER | 
|  | extern void arch_ftrace_nmi_enter(void); | 
|  | extern void arch_ftrace_nmi_exit(void); | 
|  | #else | 
|  | static inline void arch_ftrace_nmi_enter(void) { } | 
|  | static inline void arch_ftrace_nmi_exit(void) { } | 
|  | #endif | 
|  |  | 
|  | #ifdef CONFIG_HWLAT_TRACER | 
|  | extern bool trace_hwlat_callback_enabled; | 
|  | extern void trace_hwlat_callback(bool enter); | 
|  | #endif | 
|  |  | 
|  | static inline void ftrace_nmi_enter(void) | 
|  | { | 
|  | #ifdef CONFIG_HWLAT_TRACER | 
|  | if (trace_hwlat_callback_enabled) | 
|  | trace_hwlat_callback(true); | 
|  | #endif | 
|  | arch_ftrace_nmi_enter(); | 
|  | } | 
|  |  | 
|  | static inline void ftrace_nmi_exit(void) | 
|  | { | 
|  | arch_ftrace_nmi_exit(); | 
|  | #ifdef CONFIG_HWLAT_TRACER | 
|  | if (trace_hwlat_callback_enabled) | 
|  | trace_hwlat_callback(false); | 
|  | #endif | 
|  | } | 
|  |  | 
|  | #endif /* _LINUX_FTRACE_IRQ_H */ |