Files
Stephen Dickey 614afa949c ANDROID: cpuhp/pause: add trace points for pause and resume
Add a tracepoint for pause and resume which measures the
duration of time to perform the entire operation, the
cpus acted upon with this event, and the current state
of the active cpu mask.  This should be sufficient
for testing pause performance.

Bug: 175959069
Change-Id: I9fc269c7d09ac78ec31612d3c552044b72b0e6e3
Signed-off-by: Stephen Dickey <dickey@codeaurora.org>
2020-12-23 22:53:26 +00:00

118 lines
2.5 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM cpuhp
#if !defined(_TRACE_CPUHP_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_CPUHP_H
#include <linux/tracepoint.h>
TRACE_EVENT(cpuhp_enter,
TP_PROTO(unsigned int cpu,
int target,
int idx,
int (*fun)(unsigned int)),
TP_ARGS(cpu, target, idx, fun),
TP_STRUCT__entry(
__field( unsigned int, cpu )
__field( int, target )
__field( int, idx )
__field( void *, fun )
),
TP_fast_assign(
__entry->cpu = cpu;
__entry->target = target;
__entry->idx = idx;
__entry->fun = fun;
),
TP_printk("cpu: %04u target: %3d step: %3d (%ps)",
__entry->cpu, __entry->target, __entry->idx, __entry->fun)
);
TRACE_EVENT(cpuhp_multi_enter,
TP_PROTO(unsigned int cpu,
int target,
int idx,
int (*fun)(unsigned int, struct hlist_node *),
struct hlist_node *node),
TP_ARGS(cpu, target, idx, fun, node),
TP_STRUCT__entry(
__field( unsigned int, cpu )
__field( int, target )
__field( int, idx )
__field( void *, fun )
),
TP_fast_assign(
__entry->cpu = cpu;
__entry->target = target;
__entry->idx = idx;
__entry->fun = fun;
),
TP_printk("cpu: %04u target: %3d step: %3d (%ps)",
__entry->cpu, __entry->target, __entry->idx, __entry->fun)
);
TRACE_EVENT(cpuhp_exit,
TP_PROTO(unsigned int cpu,
int state,
int idx,
int ret),
TP_ARGS(cpu, state, idx, ret),
TP_STRUCT__entry(
__field( unsigned int, cpu )
__field( int, state )
__field( int, idx )
__field( int, ret )
),
TP_fast_assign(
__entry->cpu = cpu;
__entry->state = state;
__entry->idx = idx;
__entry->ret = ret;
),
TP_printk(" cpu: %04u state: %3d step: %3d ret: %d",
__entry->cpu, __entry->state, __entry->idx, __entry->ret)
);
TRACE_EVENT(cpuhp_pause,
TP_PROTO(struct cpumask *cpus, u64 start_time, unsigned char pause),
TP_ARGS(cpus, start_time, pause),
TP_STRUCT__entry(
__field( unsigned int, cpus )
__field( unsigned int, active_cpus )
__field( unsigned int, time )
__field( unsigned char, pause )
),
TP_fast_assign(
__entry->cpus = cpumask_bits(cpus)[0];
__entry->active_cpus = cpumask_bits(cpu_active_mask)[0];
__entry->time = div64_u64(sched_clock() - start_time, 1000);
__entry->pause = pause;
),
TP_printk("req_cpus=0x%x act_cpus=0x%x time=%u us paused=%d",
__entry->cpus, __entry->active_cpus, __entry->time, __entry->pause)
);
#endif
/* This part must be outside protection */
#include <trace/define_trace.h>