Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0 */ 2 : #undef TRACE_SYSTEM 3 : #define TRACE_SYSTEM tlb 4 : 5 : #if !defined(_TRACE_TLB_H) || defined(TRACE_HEADER_MULTI_READ) 6 : #define _TRACE_TLB_H 7 : 8 : #include <linux/mm_types.h> 9 : #include <linux/tracepoint.h> 10 : 11 : #define TLB_FLUSH_REASON \ 12 : EM( TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" ) \ 13 : EM( TLB_REMOTE_SHOOTDOWN, "remote shootdown" ) \ 14 : EM( TLB_LOCAL_SHOOTDOWN, "local shootdown" ) \ 15 : EM( TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" ) \ 16 : EMe( TLB_REMOTE_SEND_IPI, "remote ipi send" ) 17 : 18 : /* 19 : * First define the enums in TLB_FLUSH_REASON to be exported to userspace 20 : * via TRACE_DEFINE_ENUM(). 21 : */ 22 : #undef EM 23 : #undef EMe 24 : #define EM(a,b) TRACE_DEFINE_ENUM(a); 25 : #define EMe(a,b) TRACE_DEFINE_ENUM(a); 26 : 27 : TLB_FLUSH_REASON 28 : 29 : /* 30 : * Now redefine the EM() and EMe() macros to map the enums to the strings 31 : * that will be printed in the output. 32 : */ 33 : #undef EM 34 : #undef EMe 35 : #define EM(a,b) { a, b }, 36 : #define EMe(a,b) { a, b } 37 : 38 185144 : TRACE_EVENT(tlb_flush, 39 : 40 : TP_PROTO(int reason, unsigned long pages), 41 : TP_ARGS(reason, pages), 42 : 43 : TP_STRUCT__entry( 44 : __field( int, reason) 45 : __field(unsigned long, pages) 46 : ), 47 : 48 : TP_fast_assign( 49 : __entry->reason = reason; 50 : __entry->pages = pages; 51 : ), 52 : 53 : TP_printk("pages:%ld reason:%s (%d)", 54 : __entry->pages, 55 : __print_symbolic(__entry->reason, TLB_FLUSH_REASON), 56 : __entry->reason) 57 : ); 58 : 59 : #endif /* _TRACE_TLB_H */ 60 : 61 : /* This part must be outside protection */ 62 : #include <trace/define_trace.h>