mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
633f6f58af
Some trace events have conditions that check if the current CPU is online or not before recording the tracepoint. That's because certain trace events are in locations that can be called as the CPU is going offline and when RCU no longer monitors it (like kfree and friends). The check was added because trace events require RCU to be active. This is a trace event infrastructure issue and not something that individual trace events should worry about. The tracepoint.h code now has added a check to see if the current CPU is considered online, and it only does the tracepoint if it is. There's no more need for individual trace events to also include this check. It is now redundant. Cc: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM tlb
|
|
|
|
#if !defined(_TRACE_TLB_H) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _TRACE_TLB_H
|
|
|
|
#include <linux/mm_types.h>
|
|
#include <linux/tracepoint.h>
|
|
|
|
#define TLB_FLUSH_REASON \
|
|
EM( TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" ) \
|
|
EM( TLB_REMOTE_SHOOTDOWN, "remote shootdown" ) \
|
|
EM( TLB_LOCAL_SHOOTDOWN, "local shootdown" ) \
|
|
EM( TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" ) \
|
|
EMe( TLB_REMOTE_SEND_IPI, "remote ipi send" )
|
|
|
|
/*
|
|
* First define the enums in TLB_FLUSH_REASON to be exported to userspace
|
|
* via TRACE_DEFINE_ENUM().
|
|
*/
|
|
#undef EM
|
|
#undef EMe
|
|
#define EM(a,b) TRACE_DEFINE_ENUM(a);
|
|
#define EMe(a,b) TRACE_DEFINE_ENUM(a);
|
|
|
|
TLB_FLUSH_REASON
|
|
|
|
/*
|
|
* Now redefine the EM() and EMe() macros to map the enums to the strings
|
|
* that will be printed in the output.
|
|
*/
|
|
#undef EM
|
|
#undef EMe
|
|
#define EM(a,b) { a, b },
|
|
#define EMe(a,b) { a, b }
|
|
|
|
TRACE_EVENT(tlb_flush,
|
|
|
|
TP_PROTO(int reason, unsigned long pages),
|
|
TP_ARGS(reason, pages),
|
|
|
|
TP_STRUCT__entry(
|
|
__field( int, reason)
|
|
__field(unsigned long, pages)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->reason = reason;
|
|
__entry->pages = pages;
|
|
),
|
|
|
|
TP_printk("pages:%ld reason:%s (%d)",
|
|
__entry->pages,
|
|
__print_symbolic(__entry->reason, TLB_FLUSH_REASON),
|
|
__entry->reason)
|
|
);
|
|
|
|
#endif /* _TRACE_TLB_H */
|
|
|
|
/* This part must be outside protection */
|
|
#include <trace/define_trace.h>
|