1 /* SPDX-License-Identifier: GPL-2.0 */
3 #define TRACE_SYSTEM thermal
5 #if !defined(_TRACE_THERMAL_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_THERMAL_H
8 #include <linux/devfreq.h>
9 #include <linux/thermal.h>
10 #include <linux/tracepoint.h>
12 TRACE_DEFINE_ENUM(THERMAL_TRIP_CRITICAL
);
13 TRACE_DEFINE_ENUM(THERMAL_TRIP_HOT
);
14 TRACE_DEFINE_ENUM(THERMAL_TRIP_PASSIVE
);
15 TRACE_DEFINE_ENUM(THERMAL_TRIP_ACTIVE
);
17 #define show_tzt_type(type) \
18 __print_symbolic(type, \
19 { THERMAL_TRIP_CRITICAL, "CRITICAL"}, \
20 { THERMAL_TRIP_HOT, "HOT"}, \
21 { THERMAL_TRIP_PASSIVE, "PASSIVE"}, \
22 { THERMAL_TRIP_ACTIVE, "ACTIVE"})
24 TRACE_EVENT(thermal_temperature
,
26 TP_PROTO(struct thermal_zone_device
*tz
),
31 __string(thermal_zone
, tz
->type
)
33 __field(int, temp_prev
)
38 __assign_str(thermal_zone
, tz
->type
);
40 __entry
->temp_prev
= tz
->last_temperature
;
41 __entry
->temp
= tz
->temperature
;
44 TP_printk("thermal_zone=%s id=%d temp_prev=%d temp=%d",
45 __get_str(thermal_zone
), __entry
->id
, __entry
->temp_prev
,
49 TRACE_EVENT(cdev_update
,
51 TP_PROTO(struct thermal_cooling_device
*cdev
, unsigned long target
),
53 TP_ARGS(cdev
, target
),
56 __string(type
, cdev
->type
)
57 __field(unsigned long, target
)
61 __assign_str(type
, cdev
->type
);
62 __entry
->target
= target
;
65 TP_printk("type=%s target=%lu", __get_str(type
), __entry
->target
)
68 TRACE_EVENT(thermal_zone_trip
,
70 TP_PROTO(struct thermal_zone_device
*tz
, int trip
,
71 enum thermal_trip_type trip_type
),
73 TP_ARGS(tz
, trip
, trip_type
),
76 __string(thermal_zone
, tz
->type
)
79 __field(enum thermal_trip_type
, trip_type
)
83 __assign_str(thermal_zone
, tz
->type
);
86 __entry
->trip_type
= trip_type
;
89 TP_printk("thermal_zone=%s id=%d trip=%d trip_type=%s",
90 __get_str(thermal_zone
), __entry
->id
, __entry
->trip
,
91 show_tzt_type(__entry
->trip_type
))
94 TRACE_EVENT(thermal_power_cpu_get_power
,
95 TP_PROTO(const struct cpumask
*cpus
, unsigned long freq
, u32
*load
,
96 size_t load_len
, u32 dynamic_power
, u32 static_power
),
98 TP_ARGS(cpus
, freq
, load
, load_len
, dynamic_power
, static_power
),
101 __bitmask(cpumask
, num_possible_cpus())
102 __field(unsigned long, freq
)
103 __dynamic_array(u32
, load
, load_len
)
104 __field(size_t, load_len
)
105 __field(u32
, dynamic_power
)
106 __field(u32
, static_power
)
110 __assign_bitmask(cpumask
, cpumask_bits(cpus
),
111 num_possible_cpus());
112 __entry
->freq
= freq
;
113 memcpy(__get_dynamic_array(load
), load
,
114 load_len
* sizeof(*load
));
115 __entry
->load_len
= load_len
;
116 __entry
->dynamic_power
= dynamic_power
;
117 __entry
->static_power
= static_power
;
120 TP_printk("cpus=%s freq=%lu load={%s} dynamic_power=%d static_power=%d",
121 __get_bitmask(cpumask
), __entry
->freq
,
122 __print_array(__get_dynamic_array(load
), __entry
->load_len
, 4),
123 __entry
->dynamic_power
, __entry
->static_power
)
126 TRACE_EVENT(thermal_power_cpu_limit
,
127 TP_PROTO(const struct cpumask
*cpus
, unsigned int freq
,
128 unsigned long cdev_state
, u32 power
),
130 TP_ARGS(cpus
, freq
, cdev_state
, power
),
133 __bitmask(cpumask
, num_possible_cpus())
134 __field(unsigned int, freq
)
135 __field(unsigned long, cdev_state
)
140 __assign_bitmask(cpumask
, cpumask_bits(cpus
),
141 num_possible_cpus());
142 __entry
->freq
= freq
;
143 __entry
->cdev_state
= cdev_state
;
144 __entry
->power
= power
;
147 TP_printk("cpus=%s freq=%u cdev_state=%lu power=%u",
148 __get_bitmask(cpumask
), __entry
->freq
, __entry
->cdev_state
,
152 TRACE_EVENT(thermal_power_devfreq_get_power
,
153 TP_PROTO(struct thermal_cooling_device
*cdev
,
154 struct devfreq_dev_status
*status
, unsigned long freq
,
155 u32 dynamic_power
, u32 static_power
, u32 power
),
157 TP_ARGS(cdev
, status
, freq
, dynamic_power
, static_power
, power
),
160 __string(type
, cdev
->type
)
161 __field(unsigned long, freq
)
163 __field(u32
, dynamic_power
)
164 __field(u32
, static_power
)
169 __assign_str(type
, cdev
->type
);
170 __entry
->freq
= freq
;
171 __entry
->load
= (100 * status
->busy_time
) / status
->total_time
;
172 __entry
->dynamic_power
= dynamic_power
;
173 __entry
->static_power
= static_power
;
174 __entry
->power
= power
;
177 TP_printk("type=%s freq=%lu load=%u dynamic_power=%u static_power=%u power=%u",
178 __get_str(type
), __entry
->freq
,
179 __entry
->load
, __entry
->dynamic_power
, __entry
->static_power
,
183 TRACE_EVENT(thermal_power_devfreq_limit
,
184 TP_PROTO(struct thermal_cooling_device
*cdev
, unsigned long freq
,
185 unsigned long cdev_state
, u32 power
),
187 TP_ARGS(cdev
, freq
, cdev_state
, power
),
190 __string(type
, cdev
->type
)
191 __field(unsigned int, freq
)
192 __field(unsigned long, cdev_state
)
197 __assign_str(type
, cdev
->type
);
198 __entry
->freq
= freq
;
199 __entry
->cdev_state
= cdev_state
;
200 __entry
->power
= power
;
203 TP_printk("type=%s freq=%u cdev_state=%lu power=%u",
204 __get_str(type
), __entry
->freq
, __entry
->cdev_state
,
207 #endif /* _TRACE_THERMAL_H */
209 /* This part must be outside protection */
210 #include <trace/define_trace.h>