GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / cpufreq / amd-pstate-trace.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * amd-pstate-trace.h - AMD Processor P-state Frequency Driver Tracer
4  *
5  * Copyright (C) 2021 Advanced Micro Devices, Inc. All Rights Reserved.
6  *
7  * Author: Huang Rui <ray.huang@amd.com>
8  */
9
10 #if !defined(_AMD_PSTATE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
11 #define _AMD_PSTATE_TRACE_H
12
13 #include <linux/cpufreq.h>
14 #include <linux/tracepoint.h>
15 #include <linux/trace_events.h>
16
17 #undef TRACE_SYSTEM
18 #define TRACE_SYSTEM amd_cpu
19
20 #undef TRACE_INCLUDE_FILE
21 #define TRACE_INCLUDE_FILE amd-pstate-trace
22
23 #define TPS(x)  tracepoint_string(x)
24
25 TRACE_EVENT(amd_pstate_perf,
26
27         TP_PROTO(unsigned long min_perf,
28                  unsigned long target_perf,
29                  unsigned long capacity,
30                  u64 freq,
31                  u64 mperf,
32                  u64 aperf,
33                  u64 tsc,
34                  unsigned int cpu_id,
35                  bool changed,
36                  bool fast_switch
37                  ),
38
39         TP_ARGS(min_perf,
40                 target_perf,
41                 capacity,
42                 freq,
43                 mperf,
44                 aperf,
45                 tsc,
46                 cpu_id,
47                 changed,
48                 fast_switch
49                 ),
50
51         TP_STRUCT__entry(
52                 __field(unsigned long, min_perf)
53                 __field(unsigned long, target_perf)
54                 __field(unsigned long, capacity)
55                 __field(unsigned long long, freq)
56                 __field(unsigned long long, mperf)
57                 __field(unsigned long long, aperf)
58                 __field(unsigned long long, tsc)
59                 __field(unsigned int, cpu_id)
60                 __field(bool, changed)
61                 __field(bool, fast_switch)
62                 ),
63
64         TP_fast_assign(
65                 __entry->min_perf = min_perf;
66                 __entry->target_perf = target_perf;
67                 __entry->capacity = capacity;
68                 __entry->freq = freq;
69                 __entry->mperf = mperf;
70                 __entry->aperf = aperf;
71                 __entry->tsc = tsc;
72                 __entry->cpu_id = cpu_id;
73                 __entry->changed = changed;
74                 __entry->fast_switch = fast_switch;
75                 ),
76
77         TP_printk("amd_min_perf=%lu amd_des_perf=%lu amd_max_perf=%lu freq=%llu mperf=%llu aperf=%llu tsc=%llu cpu_id=%u changed=%s fast_switch=%s",
78                   (unsigned long)__entry->min_perf,
79                   (unsigned long)__entry->target_perf,
80                   (unsigned long)__entry->capacity,
81                   (unsigned long long)__entry->freq,
82                   (unsigned long long)__entry->mperf,
83                   (unsigned long long)__entry->aperf,
84                   (unsigned long long)__entry->tsc,
85                   (unsigned int)__entry->cpu_id,
86                   (__entry->changed) ? "true" : "false",
87                   (__entry->fast_switch) ? "true" : "false"
88                  )
89 );
90
91 #endif /* _AMD_PSTATE_TRACE_H */
92
93 /* This part must be outside protection */
94 #undef TRACE_INCLUDE_PATH
95 #define TRACE_INCLUDE_PATH .
96
97 #include <trace/define_trace.h>