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(u8 min_perf, 28 u8 target_perf, 29 u8 capacity, 30 u64 freq, 31 u64 mperf, 32 u64 aperf, 33 u64 tsc, 34 unsigned int cpu_id, 35 bool fast_switch 36 ), 37 38 TP_ARGS(min_perf, 39 target_perf, 40 capacity, 41 freq, 42 mperf, 43 aperf, 44 tsc, 45 cpu_id, 46 fast_switch 47 ), 48 49 TP_STRUCT__entry( 50 __field(u8, min_perf) 51 __field(u8, target_perf) 52 __field(u8, capacity) 53 __field(unsigned long long, freq) 54 __field(unsigned long long, mperf) 55 __field(unsigned long long, aperf) 56 __field(unsigned long long, tsc) 57 __field(unsigned int, cpu_id) 58 __field(bool, fast_switch) 59 ), 60 61 TP_fast_assign( 62 __entry->min_perf = min_perf; 63 __entry->target_perf = target_perf; 64 __entry->capacity = capacity; 65 __entry->freq = freq; 66 __entry->mperf = mperf; 67 __entry->aperf = aperf; 68 __entry->tsc = tsc; 69 __entry->cpu_id = cpu_id; 70 __entry->fast_switch = fast_switch; 71 ), 72 73 TP_printk("amd_min_perf=%hhu amd_des_perf=%hhu amd_max_perf=%hhu freq=%llu mperf=%llu aperf=%llu tsc=%llu cpu_id=%u fast_switch=%s", 74 (u8)__entry->min_perf, 75 (u8)__entry->target_perf, 76 (u8)__entry->capacity, 77 (unsigned long long)__entry->freq, 78 (unsigned long long)__entry->mperf, 79 (unsigned long long)__entry->aperf, 80 (unsigned long long)__entry->tsc, 81 (unsigned int)__entry->cpu_id, 82 (__entry->fast_switch) ? "true" : "false" 83 ) 84 ); 85 86 TRACE_EVENT(amd_pstate_epp_perf, 87 88 TP_PROTO(unsigned int cpu_id, 89 u8 highest_perf, 90 u8 epp, 91 u8 min_perf, 92 u8 max_perf, 93 bool boost, 94 bool changed 95 ), 96 97 TP_ARGS(cpu_id, 98 highest_perf, 99 epp, 100 min_perf, 101 max_perf, 102 boost, 103 changed), 104 105 TP_STRUCT__entry( 106 __field(unsigned int, cpu_id) 107 __field(u8, highest_perf) 108 __field(u8, epp) 109 __field(u8, min_perf) 110 __field(u8, max_perf) 111 __field(bool, boost) 112 __field(bool, changed) 113 ), 114 115 TP_fast_assign( 116 __entry->cpu_id = cpu_id; 117 __entry->highest_perf = highest_perf; 118 __entry->epp = epp; 119 __entry->min_perf = min_perf; 120 __entry->max_perf = max_perf; 121 __entry->boost = boost; 122 __entry->changed = changed; 123 ), 124 125 TP_printk("cpu%u: [%hhu<->%hhu]/%hhu, epp=%hhu, boost=%u, changed=%u", 126 (unsigned int)__entry->cpu_id, 127 (u8)__entry->min_perf, 128 (u8)__entry->max_perf, 129 (u8)__entry->highest_perf, 130 (u8)__entry->epp, 131 (bool)__entry->boost, 132 (bool)__entry->changed 133 ) 134 ); 135 136 #endif /* _AMD_PSTATE_TRACE_H */ 137 138 /* This part must be outside protection */ 139 #undef TRACE_INCLUDE_PATH 140 #define TRACE_INCLUDE_PATH . 141 142 #include <trace/define_trace.h> 143