1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #undef TRACE_SYSTEM |
3 | #define TRACE_SYSTEM x86_fpu |
4 | |
5 | #if !defined(_TRACE_FPU_H) || defined(TRACE_HEADER_MULTI_READ) |
6 | #define _TRACE_FPU_H |
7 | |
8 | #include <linux/tracepoint.h> |
9 | |
10 | DECLARE_EVENT_CLASS(x86_fpu, |
11 | TP_PROTO(struct fpu *fpu), |
12 | TP_ARGS(fpu), |
13 | |
14 | TP_STRUCT__entry( |
15 | __field(struct fpu *, fpu) |
16 | __field(bool, load_fpu) |
17 | __field(u64, xfeatures) |
18 | __field(u64, xcomp_bv) |
19 | ), |
20 | |
21 | TP_fast_assign( |
22 | __entry->fpu = fpu; |
23 | __entry->load_fpu = test_thread_flag(TIF_NEED_FPU_LOAD); |
24 | if (boot_cpu_has(X86_FEATURE_OSXSAVE)) { |
25 | __entry->xfeatures = fpu->fpstate->regs.xsave.header.xfeatures; |
26 | __entry->xcomp_bv = fpu->fpstate->regs.xsave.header.xcomp_bv; |
27 | } |
28 | ), |
29 | TP_printk("x86/fpu: %p load: %d xfeatures: %llx xcomp_bv: %llx" , |
30 | __entry->fpu, |
31 | __entry->load_fpu, |
32 | __entry->xfeatures, |
33 | __entry->xcomp_bv |
34 | ) |
35 | ); |
36 | |
37 | DEFINE_EVENT(x86_fpu, x86_fpu_before_save, |
38 | TP_PROTO(struct fpu *fpu), |
39 | TP_ARGS(fpu) |
40 | ); |
41 | |
42 | DEFINE_EVENT(x86_fpu, x86_fpu_after_save, |
43 | TP_PROTO(struct fpu *fpu), |
44 | TP_ARGS(fpu) |
45 | ); |
46 | |
47 | DEFINE_EVENT(x86_fpu, x86_fpu_before_restore, |
48 | TP_PROTO(struct fpu *fpu), |
49 | TP_ARGS(fpu) |
50 | ); |
51 | |
52 | DEFINE_EVENT(x86_fpu, x86_fpu_after_restore, |
53 | TP_PROTO(struct fpu *fpu), |
54 | TP_ARGS(fpu) |
55 | ); |
56 | |
57 | DEFINE_EVENT(x86_fpu, x86_fpu_regs_activated, |
58 | TP_PROTO(struct fpu *fpu), |
59 | TP_ARGS(fpu) |
60 | ); |
61 | |
62 | DEFINE_EVENT(x86_fpu, x86_fpu_regs_deactivated, |
63 | TP_PROTO(struct fpu *fpu), |
64 | TP_ARGS(fpu) |
65 | ); |
66 | |
67 | DEFINE_EVENT(x86_fpu, x86_fpu_init_state, |
68 | TP_PROTO(struct fpu *fpu), |
69 | TP_ARGS(fpu) |
70 | ); |
71 | |
72 | DEFINE_EVENT(x86_fpu, x86_fpu_dropped, |
73 | TP_PROTO(struct fpu *fpu), |
74 | TP_ARGS(fpu) |
75 | ); |
76 | |
77 | DEFINE_EVENT(x86_fpu, x86_fpu_copy_src, |
78 | TP_PROTO(struct fpu *fpu), |
79 | TP_ARGS(fpu) |
80 | ); |
81 | |
82 | DEFINE_EVENT(x86_fpu, x86_fpu_copy_dst, |
83 | TP_PROTO(struct fpu *fpu), |
84 | TP_ARGS(fpu) |
85 | ); |
86 | |
87 | DEFINE_EVENT(x86_fpu, x86_fpu_xstate_check_failed, |
88 | TP_PROTO(struct fpu *fpu), |
89 | TP_ARGS(fpu) |
90 | ); |
91 | |
92 | #undef TRACE_INCLUDE_PATH |
93 | #define TRACE_INCLUDE_PATH asm/trace/ |
94 | #undef TRACE_INCLUDE_FILE |
95 | #define TRACE_INCLUDE_FILE fpu |
96 | #endif /* _TRACE_FPU_H */ |
97 | |
98 | /* This part must be outside protection */ |
99 | #include <trace/define_trace.h> |
100 | |