1*d17d8f9dSDave Hansen #undef TRACE_SYSTEM 2*d17d8f9dSDave Hansen #define TRACE_SYSTEM tlb 3*d17d8f9dSDave Hansen 4*d17d8f9dSDave Hansen #if !defined(_TRACE_TLB_H) || defined(TRACE_HEADER_MULTI_READ) 5*d17d8f9dSDave Hansen #define _TRACE_TLB_H 6*d17d8f9dSDave Hansen 7*d17d8f9dSDave Hansen #include <linux/mm_types.h> 8*d17d8f9dSDave Hansen #include <linux/tracepoint.h> 9*d17d8f9dSDave Hansen 10*d17d8f9dSDave Hansen #define TLB_FLUSH_REASON \ 11*d17d8f9dSDave Hansen { TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" }, \ 12*d17d8f9dSDave Hansen { TLB_REMOTE_SHOOTDOWN, "remote shootdown" }, \ 13*d17d8f9dSDave Hansen { TLB_LOCAL_SHOOTDOWN, "local shootdown" }, \ 14*d17d8f9dSDave Hansen { TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" } 15*d17d8f9dSDave Hansen 16*d17d8f9dSDave Hansen TRACE_EVENT(tlb_flush, 17*d17d8f9dSDave Hansen 18*d17d8f9dSDave Hansen TP_PROTO(int reason, unsigned long pages), 19*d17d8f9dSDave Hansen TP_ARGS(reason, pages), 20*d17d8f9dSDave Hansen 21*d17d8f9dSDave Hansen TP_STRUCT__entry( 22*d17d8f9dSDave Hansen __field( int, reason) 23*d17d8f9dSDave Hansen __field(unsigned long, pages) 24*d17d8f9dSDave Hansen ), 25*d17d8f9dSDave Hansen 26*d17d8f9dSDave Hansen TP_fast_assign( 27*d17d8f9dSDave Hansen __entry->reason = reason; 28*d17d8f9dSDave Hansen __entry->pages = pages; 29*d17d8f9dSDave Hansen ), 30*d17d8f9dSDave Hansen 31*d17d8f9dSDave Hansen TP_printk("pages:%ld reason:%s (%d)", 32*d17d8f9dSDave Hansen __entry->pages, 33*d17d8f9dSDave Hansen __print_symbolic(__entry->reason, TLB_FLUSH_REASON), 34*d17d8f9dSDave Hansen __entry->reason) 35*d17d8f9dSDave Hansen ); 36*d17d8f9dSDave Hansen 37*d17d8f9dSDave Hansen #endif /* _TRACE_TLB_H */ 38*d17d8f9dSDave Hansen 39*d17d8f9dSDave Hansen /* This part must be outside protection */ 40*d17d8f9dSDave Hansen #include <trace/define_trace.h> 41