Commit 633f6f58 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt

tracing: Remove duplicate checks for online CPUs

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: default avatarSteven Rostedt <rostedt@goodmis.org>
parent d39cdd20
...@@ -140,42 +140,19 @@ DEFINE_EVENT(kmem_free, kfree, ...@@ -140,42 +140,19 @@ DEFINE_EVENT(kmem_free, kfree,
TP_ARGS(call_site, ptr) TP_ARGS(call_site, ptr)
); );
DEFINE_EVENT_CONDITION(kmem_free, kmem_cache_free, DEFINE_EVENT(kmem_free, kmem_cache_free,
TP_PROTO(unsigned long call_site, const void *ptr), TP_PROTO(unsigned long call_site, const void *ptr),
TP_ARGS(call_site, ptr), TP_ARGS(call_site, ptr)
/*
* This trace can be potentially called from an offlined cpu.
* Since trace points use RCU and RCU should not be used from
* offline cpus, filter such calls out.
* While this trace can be called from a preemptable section,
* it has no impact on the condition since tasks can migrate
* only from online cpus to other online cpus. Thus its safe
* to use raw_smp_processor_id.
*/
TP_CONDITION(cpu_online(raw_smp_processor_id()))
); );
TRACE_EVENT_CONDITION(mm_page_free, TRACE_EVENT(mm_page_free,
TP_PROTO(struct page *page, unsigned int order), TP_PROTO(struct page *page, unsigned int order),
TP_ARGS(page, order), TP_ARGS(page, order),
/*
* This trace can be potentially called from an offlined cpu.
* Since trace points use RCU and RCU should not be used from
* offline cpus, filter such calls out.
* While this trace can be called from a preemptable section,
* it has no impact on the condition since tasks can migrate
* only from online cpus to other online cpus. Thus its safe
* to use raw_smp_processor_id.
*/
TP_CONDITION(cpu_online(raw_smp_processor_id())),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( unsigned long, pfn ) __field( unsigned long, pfn )
__field( unsigned int, order ) __field( unsigned int, order )
...@@ -276,23 +253,12 @@ DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked, ...@@ -276,23 +253,12 @@ DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked,
TP_ARGS(page, order, migratetype) TP_ARGS(page, order, migratetype)
); );
TRACE_EVENT_CONDITION(mm_page_pcpu_drain, TRACE_EVENT(mm_page_pcpu_drain,
TP_PROTO(struct page *page, unsigned int order, int migratetype), TP_PROTO(struct page *page, unsigned int order, int migratetype),
TP_ARGS(page, order, migratetype), TP_ARGS(page, order, migratetype),
/*
* This trace can be potentially called from an offlined cpu.
* Since trace points use RCU and RCU should not be used from
* offline cpus, filter such calls out.
* While this trace can be called from a preemptable section,
* it has no impact on the condition since tasks can migrate
* only from online cpus to other online cpus. Thus its safe
* to use raw_smp_processor_id.
*/
TP_CONDITION(cpu_online(raw_smp_processor_id())),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( unsigned long, pfn ) __field( unsigned long, pfn )
__field( unsigned int, order ) __field( unsigned int, order )
......
...@@ -34,13 +34,11 @@ TLB_FLUSH_REASON ...@@ -34,13 +34,11 @@ TLB_FLUSH_REASON
#define EM(a,b) { a, b }, #define EM(a,b) { a, b },
#define EMe(a,b) { a, b } #define EMe(a,b) { a, b }
TRACE_EVENT_CONDITION(tlb_flush, TRACE_EVENT(tlb_flush,
TP_PROTO(int reason, unsigned long pages), TP_PROTO(int reason, unsigned long pages),
TP_ARGS(reason, pages), TP_ARGS(reason, pages),
TP_CONDITION(cpu_online(smp_processor_id())),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( int, reason) __field( int, reason)
__field(unsigned long, pages) __field(unsigned long, pages)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment