| 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_regs_activated, | 
|---|
| 48 | TP_PROTO(struct fpu *fpu), | 
|---|
| 49 | TP_ARGS(fpu) | 
|---|
| 50 | ); | 
|---|
| 51 |  | 
|---|
| 52 | DEFINE_EVENT(x86_fpu, x86_fpu_regs_deactivated, | 
|---|
| 53 | TP_PROTO(struct fpu *fpu), | 
|---|
| 54 | TP_ARGS(fpu) | 
|---|
| 55 | ); | 
|---|
| 56 |  | 
|---|
| 57 | DEFINE_EVENT(x86_fpu, x86_fpu_dropped, | 
|---|
| 58 | TP_PROTO(struct fpu *fpu), | 
|---|
| 59 | TP_ARGS(fpu) | 
|---|
| 60 | ); | 
|---|
| 61 |  | 
|---|
| 62 | DEFINE_EVENT(x86_fpu, x86_fpu_copy_dst, | 
|---|
| 63 | TP_PROTO(struct fpu *fpu), | 
|---|
| 64 | TP_ARGS(fpu) | 
|---|
| 65 | ); | 
|---|
| 66 |  | 
|---|
| 67 | DEFINE_EVENT(x86_fpu, x86_fpu_xstate_check_failed, | 
|---|
| 68 | TP_PROTO(struct fpu *fpu), | 
|---|
| 69 | TP_ARGS(fpu) | 
|---|
| 70 | ); | 
|---|
| 71 |  | 
|---|
| 72 | #undef TRACE_INCLUDE_PATH | 
|---|
| 73 | #define TRACE_INCLUDE_PATH asm/trace/ | 
|---|
| 74 | #undef TRACE_INCLUDE_FILE | 
|---|
| 75 | #define TRACE_INCLUDE_FILE fpu | 
|---|
| 76 | #endif /* _TRACE_FPU_H */ | 
|---|
| 77 |  | 
|---|
| 78 | /* This part must be outside protection */ | 
|---|
| 79 | #include <trace/define_trace.h> | 
|---|
| 80 |  | 
|---|