1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_FTRACE_IRQ_H
3 #define _LINUX_FTRACE_IRQ_H
4 
5 
6 #ifdef CONFIG_FTRACE_NMI_ENTER
7 extern void arch_ftrace_nmi_enter(void);
8 extern void arch_ftrace_nmi_exit(void);
9 #else
arch_ftrace_nmi_enter(void)10 static inline void arch_ftrace_nmi_enter(void) { }
arch_ftrace_nmi_exit(void)11 static inline void arch_ftrace_nmi_exit(void) { }
12 #endif
13 
14 #ifdef CONFIG_HWLAT_TRACER
15 extern bool trace_hwlat_callback_enabled;
16 extern void trace_hwlat_callback(bool enter);
17 #endif
18 
ftrace_nmi_enter(void)19 static inline void ftrace_nmi_enter(void)
20 {
21 #ifdef CONFIG_HWLAT_TRACER
22 	if (trace_hwlat_callback_enabled)
23 		trace_hwlat_callback(true);
24 #endif
25 	arch_ftrace_nmi_enter();
26 }
27 
ftrace_nmi_exit(void)28 static inline void ftrace_nmi_exit(void)
29 {
30 	arch_ftrace_nmi_exit();
31 #ifdef CONFIG_HWLAT_TRACER
32 	if (trace_hwlat_callback_enabled)
33 		trace_hwlat_callback(false);
34 #endif
35 }
36 
37 #endif /* _LINUX_FTRACE_IRQ_H */
38