/* SPDX-License-Identifier: GPL-2.0 */ /* * amd-pstate-trace.h - AMD Processor P-state Frequency Driver Tracer * * Copyright (C) 2021 Advanced Micro Devices, Inc. All Rights Reserved. * * Author: Huang Rui */ #if !defined(_AMD_PSTATE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) #define _AMD_PSTATE_TRACE_H #include #include #include #undef TRACE_SYSTEM #define TRACE_SYSTEM amd_cpu #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_FILE amd-pstate-trace #define TPS(x) tracepoint_string(x) TRACE_EVENT(amd_pstate_perf, TP_PROTO(u8 min_perf, u8 target_perf, u8 capacity, u64 freq, u64 mperf, u64 aperf, u64 tsc, unsigned int cpu_id, bool fast_switch ), TP_ARGS(min_perf, target_perf, capacity, freq, mperf, aperf, tsc, cpu_id, fast_switch ), TP_STRUCT__entry( __field(u8, min_perf) __field(u8, target_perf) __field(u8, capacity) __field(unsigned long long, freq) __field(unsigned long long, mperf) __field(unsigned long long, aperf) __field(unsigned long long, tsc) __field(unsigned int, cpu_id) __field(bool, fast_switch) ), TP_fast_assign( __entry->min_perf = min_perf; __entry->target_perf = target_perf; __entry->capacity = capacity; __entry->freq = freq; __entry->mperf = mperf; __entry->aperf = aperf; __entry->tsc = tsc; __entry->cpu_id = cpu_id; __entry->fast_switch = fast_switch; ), 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", (u8)__entry->min_perf, (u8)__entry->target_perf, (u8)__entry->capacity, (unsigned long long)__entry->freq, (unsigned long long)__entry->mperf, (unsigned long long)__entry->aperf, (unsigned long long)__entry->tsc, (unsigned int)__entry->cpu_id, (__entry->fast_switch) ? "true" : "false" ) ); TRACE_EVENT(amd_pstate_epp_perf, TP_PROTO(unsigned int cpu_id, u8 highest_perf, u8 epp, u8 min_perf, u8 max_perf, bool boost, bool changed ), TP_ARGS(cpu_id, highest_perf, epp, min_perf, max_perf, boost, changed), TP_STRUCT__entry( __field(unsigned int, cpu_id) __field(u8, highest_perf) __field(u8, epp) __field(u8, min_perf) __field(u8, max_perf) __field(bool, boost) __field(bool, changed) ), TP_fast_assign( __entry->cpu_id = cpu_id; __entry->highest_perf = highest_perf; __entry->epp = epp; __entry->min_perf = min_perf; __entry->max_perf = max_perf; __entry->boost = boost; __entry->changed = changed; ), TP_printk("cpu%u: [%hhu<->%hhu]/%hhu, epp=%hhu, boost=%u, changed=%u", (unsigned int)__entry->cpu_id, (u8)__entry->min_perf, (u8)__entry->max_perf, (u8)__entry->highest_perf, (u8)__entry->epp, (bool)__entry->boost, (bool)__entry->changed ) ); #endif /* _AMD_PSTATE_TRACE_H */ /* This part must be outside protection */ #undef TRACE_INCLUDE_PATH #define TRACE_INCLUDE_PATH . #include