18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM 38c2ecf20Sopenharmony_ci#define TRACE_SYSTEM x86_fpu 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#if !defined(_TRACE_FPU_H) || defined(TRACE_HEADER_MULTI_READ) 68c2ecf20Sopenharmony_ci#define _TRACE_FPU_H 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/tracepoint.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(x86_fpu, 118c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 128c2ecf20Sopenharmony_ci TP_ARGS(fpu), 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci TP_STRUCT__entry( 158c2ecf20Sopenharmony_ci __field(struct fpu *, fpu) 168c2ecf20Sopenharmony_ci __field(bool, load_fpu) 178c2ecf20Sopenharmony_ci __field(u64, xfeatures) 188c2ecf20Sopenharmony_ci __field(u64, xcomp_bv) 198c2ecf20Sopenharmony_ci ), 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci TP_fast_assign( 228c2ecf20Sopenharmony_ci __entry->fpu = fpu; 238c2ecf20Sopenharmony_ci __entry->load_fpu = test_thread_flag(TIF_NEED_FPU_LOAD); 248c2ecf20Sopenharmony_ci if (boot_cpu_has(X86_FEATURE_OSXSAVE)) { 258c2ecf20Sopenharmony_ci __entry->xfeatures = fpu->state.xsave.header.xfeatures; 268c2ecf20Sopenharmony_ci __entry->xcomp_bv = fpu->state.xsave.header.xcomp_bv; 278c2ecf20Sopenharmony_ci } 288c2ecf20Sopenharmony_ci ), 298c2ecf20Sopenharmony_ci TP_printk("x86/fpu: %p load: %d xfeatures: %llx xcomp_bv: %llx", 308c2ecf20Sopenharmony_ci __entry->fpu, 318c2ecf20Sopenharmony_ci __entry->load_fpu, 328c2ecf20Sopenharmony_ci __entry->xfeatures, 338c2ecf20Sopenharmony_ci __entry->xcomp_bv 348c2ecf20Sopenharmony_ci ) 358c2ecf20Sopenharmony_ci); 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_before_save, 388c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 398c2ecf20Sopenharmony_ci TP_ARGS(fpu) 408c2ecf20Sopenharmony_ci); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_after_save, 438c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 448c2ecf20Sopenharmony_ci TP_ARGS(fpu) 458c2ecf20Sopenharmony_ci); 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_before_restore, 488c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 498c2ecf20Sopenharmony_ci TP_ARGS(fpu) 508c2ecf20Sopenharmony_ci); 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_after_restore, 538c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 548c2ecf20Sopenharmony_ci TP_ARGS(fpu) 558c2ecf20Sopenharmony_ci); 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_regs_activated, 588c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 598c2ecf20Sopenharmony_ci TP_ARGS(fpu) 608c2ecf20Sopenharmony_ci); 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_regs_deactivated, 638c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 648c2ecf20Sopenharmony_ci TP_ARGS(fpu) 658c2ecf20Sopenharmony_ci); 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_init_state, 688c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 698c2ecf20Sopenharmony_ci TP_ARGS(fpu) 708c2ecf20Sopenharmony_ci); 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_dropped, 738c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 748c2ecf20Sopenharmony_ci TP_ARGS(fpu) 758c2ecf20Sopenharmony_ci); 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_copy_src, 788c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 798c2ecf20Sopenharmony_ci TP_ARGS(fpu) 808c2ecf20Sopenharmony_ci); 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_copy_dst, 838c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 848c2ecf20Sopenharmony_ci TP_ARGS(fpu) 858c2ecf20Sopenharmony_ci); 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ciDEFINE_EVENT(x86_fpu, x86_fpu_xstate_check_failed, 888c2ecf20Sopenharmony_ci TP_PROTO(struct fpu *fpu), 898c2ecf20Sopenharmony_ci TP_ARGS(fpu) 908c2ecf20Sopenharmony_ci); 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH 938c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH asm/trace/ 948c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE 958c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE fpu 968c2ecf20Sopenharmony_ci#endif /* _TRACE_FPU_H */ 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci/* This part must be outside protection */ 998c2ecf20Sopenharmony_ci#include <trace/define_trace.h> 100